diff --git a/.github/workflows/authors.yml b/.github/workflows/authors.yml
new file mode 100644
index 00000000000000..0d92eee523dbfe
--- /dev/null
+++ b/.github/workflows/authors.yml
@@ -0,0 +1,21 @@
+name: "authors update"
+on:
+  workflow_dispatch:
+
+jobs:
+  authors_update:
+    runs-on: ubuntu-latest
+    steps:
+      - uses: actions/checkout@v2
+        with:
+          fetch-depth: '0' # this is required to actually get all the authors
+      - run: "tools/update-authors.js" # run the AUTHORS tool
+      - uses: gr2m/create-or-update-pull-request-action@v1 # create a PR or update the Action's existing PR
+        env:
+          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+        with:
+          title: "meta: update AUTHORS"
+          body: "If this PR exists, there's presumably new additions to the AUTHORS file. This is an automatically generated PR by the `authors.yml` GitHub Action, which runs `tools/update-authors.js` and submits a new PR or updates an existing PR.\n\nPlease note that there might be duplicate entries. If there are, please remove them and add the duplicate emails to .mailmap directly to this PR."
+          branch: "actions/authors-update" # custom branch *just* for this Action.
+          commit-message: "meta: update AUTHORS"
+          labels: meta