I’ve added some basic support for webmentions to my Jekyll-powered site using webmention.io and this Jekyll plugin. If any of my posts are mentioned elsewhere and my site receives a webmention, it’s displayed below the post content.
Since Jekyll is a static site generator, the plugin can only check for new webmentions when the site is rebuilt. Netlify uses continuous deployment to keep my site up to date, so any time I commit a change and push it to Github, the site is automatically rebuilt and deployed. To supplement this, I also use IFTTT Webhooks to trigger a build every 24 hours, allowing my website to check for new webmentions on a daily basis.
Although the plugin is easy to install and use, I ran into a hiccup when trying to work on my site locally. I’d normally use the following command to serve the site as I work on it, allowing me to see changes reflected:
bundle exec jekyll serve --limit_post 50
This uses the
development Jekyll environment by default, which overwrites
http://localhost:4000 (instead of using
https://www.jordanmerrick.com). The webmentions plugin then attempts to retrieve webmentions for posts under that URL, not my site’s actual URL. As a result, no webmentions were being retrieved, so I couldn’t test locally.
As a workaround, I discovered that I needed to set Jekyll’s environment to
production. This keeps
site.url intact, allowing for webmentions to be properly retrieved:
JEKYLL_ENV=production bundle exec jekyll serve --limit_post 50
The plugin also supports sending webmentions, though I need to do a little more work to set that up. Outgoing webmentions is a separate command and not part of the build process. I do use a Digital Ocean instance for development, so I’m considering some sort of cronjob for handling outgoing webmentions.