初始提交:hexo-mastodon-syndicate
一个 Hexo 项目用的 Mastodon 联合发布脚本,实现 POSSE(Publish on your Own Site, Syndicate Elsewhere)工作流。
syndicate: true
syndicate: true 替换为 syndication: <Mastodon 帖子 URL>
npm install --save-dev hexo-mastodon-syndicate
将 syndicate.js 复制到你的 Hexo 项目中即可使用。
在 Hexo 的 _config.yml 中添加以下配置段:
diary_sources:
mastodon:
server: https://your.mastodon.instance
access_token: your_access_token_here
脚本会自动读取 _config.yml 中的 url 字段作为博客地址。
设置以下环境变量即可,无需修改 _config.yml:
| 环境变量 | 说明 | 必填 |
|---|---|---|
MASTODON_SERVER | Mastodon 实例地址 | 是 |
MASTODON_ACCESS_TOKEN | Mastodon 访问令牌 | 是 |
SYNDICATE_SITE_URL | 博客站点 URL | 是 |
环境变量也可以和 _config.yml 混合使用,环境变量的优先级更高。
前往你的 Mastodon 实例的 设置 → 开发 → 新建应用,创建一个具有 write:statuses 权限的访问令牌。
如果你使用 Org-mode 写作,脚本可以同时更新对应的 .org 源文件,在其中添加 #+SYNDICATION: 属性。
设置 SYNDICATE_ORG_DIR 环境变量指向你的 Org 文件目录:
export SYNDICATE_ORG_DIR=~/Documents/Org/blog/posts
未设置此变量时,Org 文件同步功能自动跳过。
默认扫描 source/_posts 目录。如需更改:
export SYNDICATE_POSTS_DIR=source/_articles
在 Hexo 项目根目录运行:
# 通过 npx
npx hexo-mastodon-syndicate
# 或直接运行
node node_modules/hexo-mastodon-syndicate/syndicate.js
# 如果是直接复制的脚本
node syndicate.js
脚本只负责联合发布和更新文件,不会自动提交或推送。
如果你的项目通过 git push 自动触发部署(如 VPS 上的 Git hook、GitHub Pages、Netlify 等),可以使用 hexo-mastodon-publish 一键完成整个流程:
npx hexo-mastodon-publish
它的完整流程:
git commit 修改后的文件
git push 到当前分支的上游远程
---
title: 我的新文章
date: 2026-01-01 12:00:00
syndicate: true
abbrlink: abc123
---
运行脚本后,syndicate: true 会被替换为:
syndication: https://your.instance/@you/123456789