关于 pp-substack
供 Agent 通过 Printing Press CLI 管理 Substack 出版物的技能,涵盖撰写、排期、互动和分析。它将出版物操作与基于本地 SQLite 的分析、归因及跨出版物工作流结合起来。
主要功能
- 01创建、发布和排期草稿
- 02发布和排期 Notes
- 03分析增长与内容表现
- 04搜索已同步的帖子和评论
- 05比较出版物与订阅者
- 06寻找推荐互换伙伴
适用场景
- 01带时间间隔保护地安排 Notes
- 02衡量 Notes 发布后的订阅增长
- 03发现有效的帖子格式与开场方式
- 04协调跨出版物推广
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ mvanhorn/ printing-press-library --skill pp-substack安装后在 Claude Code 中输入/pp-substack确认已加载。
详细介绍
Substack — Printing Press 命令行工具
前提条件:安装命令行工具
此技能通过 substack-pp-cli 二进制文件运行。**调用此技能中的任何命令前,必须确认已安装该命令行工具。**如果尚未安装,请先安装:
- 通过 Printing Press 安装程序安装。在 macOS/Linux 上,二进制文件默认安装到
$HOME/.local/bin;在 Windows 上,默认安装到%LOCALAPPDATA%\Programs\PrintingPress\bin:npx -y @mvanhorn/printing-press-library install substack --cli-only - 验证:
substack-pp-cli --version - 确保报告的安装目录位于将调用此技能的 Agent/运行时的
$PATH中。
如果 npx 安装失败(没有 Node、处于离线状态等),请改用直接 Go 安装(需要 Go 1.26.6 或更高版本):
go install github.com/mvanhorn/printing-press-library/library/media-and-entertainment/substack/cmd/substack-pp-cli@latest
如果安装后 --version 报告“command not found”,说明运行时无法通过 $PATH 访问二进制文件目录。验证成功之前,请勿执行技能命令。
何时使用此命令行工具
当 Agent 需要端到端管理 Substack 出版物时,可以使用此命令行工具:按计划发布 Notes、起草并发布长篇内容、与细分领域的作者互动、寻找互推伙伴,以及衡量哪些内容确实带来了订阅者。如果你需要原生支持 Agent 的工具链(--json、--select、--dry-run、类型化退出码)、离线优先的分析(所有关联查询都在本地通过 SQLite 运行),或者这些工具未覆盖的作者功能,那么相比 WriteStack/StackSweller,它是更合适的选择。互动写入操作(engage like、engage restack、engage restack-with-comment)默认会打印等效的 curl 命令,只有使用 --send 才会执行;请将打印的 curl 输出视为预检,而非实际操作。
独特功能
这些功能在此 API 的其他工具中均不可用。
可累积的本地状态
-
growth attribution— 将你发布的每条 Note 与随后 24 小时内实际新增的付费和免费订阅者关联起来,从此不必再猜测哪些内容带来了增长。当 Agent 需要决定下周重复采用哪些 Note 格式时,使用此功能,而不是调用通用统计接口。
substack-pp-cli growth attribution --days 30 --json --select rank,note_id,note_excerpt,subs_acquired,paid_subs_acquired -
engage reciprocity— 查看与你互动的每位作者的互惠净值:谁会回报你的转发和评论,谁在悄悄坐享其成。当 Agent 需要决定是否继续投入精力维护互推伙伴关系时使用;它能在关系变淡之前及时发现问题。
substack-pp-cli engage reciprocity --days 30 --agent --select handle,outgoing,incoming,net,drift
感知算法的自动化
-
notes schedule --guard— 如果某条 Note 的发布时间距离你上一条原创 Note 不足 30 分钟,或违反一天内的时段轮换规则,则拒绝发布(或排队)。返回类型化退出码 2,并附带 JSON 诊断信息。防止 Agent 一次性发布整个队列,不慎损害自己的触达率。
substack-pp-cli notes schedule --at 2026-05-10T13:00:00Z --body "hook line\n\nbody" --guard --json -
growth best-time— 按星期几 × 小时对时段进行排名,可依据你选择的任一增长指标(付费订阅、点赞、转发或评论),而非只提供单一平均值。Agent 为明天的 Notes 选择发布时间时,可以指定要优化的目标,而不必凭空猜测。
substack-pp-cli growth best-time --days 90 --for-goal subs --json --select day_of_week,hour,rate,sample_size
模式洞察
-
discover patterns— 以机械化方式提取在某个细分领域中实际表现较好的开场模式(悬念式冒号、三句式公式、破折号转折、提问式开头),并提供转发/评论比率。起草 Notes 的 Agent 可以先了解当前在该细分领域中表现更好的开场形式,再开始生成内容。
substack-pp-cli discover patterns --niche productivity --sort restacks --since 14d --agent --select pattern,sample_count,avg_restacks,avg_comments,top_example -
voice fingerprint— 为任意账号生成可衡量的语气档案,包括句子长度、破折号使用率、冒号式开场率、开场句比例和词汇独特性;使用 --diff 可与另一位作者进行比较。为代笔客户起草 Notes 的 Agent 可以借此确认输出符合客户的语气范围。
substack-pp-cli voice fingerprint --handle maya --diff devon --json --select metric,self,other,delta
网络协作优势
-
recs find-partners— 根据关注图谱和推荐图谱中的相互重叠密度,为 Substack 推荐互换筛选候选出版物并评分。每周执行交叉推广的 Agent 可以据此为候选对象排序,而不是贸然推介。
substack-pp-cli recs find-partners --my-pub on --top 20 --json --select rank,handle,pub,overlap_score,shared_followees -
growth pod— 给定一组用户名,生成成员 × 成员互动矩阵,显示每对成员之间过去 30 天的转发、评论和点赞情况。组织互助小组的 Agent 可以据此查看谁在净贡献、谁在白占便宜,而不必使用电子表格。
substack-pp-cli growth pod --members maya,devon,priya,jordan --days 30 --json
精细控制字段的内容创作
-
drafts create/drafts update— 完整的 Substack 草稿 API 功能:提供 30 多个标志,可设置标题、副标题、正文(Markdown 会自动转换为 ProseMirror)、section-id、类型(newsletter/podcast/video/thread)、受众、署名、SEO 元数据、社交标题、封面图片、评论设置、播客/视频 URL 和可见性开关。这是唯一能让 Agent 在不受网页编辑器掣肘的情况下精细控制字段的创作方式。当 Agent 根据结构化数据撰写完整长文(例如研究摘要、译文或代笔文章),并需要通过一条命令设置付费墙、SEO 和所属栏目时,可使用此功能。
export SUBSTACK_PUBLICATION=mypub substack-pp-cli drafts create --title "Why X matters" \ --body-file ./post.md --audience only_paid \ --seo-title "X explained" --seo-description "How X affects Y" \ --cover-image https://substackcdn.com/.../cover.jpg --json
内容组合与分析(本地列式存储)
这些命令会读取由 portfolio sync 填充的本地 SQLite 存储。工作流如下:
auth login --chrome → export SUBSTACK_PUBLICATION=<your-pub> → portfolio sync → portfolio / posts best / grep / subs churn / …
支持自定义域名的出版物:auth login --chrome 会自动从自定义域名捕获 Creator 会话 Cookie。
-
portfolio sync— 用于填充数据的命令。发现你拥有的所有出版物,并将文章、订阅者和草稿写入本地列式存储。必须先运行此命令,portfolio、posts best、grep、schedule board、subs churn和subs cross-sell才能返回跨出版物数据。export SUBSTACK_PUBLICATION=mypub substack-pp-cli portfolio sync --json -
portfolio— 在一个屏幕上查看你拥有的每个出版物的状态:订阅者人数、付费订阅人数、已发布文章数、待处理草稿数和下一篇定时发布的文章。无需切换标签页,也无需导出 CSV。substack-pp-cli portfolio --json -
posts best— 按浏览量、点赞数、评论数或转发数,对指定时间范围内的文章排序。--cross-pub会汇总你所有出版物的数据。Agent 在决定将哪些文章复制到新出版物,或在每周简报中推荐哪些文章时,可使用此功能。
substack-pp-cli posts best --by restacks --window 30d --cross-pub --json substack-pp-cli posts best --by views --limit 5 --publication mypub-en -
posts twin <slug> --to <pub>— 将已发布的文章复制到你拥有的另一个出版物,作为草稿保存。保留付费墙标记和栏目映射,并将图片重新上传到目标 CDN。substack-pp-cli posts twin my-en-slug --to mypub-de --dry-run --json substack-pp-cli posts twin my-en-slug --to mypub-de -
posts pair <en> <de>/posts pairs [--missing]— 在本地表格中记录 EN↔DE 文章配对。--missing会列出尚未记录对应文章的文章;将该列表传给posts twin,即可生成缺失的译文。substack-pp-cli posts pair my-en-slug my-de-slug substack-pp-cli posts pairs --missing --publication mypub-en --json -
grep <query>— 使用 FTS5 对已同步的文章、笔记和评论进行全文搜索,按 bm25 排序,并返回片段和来源 URL。可选筛选条件包括--scope、--publication和--since。substack-pp-cli grep "yield curve" --json substack-pp-cli grep "rate hike" --scope posts --publication mypub-en --since 2024-01-01 -
schedule board— 以 ASCII 日历形式显示未来 N 天内你所有出版物的定时发布文章。在一个屏幕上查看多个出版物的编辑安排。substack-pp-cli schedule board --days 30 --json -
subs churn— 对比订阅者快照:查看新增订阅者、取消订阅者、从免费升级为付费的订阅者,以及从付费降级为免费的订阅者。请先至少运行一次--snapshot以创建基准快照。substack-pp-cli subs churn --snapshot substack-pp-cli subs churn --since 7d --json --publication mypub-paid -
subs cross-sell— 列出在你至少一个出版物中付费,但在其他出版物中为免费用户或尚未订阅的用户邮箱。本地存储中需要有至少 2 个自有出版物。Substack 界面没有提供此类交叉销售名单。substack-pp-cli subs cross-sell --json --limit 100
命令参考
categories — Substack 全站分类列表,包括文化、技术、美食等。
substack-pp-cli categories list— 列出所有 Substack 分类substack-pp-cli categories list-publications— 列出某个分类下的出版物
comments — 长文评论(与 Notes 不同)
substack-pp-cli comments get— 按 ID 获取单条评论(结构与 Note 相同 — Substack 将两者统一处理)substack-pp-cli comments list— 列出文章中的评论
discover — 发现功能 — 搜索出版物、嵌入元数据
substack-pp-cli discover— 根据查询搜索 Substack 出版物
drafts — 草稿 CRUD、发布和安排发布时间
substack-pp-cli drafts create— 创建新草稿substack-pp-cli drafts delete— 删除草稿substack-pp-cli drafts get— 按 ID 获取草稿substack-pp-cli drafts list— 列出草稿substack-pp-cli drafts prepublish— 验证草稿是否可发布;返回阻止发布的问题substack-pp-cli drafts publish— 立即发布草稿substack-pp-cli drafts schedule— 安排草稿在未来发布(或使用 --post-date null 取消安排)substack-pp-cli drafts update— 更新现有草稿
feed — 出版物的 RSS 源
substack-pp-cli feed— RSS XML 源(返回 XML;使用--raw输出原始内容)
images — 上传图片(使用 data-URI JSON,而非 multipart)
substack-pp-cli images— 上传图片;返回 CDN URL。请求体为 data-URI JSON。
inbox — 已认证读者的信息流(首页信息流)— 为当前用户展示的 Notes 和文章
substack-pp-cli inbox home— 已认证的首页信息流substack-pp-cli inbox reader-posts— 当前用户的文章信息流
reader — 读者端命令 — 订阅、关注和阅读清单
substack-pp-cli reader subscriptions— 列出你作为读者订阅的所有出版物。标志:--filter paid|free、--cursor、--limit。sync会填充存储资源reader(实时读取时也会写入),因此--data-source local和自动网络回退均可正常工作。
notes — Substack Notes — 短篇帖子(Substack 在内部将 Notes 作为评论处理)
substack-pp-cli notes create— 发布新 Note(POST /comment/feed)。请求体为 ProseMirror JSON。substack-pp-cli notes get— 按 ID 获取单条 Notesubstack-pp-cli notes list-by-profile— 列出某个个人资料发布的 Notes(游标分页)substack-pp-cli notes reply— 回复现有 Note(parent_id + ProseMirror 请求体)
grep — 对已同步的文章、Notes 和评论进行全文搜索
substack-pp-cli grep <query>— 使用 FTS5 搜索并按 bm25 排序,返回摘要和源 URL。标志:--scope posts|notes|comments|all、--publication、--since、--limit
portfolio — 多出版物状态仪表板和数据填充
substack-pp-cli portfolio— 在一个屏幕中查看你拥有的每个出版物的状态(订阅数、付费订阅数、文章、草稿、下次计划发布)。请先运行portfolio sync。substack-pp-cli portfolio sync— 发现你拥有的每个出版物,并填充本地列式存储(出版物/文章/订阅者/草稿)。这是所有跨出版物分析命令的前置条件。
posts — 特定出版物的长篇文章和归档
substack-pp-cli posts archive— 出版物文章的公开归档substack-pp-cli posts best— 按互动指标对缓存文章排序(--by views|likes|comments|restacks、--window、--cross-pub、--limit、--publication)substack-pp-cli posts get-by-slug— 按 URL slug 获取已发布文章substack-pp-cli posts list-published— 列出该出版物上已发布的文章(需要认证)substack-pp-cli posts pair <en-slug> <de-slug>— 在本地表中记录一组 EN↔DE 翻译配对substack-pp-cli posts pairs— 列出已记录的文章配对;--missing显示没有配对文章的文章;--publication筛选指定出版物substack-pp-cli posts ranked-authors— 出版物作者排名列表substack-pp-cli posts twin <slug> --to <pub>— 将已发布文章复制到你拥有的另一个出版物,作为草稿(重新上传图片并保留付费墙标记)
profiles — Substack 个人资料 — 你自己和其他作者的个人资料
substack-pp-cli profiles from-linkedin— 根据 LinkedIn 账号查找 Substack 个人资料substack-pp-cli profiles get-by-handle— 根据账号获取公开个人资料(例如 mvanhorn)substack-pp-cli profiles get-by-id— 根据数字用户 ID 获取公开个人资料substack-pp-cli profiles handle-options— 当前用户可用的账号建议substack-pp-cli profiles posts— 作者在各出版物发布的所有文章substack-pp-cli profiles self— 获取已验证身份的用户个人资料
recommendations — Substack 推荐 — 对外推荐(我推荐的出版物)
substack-pp-cli recommendations <publication_id>— 列出某出版物推荐的出版物
sections — 出版物的版块(新闻简报可以有多个)
substack-pp-cli sections— 列出版块和订阅
settings — 账户设置和连接探测(供 doctor 使用)
substack-pp-cli settings get— 获取账户设置substack-pp-cli settings ping— 连接探测(doctor 使用的非破坏性 PUT)
schedule — 跨出版物编辑日程安排
substack-pp-cli schedule board— 显示未来 N 天(--days)所有自有出版物已安排文章的 ASCII 日历
subs — 订阅者数量、流失差异和交叉推广分析
substack-pp-cli subs authors— 列出出版物署名作者substack-pp-cli subs churn— 对比订阅者快照(新增/取消订阅/升级/降级)。使用--snapshot创建基准,然后使用--since进行对比。标志:--publication、--since、--snapshotsubstack-pp-cli subs count— 获取订阅者数量(从启动检查清单载荷中读取)substack-pp-cli subs cross-sell— 列出在一个出版物付费订阅、但在其他出版物免费订阅或未订阅的邮箱(需要本地存储中有 2 个或更多自有出版物)。标志:--limit
tags — 文章标签
substack-pp-cli tags create— 创建新标签substack-pp-cli tags list— 列出该出版物的所有标签
新鲜度契约
此打印型 CLI 仅为已注册的、由存储支持的读取命令路径提供有限的新鲜度保障。在 --data-source auto 模式下,这些路径会检查 sync_state,并可能在读取本地数据前执行有限刷新。--data-source local 不会刷新。--data-source live 会读取 API,且不会修改本地存储。设置 SUBSTACK_NO_AUTO_REFRESH=1 可跳过新鲜度钩子,而不改变数据源选择。
覆盖的路径:
substack-pp-cli categoriessubstack-pp-cli categories getsubstack-pp-cli categories listsubstack-pp-cli categories searchsubstack-pp-cli draftssubstack-pp-cli drafts getsubstack-pp-cli drafts listsubstack-pp-cli drafts searchsubstack-pp-cli inboxsubstack-pp-cli inbox getsubstack-pp-cli inbox listsubstack-pp-cli inbox searchsubstack-pp-cli inbox-postssubstack-pp-cli inbox-posts getsubstack-pp-cli inbox-posts listsubstack-pp-cli inbox-posts searchsubstack-pp-cli postssubstack-pp-cli posts getsubstack-pp-cli posts listsubstack-pp-cli posts searchsubstack-pp-cli posts-publishedsubstack-pp-cli posts-published getsubstack-pp-cli posts-published listsubstack-pp-cli posts-published searchsubstack-pp-cli posts-rankedsubstack-pp-cli posts-ranked getsubstack-pp-cli posts-ranked listsubstack-pp-cli posts-ranked searchsubstack-pp-cli profilessubstack-pp-cli profiles getsubstack-pp-cli profiles listsubstack-pp-cli profiles searchsubstack-pp-cli readersubstack-pp-cli reader subscriptionssubstack-pp-cli sectionssubstack-pp-cli sections getsubstack-pp-cli sections listsubstack-pp-cli sections searchsubstack-pp-cli subssubstack-pp-cli subs getsubstack-pp-cli subs listsubstack-pp-cli subs searchsubstack-pp-cli tagssubstack-pp-cli tags getsubstack-pp-cli tags listsubstack-pp-cli tags search
当 JSON 输出使用生成的来源信息封装时,新鲜度元数据位于 meta.freshness。应将其视为所覆盖命令路径的当前缓存新鲜度,而非完整历史回填或特定于 API 的丰富数据保证。
查找合适的命令
如果你知道想做什么,却不知道该用哪个命令,可以直接询问 CLI:
substack-pp-cli which "<capability in your own words>"
which 会根据自然语言能力查询,从此 CLI 精选的功能索引中找出最匹配的命令。退出代码 0 表示至少有一项匹配;退出代码 2 表示没有足够可靠的匹配——请改用 --help,或尝试更具体的查询。
操作示例
每日增长循环晨间例行任务
substack-pp-cli growth attribution --days 7 --agent --select rank,note_excerpt,subs_acquired
展示昨天 Note→订阅转化的赢家。结合 substack-pp-cli engage reciprocity --days 7 --agent,查看哪些人的互动也会得到你的回馈;并提前运行 substack-pp-cli sync --since 24h,确保本地存储保持最新。
使用节奏保护机制安排 Note
substack-pp-cli notes schedule --at 2030-05-13T09:00:00Z --body 'Tuesday hook line' --guard --json
将 Note 加入本地队列;如果安排时间与已有的本人 Note 相隔不到 30 min,--guard 会拒绝安排(类型化退出代码 2 + JSON 诊断信息)。移除 --guard,或添加 --send 以立即发送。
找出本周的互推伙伴
substack-pp-cli recs find-partners --my-pub on --top 5 --json --select rank,handle,pub,overlap_score
按受众重合度为候选出版物排名;将结果传给你选择的外联工具(substack-pp-cli 负责排名;外联文案由你的 Agent 根据提示词撰写)。
将作者的语言风格特征保存为 JSON
substack-pp-cli voice fingerprint --handle alice --diff bob --json
为指定账号生成机械化语言风格指标;设置 --diff 时,会与另一位作者进行对比。请自行保存 JSON;Agent 生成提示词可以读取该数据。
使用 --select 展示深层嵌套的 Note 元数据
substack-pp-cli notes get c-12345 --agent --select id,body,attachments.url,attachments.image_url,attachments.published_bylines.name,attachments.published_bylines.handle,context.users.name
Notes 响应包含深层嵌套数据(附件、署名、上下文用户)。使用带点号的 --select 可缩小数据负载范围,避免 Agent 为解析 30KB 的 JSON 而浪费上下文。
初始化投资组合分析存储
substack-pp-cli auth login --chrome
export SUBSTACK_PUBLICATION=mypub
substack-pp-cli portfolio sync --json
substack-pp-cli portfolio --json
登录后运行一次。所有跨发布内容分析命令(posts best、grep、schedule board、subs churn、subs cross-sell)都会读取由 portfolio sync 填充的本地存储。
发布包含 SEO 和封面图片的丰富草稿
export SUBSTACK_PUBLICATION=mypub
substack-pp-cli drafts create \
--title "The case for X" \
--subtitle "Three reasons it matters now" \
--body-file ./post.md \
--audience only_paid \
--seo-title "Case for X" \
--seo-description "Why X matters for Y" \
--cover-image https://substackcdn.com/.../cover.jpg \
--json
自动将 Markdown 正文转换为 Substack 的 ProseMirror 格式。目标出版物根据 $SUBSTACK_PUBLICATION 确定。若要发布公开帖子,请移除 --audience only_paid。
将表现最佳的英文帖子同步到德语出版物
# Sync first so the local store has current posts
substack-pp-cli portfolio sync --json
# Find top post by restacks
substack-pp-cli posts best --by restacks --limit 1 --publication mypub-en --json
# Preview the twin operation, then create the draft
substack-pp-cli posts twin my-en-slug --to mypub-de --dry-run --json
substack-pp-cli posts twin my-en-slug --to mypub-de --json
每周订阅者流失摘要
# Run this weekly (automate with a cron or agent schedule)
substack-pp-cli subs churn --since 7d --json --publication mypub-paid
首次运行需要先建立基线:substack-pp-cli subs churn --snapshot。之后,--since 7d 会与该时间范围内最近的快照进行比较。
在所有出版物中进行全文搜索
substack-pp-cli grep "interest rates" --scope posts --json
substack-pp-cli grep "reader question" --scope notes --since 2025-01-01 --limit 20 --json
身份验证设置
Substack 使用会话 Cookie(substack.sid)。目前唯一可用的方式是 auth login --chrome(也接受别名 --browser)——它会通过 pycookiecheat / cookies / cookie-scoop-cli 从已登录的 Chrome 中读取 Cookie,并将其存储在操作系统密钥环中。不支持密码登录,也没有手动粘贴 Cookie 的子命令。如果 Cookie 过期,请重新运行 auth login --chrome。
运行 substack-pp-cli doctor 以验证设置。
Agent 模式
为任意命令添加 --agent。它会展开为:--json --compact --no-input --no-color --yes。
-
支持管道 — JSON 输出到 stdout,错误输出到 stderr
-
支持筛选 —
--select可保留部分字段。点分路径可访问嵌套结构;数组会逐个遍历元素。对于内容冗长的 API,此功能对控制上下文大小至关重要:substack-pp-cli categories list --agent --select id,name,status -
支持预览 —
--dry-run会显示请求,但不会发送 -
适合离线使用 — 有本地 SQLite 存储时,同步/搜索命令可以使用该存储
-
非交互式 — 从不提示输入,所有输入都通过标志传入
-
显式重试 — 仅当已存在的创建操作应视为成功时使用
--idempotent;仅当缺失的删除目标应视为成功时使用--ignore-missing
响应封装
从本地存储或 API 读取数据的命令,会将输出封装在来源信息中:
{
"meta": {"source": "live" | "local", "synced_at": "...", "reason": "..."},
"results": <data>
}
解析 .results 获取数据,并查看 .meta.source 以确认数据来自实时来源还是本地存储。仅当 stdout 是终端且未设置机器格式标志(--json、--csv、--compact、--quiet、--plain、--select)时,才会将人类可读的 N results (live) 摘要打印到 stderr;通过管道传输的内容、Agent 使用者以及指定格式运行时,stdout 只会输出纯 JSON。
Agent 反馈
当你(或 Agent)发现此 CLI 有不对劲的地方时,请记录下来:
substack-pp-cli feedback "the --since flag is inclusive but docs say exclusive"
substack-pp-cli feedback --stdin < notes.txt
substack-pp-cli feedback list --json --limit 10
条目会存储在本地的 ~/.local/share/substack-pp-cli/feedback.jsonl。除非设置了 SUBSTACK_FEEDBACK_ENDPOINT,并且传入了 --send 或设置了 SUBSTACK_FEEDBACK_AUTO_SEND=true,否则绝不会通过 POST 发送。默认仅保存在本地。
写下让你感到意外的地方,而不是提交 Bug 报告。简短、具体、写成一行:这才是会不断累积价值的部分。
输出传递
每个命令都接受 --deliver <sink>。输出会发送到指定目标,并且可以同时输出到 stdout,也可以替代 stdout 输出,让 Agent 无需手动通过管道即可传递命令结果。支持三种目标:
| 目标 | 效果 |
|---|---|
stdout | 默认;仅输出到 stdout |
file:<path> | 以原子方式将输出写入 <path>(临时文件 + 重命名) |
webhook:<url> | 将输出正文 POST 到该 URL(使用 --compact 时为 application/json 或 application/x-ndjson) |
对于未知方案,会拒绝处理并返回结构化错误,指出支持的方案。Webhook 请求失败时会返回非零退出码,并在 stderr 中记录 URL 和 HTTP 状态。
命名配置
配置是保存的一组标志值,可在多次调用中重复使用。适用于计划任务中的 Agent 每次运行都调用相同的命令并使用相同配置的情况——HeyGen 的“Beacon”模式。
substack-pp-cli profile save briefing --json
substack-pp-cli --profile briefing categories list
substack-pp-cli profile list --json
substack-pp-cli profile show briefing
substack-pp-cli profile delete briefing --yes
显式标志的优先级始终高于配置值;配置值的优先级高于默认值。agent-context 会在 available_profiles 下列出所有可用配置,以便能够自省的 Agent 在运行时发现它们。
退出代码
| 代码 | 含义 |
|---|---|
| 0 | 成功 |
| 2 | 用法错误(参数错误) |
| 3 | 未找到资源 |
| 4 | 需要身份验证 |
| 5 | API 错误(上游问题) |
| 7 | 请求过于频繁(等待后重试) |
| 10 | 配置错误 |
参数解析
解析 $ARGUMENTS:
- 为空、
help或--help→ 显示substack-pp-cli --help的输出 - 以
install开头 → 以mcp结尾 → 安装 MCP;否则 → 参见上文的先决条件 - 其他任何内容 → 直接使用(作为带有
--agent的 CLI 命令执行)
MCP 服务安装
- 安装 MCP 服务:
go install github.com/mvanhorn/printing-press-library/library/media-and-entertainment/substack/cmd/substack-pp-mcp@latest - 在 Claude Code 中注册:
claude mcp add substack-pp-mcp -- substack-pp-mcp - 验证:
claude mcp list
直接使用
- 检查是否已安装:
which substack-pp-cli如果未找到,则提供安装选项(参见此技能顶部的先决条件)。 - 根据用户查询,从上文的独特功能和命令参考中选择最合适的命令。
- 使用
--agent标志执行:substack-pp-cli <command> [subcommand] [args] --agent - 如果有歧义,请查看子命令帮助:
substack-pp-cli <command> --help。