Substack Publisher 用于把 Markdown 文章发布到 Substack,可作为草稿或直接发布为 newsletter 文章,核心能力是将 Markdown 转换为 Substack 的 ProseMirror JSON 格式。
使用前需配置环境变量(可写入 .env):SUBSTACK_SID(substack.sid 会话 cookie 值)、SUBSTACK_SUBDOMAIN(子域名,如 adrianpetcu)、SUBSTACK_USER_ID(用户 ID,如 106993810)。
脚本用法:python scripts/publish_to_substack.py <file.md> [options]。必填参数为 Markdown 文件路径;选项包括 --title 覆盖标题(默认取 # 一级标题)、--subtitle 覆盖副标题(默认取 ## Hook 段内容)、--publish 直接发布而非创建草稿、--audience 设定受众 everyone(默认)或 paid、--dry-run 仅输出 ProseMirror JSON 不调用 API。
推荐流程:先运行 --dry-run 预览转换结果,再运行创建草稿,在 Substack 中检查格式后发布,或重新加 --publish 发布。
Markdown 支持标题(H1-H3)、段落、无序与有序列表、带语言的代码块、引用、水平线、图片(仅 HTTP URL)、加粗、斜体、行内代码和链接;独立成行的加粗标签会转为 H3,本地图片路径会被跳过并给出警告。模板中 Status、Hashtags、Notes、Verdict、LinkedIn Assessment 等元数据段会被排除。
限制:依赖 Substack 会话 cookie,会定期过期,遇到 401/403 需刷新 cookie;本地图片无法上传。获取 SUBSTACK_SID:登录 Substack 后打开 DevTools → Application → Cookies,找到 substack.sid 并复制其值。