几个月前,我写了关于indieweb-ify这个网站的文章。我试图遵循优秀的indiewebify.me指南,但我跳过了第二级的第二步,即增加向其他独立网站发送Webmentions的能力。
我决定暂时跳过这一步,因为使用
curl,手动发送Webmention是比较容易的,而且我目前的博客也不是那么频繁!我决定跳过这一步。
总之,最近的一些发现让我弥补了这个遗漏......
webmention.app
这个可爱的小服务由Remy Sharp建立,不要与webmention.io混淆,后者用于接收传入的Webmentions,使其能够轻松地为一个给定页面上的所有链接发送传出的Webmentions。
这是一个与平台无关的服务,它将检查一个给定的URL是否有其他网站的链接,发现它们是否支持webmentions,然后向目标发送一个webmention。
幸运的是,我的博客还有RSS订阅,在这种情况下,文档建议使用IFTTT,在你每次发布文章时自动完成这一工作。
行动流
我最近偶然发现了Actionsflow,它是一个免费的Zapier/IFTTT替代品,供开发人员根据GitHub的动作来自动化工作流程。
我不得不承认,最初我对Actionsflow的文档感到很困惑,我试图将我的Webmention发送工作流程添加到本网站的repo中。然而,一旦我意识到这个想法是基于一个模板创建一个新的 repo,事情就变得有点清楚了。
发送Webmentions的工作流程
我创建了这个 repo,并添加了这个工作流程,以轮询我的RSS feed,并为每个新项目向webmention.app的API发送HTTP POST请求。我对这个工作流程的简单程度感到惊喜。
name: Send webmentions for new blog posts
on:
rss:
url: http://feeds.jamesmead.org/floehopper-blog
config:
logLevel: debug
limit: 1
jobs:
send_webmentions:
name: Send webmentions
runs-on: ubuntu-latest
steps:
- name: 'Send webmentions for RSS item link'
uses: actionsflow/axios@v1
with:
url: https://webmention.app/check/
method: 'POST'
params: '{ "url": "${{on.rss.outputs.link}}", "token": "${{ secrets.WM_TOKEN }}" }'
is_debug: true
我花了点时间才意识到,底层的Actionsflow GitHub动作每5分钟运行一次,并轮询我的RSS提要。它似乎使用了GitHub Action的缓存来 "记住 "它之前看到的项目。由于我并不经常发布博客文章,每5分钟轮询一次似乎有点过分,所以我决定将频率降低到每小时一次。
观察结果
-
我不确定我是否喜欢Actionsflow的设计,它意味着创建一个新的 repo,但如果我有一个以上的工作流,也许这对我更有意义。我想这个 repo 大致上相当于一个 IFTTT 帐户。
-
在过去的一年里,我使用AWS CDK中的
ScheduledFargateTask类为Go Free Range自动化了一些备份工作,以启动一个容器并按cron schedule运行一个脚本。这样做效果非常好,但我很想把这些工作移植到Actionsflow上,这样我们就不必再维护任何东西,只需要维护Dockerfile和相关的shell脚本。 -
webmention.app的实现非常好,有很好的文档;它是一个典型的例子,是对一个严格范围内的问题的优雅解决方案。由于我将会经常使用这个API,我决定请Remy喝一杯,以表示感谢。
-
我也想找到一种方式来感谢建立webmention.io的Aaron Parecki和建立brid.gy的Ryan Barrett、Kyle Mahan等人。然而,我看不到有什么方法可以做到这两点,事实上,后者明确表示"我们不需要捐款,保证"。