diff --git a/.travis.yml b/.travis.yml
index 2bd2336..ba5124f 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -13,12 +13,3 @@ script:
- cargo test --features trace
- cargo test --features functions
- cargo test --features "backup functions load_extension trace"
- - cargo doc --no-deps --features "backup functions load_extension trace"
-
-after_success: |
- [ $TRAVIS_BRANCH = master ] &&
- [ $TRAVIS_PULL_REQUEST = false ] &&
- echo '' > target/doc/index.html &&
- sudo pip install ghp-import &&
- ghp-import -n target/doc &&
- git push -fq https://${GH_TOKEN}@github.com/${TRAVIS_REPO_SLUG}.git gh-pages
diff --git a/CONTRIBUTORS.md b/CONTRIBUTORS.md
index 3fbb310..6d0dd29 100644
--- a/CONTRIBUTORS.md
+++ b/CONTRIBUTORS.md
@@ -12,3 +12,4 @@ rusqlite contributors (sorted alphabetically)
* [Ben Striegel](https://github.com/bstrie)
* [Andrew Straw](https://github.com/astraw)
* [Ronald Kinard](https://github.com/Furyhunter)
+* [maciejkula](https://github.com/maciejkula)
diff --git a/publish-ghp-docs.sh b/publish-ghp-docs.sh
new file mode 100755
index 0000000..f9eeb17
--- /dev/null
+++ b/publish-ghp-docs.sh
@@ -0,0 +1,14 @@
+#!/bin/bash
+
+git describe --exact-match --tags $(git log -n1 --pretty='%h') >/dev/null 2>&1
+if [[ $? != 0 ]]; then
+ echo "Should not publish tags from an untagged commit!"
+ exit 1
+fi
+
+cd $(git rev-parse --show-toplevel)
+rm -rf target/doc/
+multirust run nightly cargo doc --no-deps --features "load_extension trace"
+echo '' > target/doc/index.html
+ghp-import target/doc
+git push origin gh-pages:gh-pages