跳转到内容
ACCB

为 Astro Cactus 添加网络提及功能

/ 7 分钟阅读

更新于:
Table of Contents

快速概览

  1. 根据 IndieLogin 的说明,在您的主页添加指向 GitHub 个人资料和/或电子邮件地址的链接。您_可以_通过 src/components/SocialList.astro 来实现,只需确保在相关链接中包含 isWebmention 属性。
  2. 通过输入您网站的地址在 Webmention.io 创建账户。
  3. 将链接feed和API密钥添加到 .env 文件中,分别使用 WEBMENTION_URLWEBMENTION_API_KEY 作为键名,您可以重命名此模板中的 .env.example 文件。您也可以在这里添加可选的 WEBMENTION_PINGBACK 链接。
  4. 前往 brid.gy 并登录您希望连接的每个社交账户。
  5. 发布并构建您的网站,记得添加API密钥,现在它应该准备好接收网络提及了!

什么是网络提及

简单来说,这是一种通过社交媒体在您网站的各个页面上向用户展示点赞、评论、转发等互动的方式。

此主题显示每篇博客文章收到的点赞、提及和回复数量。还有一些我没有包含的其他网络提及类型,比如转发,目前被过滤掉了,但应该不难添加。

将其添加到您自己网站的步骤

您需要创建几个账户来启动和运行。但是,首先需要确保您的社交链接是正确的。

添加指向您个人资料的链接

首先,您需要在您的网站上添加链接以证明所有权。如果您查看 IndieLogin 的说明,它为您提供了2个选项:电子邮件地址和/或GitHub账户。我创建了组件 src/components/SocialList.astro,您可以在其中将详细信息添加到 socialLinks 数组中,只需在相关链接中包含 isWebmention 属性,这将添加 rel="me authn" 属性。无论您采用哪种方式,都要确保根据IndieLogin的说明在标记中包含链接

<a href="https://github.com/your-username" rel="me">GitHub</a>

注册 Webmention.io

接下来,前往 Webmention.io 并通过使用您的域名(例如 https://astro-cactus.chriswilliams.dev/)登录来创建账户。请注意,.app 顶级域名无法正常工作。登录后,它将为您的域名提供一些接受网络提及的链接。记下这些链接并创建一个 .env 文件(此模板包含一个示例 .env.example,您可以重命名)。使用 WEBMENTION_URLWEBMENTION_API_KEY 分别添加链接feed和API密钥,如果需要,还可以添加可选的 WEBMENTION_PINGBACK 网址。请尽量不要将其发布到代码库中!

注册 Brid.gy

现在您需要使用 brid.gy。顾名思义,它将您的网站连接到您的社交媒体账户。对于您想要设置的每个账户(例如Mastodon),点击相关按钮并连接您希望brid.gy搜索的每个账户。再次注意,brid.gy目前在.app顶级域名方面存在问题。

测试是否正常工作

设置完所有内容后,现在是时候构建和发布您的网站了。记住要在您的主机上设置环境变量 WEBMENTION_API_KEYWEBMENTION_URL

您可以通过 webmentions.rocks 发送测试网络提及来检查一切是否正常工作。使用您的域名登录,输入授权码,然后输入您要测试的页面网址。例如,要测试此页面,我会添加 https://astro-cactus.chriswilliams.dev/posts/webmentions/。要在您的网站上查看它,重新构建或本地(重新)启动开发模式,您应该在页面底部看到结果。

您也可以通过他们的 API 在浏览器中查看任何测试提及。

需要添加的功能,需要考虑的事项

  • 目前,新的网络提及仅在重新构建或重启开发模式时获取,这显然意味着如果您不经常更新网站,您就不会获得很多新内容。添加一个定时任务来运行 src/utils/webmentions.ts 中的 getAndCacheWebmentions() 函数并用新内容填充您的博客应该是相当简单的。这可能是我接下来要添加的功能,作为GitHub action。

  • 我看到一些提及有重复。不幸的是,它们很难过滤掉,因为它们有不同的ID。

  • 我不太喜欢用于链接到评论/回复的小外部链接图标。由于它的大小,在移动设备上效果不是特别好,将来可能会更改它。

致谢

非常感谢 Kieran McGuire 与我分享这个,以及提供的有用文章。我以前从未听说过网络提及,现在通过这次更新,希望其他人也能够使用它们。此外,来自 kldryanmulligan.dev 的文章和示例在设置和集成方面提供了很大帮助,如果您正在寻找更多信息,这两个都是很好的资源!