归档和联合 Mastodon 帖子

这是关于将 Mastodon 上的帖子归档和同步到个人网站的详细记录:

  • 背景:作者将 Mastodon 作为微博客使用,虽即时性强但仍会在个人网站同步。社交媒体平台更迭,作者越来越依赖个人网站进行在线讨论,数月前开始按照 IndieWeb 的“Publish Elsewhere, Syndicate Own Site”(PESOS)模式将 Mastodon 帖子归档到网站。
  • 工具编写:作者当时在学习 Go 语言,决定编写自己的工具用于实践。该工具从 Mastodon API 获取账户状态并转化为文件(markdown 格式),通过命令行参数镜像 API 接口,并提供多种过滤和定制选项,详细信息可参考文档。
  • 使用方式:工具用于创建截至特定日期的归档以及定期获取最新状态。归档使用 git 版本控制,存储在content/microblog目录。只归档公开可见的状态,不包括对他人的转发或回复,对自己状态的回复按时间顺序归档在原状态下。
  • 创建归档:要创建归档,需控制批次范围,可通过传递参数或保存分隔状态的 id 来实现。创建归档时可使用--porcelain标志以机器可读输出,结合--persist-last--max-id按逆序滚动状态范围,或通过保存特定 toot 的 id 并使用--persist-first--min-id按顺序获取。
  • 更新归档:创建归档后,可通过手动运行命令或使用 cron 作业定期获取最新帖子。更新归档时使用--persist-first--since-id按顺序获取,Forgejo 动作每小时运行脚本,将新文件添加到仓库并提交更新,触发构建动作更新网站。
  • 与网站集成:文件模板遵循 Hugo 的 front-matter,状态内容转化为 markdown,帖子索引页使用简单模板渲染为列表。归档仅包含内容文件,易于与网站其他功能集成,如在活动页面和标签页显示。通过 Hugo 的 front-matter cascade变量指定行为,服务器/microblog目录只包含 HTML 索引文件和包含图像的状态目录。
  • 相关说明:作者在学习过程中对 Go 语言的模板和值传递有了很多了解,在 Mastodon 中习惯将线程回复设置为未列出以避免打扰他人,--porcelain标志受git status中选项启发。
阅读 12
0 条评论