diff --git a/.github/workflows/pypi-publish.yaml b/.github/workflows/pypi-publish.yaml
new file mode 100644
index 0000000..258239e
--- /dev/null
+++ b/.github/workflows/pypi-publish.yaml
@@ -0,0 +1,28 @@
+name: Publish
+
+on:
+  push:
+    tags:
+      - v*
+
+jobs:
+  build-n-publish:
+    runs-on: ubuntu-latest
+    steps:
+      - uses: actions/checkout@v2
+      - name: Set up Python 3.9
+        uses: actions/setup-python@v2
+        with:
+          python-version: 3.9
+      - name: Install dependencies
+        run: |
+          python -m pip install --upgrade pip
+          pip install setuptools wheel
+      - name: Build package
+        run: |
+          python setup.py sdist bdist_wheel
+      - name: Publish
+        uses: pypa/gh-action-pypi-publish@v1.3.1
+        with:
+          user: __token__
+          password: ${{ secrets.pypi_token }}
diff --git a/codemeta.json b/codemeta.json
index 4cf7156..2995196 100644
--- a/codemeta.json
+++ b/codemeta.json
@@ -6,7 +6,7 @@
   "codeRepository": "https://github.com/caltechlibrary/caltechdata_api",
   "issueTracker": "https://github.com/caltechlibrary/caltechdata_api/issues",
   "license": "https://data.caltech.edu/license",
-  "version": "1.4.5",
+  "version": "1.5.0",
   "author": [
     {
       "@type": "Person",
@@ -21,7 +21,7 @@
     }],
   "developmentStatus": "active",
   "downloadUrl":
-  "https://github.com/caltechlibrary/caltechdata_api/archive/1.4.3.zip",
+  "https://github.com/caltechlibrary/caltechdata_api/archive/1.5.0.zip",
   "keywords": [
     "GitHub",
     "metadata",