这是关于将 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
中选项启发。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。