ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

产品经理的 AI 内容流水线实战(二):把写作 skill 的 frontmatter 改到 TaoToken,一句话产出待发布文章

产品经理的 AI 内容流水线实战(二):把写作 skill 的 frontmatter 改到 TaoToken,一句话产出待发布文章 1. 产品经理写稿的真实卡点frontmatter 和模型调用各写各的先说清楚这篇要解决什么。如果你正在用 Claude Code 搭写作 skill让 AI 帮你从选题一路写到待发布草稿那你大概率遇到过这个局面SKILL.md里写了一套 frontmatter 规范settings.json里配了另一套模型调用参数脱敏脚本又是第三个地方单独维护。三处配置各说各话改一处忘两处最后产出的稿子要么 frontmatter 缺字段要么模型调用报 401要么脱敏漏了真实项目名。这篇就是把这个分散状态收敛掉。核心动作只有一个把写作 skill 的 frontmatter 契约和模型调用入口统一改到 TaoToken让「说一句话产出待发布文章」这条链路真正跑通。适合谁适合已经有一个本地 skill 目录、但配置散落在多个文件里的产品经理或内容创作者。你不需要是后端工程师只要能看懂 YAML 和 JSON跟着改就行。我试过最原始的做法每写一篇分享就在对话里重新交代一遍「标题关键词前置、frontmatter 别漏字段、别写真实项目名」。说一次漏一次AI 还老自由发挥。后来把这些稳定规范固化进 skill情况好转但新的问题来了——skill 里 frontmatter 模板是一份模型调用配置在 Claude Code 的 settings 里是另一份脱敏脚本的路径又写在第三个地方。每次换模型或换 key我得翻三个文件。所以这篇的目标很具体给你一份可复制的 frontmatter 字段模板、一个清晰的 skill 目录结构、一次端到端验证动作。改完之后你在 Claude Code 里说一句「把今天做的 XX 写成分享」产出的就是格式、脱敏、结构全对的待发布稿而且模型调用走的是统一入口不再东拼西凑。这里要区分两个概念。frontmatter 是文章开头的 YAML 元数据它定义的是「这篇文章是什么」——标题、系列、标签、状态。模型调用配置定义的是「用哪个模型来写」——Base URL、API Key、Model ID。前者是内容契约后者是执行契约。很多人把这两件事混在一个文件里写结果就是内容规范和基础设施耦合换一个模型要动内容模板改一个字段要碰调用配置。分开管、统一收敛才是可持续的做法。下面从 TaoToken 的前置准备讲起然后给可复制的配置片段再走一遍验证最后把常见报错对照着排一遍。2. TaoToken 前置准备把模型调用入口统一收口在改 frontmatter 之前先把模型调用这条线理顺。因为写作 skill 最终要调用模型来生成内容如果调用入口本身是散的frontmatter 改得再规范也跑不通。TaoToken 在这里扮演的角色是统一的模型调用入口。你不需要在 skill 里硬编码某个模型的地址而是把 Base URL、API Key、Model ID 这三件套集中配一次skill 和 Claude Code 都从这里读。官网地址是 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content API 入口是 https://taotoken.net/api 注意 API 地址不带 UTM 参数配置时直接用这个干净地址。第一步拿到 API Key。进入控制台的 API Keys 页面https://taotoken.net/console/api-keys?utm_sourcetaotoken_aicg_blog_endutm_contentapi_keysutm_campaignrewrite 新建一个 key。建议按用途命名比如article-writing-skill这样以后要轮换或吊销时不会误伤其他项目。Key 只在创建时完整显示一次复制后先存到本地密码管理器或环境变量里别直接写进会提交到 git 的文件。第二步确认你要用的 Model ID。写作场景通常需要一个长文本能力强的模型具体可选哪些在模型对话页https://taotoken.net/models?utm_sourcetaotoken_aicg_blog_endutm_contentmodelsutm_campaignrewrite 能看到当前可用的列表。把你要用的那个 Model ID 记下来后面配置里要填。第三步理解三件套的对应关系。Base URL 是https://taotoken.net/apiAPI Key 是你刚创建的那串Model ID 是模型列表里的标识。这三样东西在 Claude Code 的配置、skill 的调用脚本、以及任何 MCP 或 CLI 工具里必须完全一致。任何一处写错都会在验证阶段暴露成 401 或 model not found。这里有个容易踩的坑很多人把 Base URL 写成带/v1或带其他路径的形式结果请求打到错误的路由上。TaoToken 的 API 入口就是https://taotoken.net/api不要自己拼接额外路径。如果你用的是 Anthropic 兼容的调用方式Claude Code 默认走这个配置里的 base_url 就填这个值客户端会自动处理后续路径。还有一点关于脱敏的前置准备。脱敏脚本需要知道「哪些词是敏感的」这份黑名单不应该散落在各个 skill 里而应该集中维护一份。建议在项目根目录建一个vault-scripts/sensitive_words.txt每行一个敏感词脚本读取这个文件做检测。这样你只需要维护一处所有 skill 共用。脱敏用词也固定下来真实项目名统一替换成「我的产品线」作者名替换成「我」同事名替换成「后端同学」或「前端同学」。把替换规则写进脚本而不是靠每次手动改。前置准备做完你应该手上有三样东西一个可用的 API Key、一个确定的 Model ID、一份集中的敏感词清单。接下来进入配置环节。3. 可复制配置frontmatter 模板 skill 目录 settings 片段这一节是全文的核心给你可以直接抄的配置。分三块frontmatter 字段模板、skill 目录结构、以及 Claude Code 的 settings 片段。先说 frontmatter 模板。这是每篇文章开头的 YAML是文章和发布系统之间的契约。字段一个都不能少--- title: 关键词前置的标题 series: AI 内容流水线实战 tags: [Claude Code, skill, frontmatter] created: 2026-08-15 status: 待发布 pillar: 发布实战 model: your-model-id ---逐个字段说明。title必须关键词前置读者会搜的词顶到前 15 字因为列表页会折叠。series标明归属哪个系列方便后续聚合。tags里要含搜索热词比如 Claude Code、skill、frontmatter 这些。created是创建时间发布排序靠它格式用YYYY-MM-DD。status是状态机入口写作阶段固定为「待发布」后续发布环节会改这个值。pillar是内容柱分类。model字段是这次新增的——把这篇稿子用的 Model ID 记在 frontmatter 里方便回溯和复现。注意原来很多人会手填series_order给系列排序后来改成按created时间排这个字段就删了。少一个手填项少一个出错点。这是配置收敛的一个具体例子能自动推导的就不要手填。再说 skill 目录结构。建议这样组织.claude/skills/article-writing/ ├── SKILL.md ├── frontmatter-template.yaml ├── sensitive_check.py └── config.jsonSKILL.md是 skill 的主定义文件写清楚六步流程和两个人工卡点。frontmatter-template.yaml就是上面那份模板skill 生成文章时从这里读字段。sensitive_check.py是脱敏检测脚本。config.json存放这个 skill 专属的配置包括模型调用三件套的引用。关键点config.json里不要硬编码 API Key而是引用环境变量。像这样{ base_url: https://taotoken.net/api, api_key_env: TAOTOKEN_API_KEY, model_id: your-model-id, frontmatter_template: ./frontmatter-template.yaml, sensitive_words: ../../vault-scripts/sensitive_words.txt }这样 API Key 从环境变量TAOTOKEN_API_KEY读不会进版本库。base_url固定为 TaoToken 的 API 入口。model_id填你在模型列表里选定的那个。然后是 Claude Code 的 settings 片段。Claude Code 的配置通常在~/.claude/settings.json或项目级的.claude/settings.json。如果你用 Claude Code 的 Anthropic 兼容模式配置长这样{ env: { ANTHROPIC_BASE_URL: https://taotoken.net/api, ANTHROPIC_API_KEY: your-api-key-here, ANTHROPIC_MODEL: your-model-id } }如果你用的是 Codex 风格的auth.json结构类似{ base_url: https://taotoken.net/api, api_key: your-api-key-here, model: your-model-id }不管哪种格式三件套必须齐全Base URL、Key、Model ID。缺任何一个都会在调用时报错。这里再强调一次Base URL 就是https://taotoken.net/api不要加/v1或其他后缀。如果你用 CC Switch 或 Cline MCP 这类工具管理多个模型配置同样把这三件套填进去。CC Switch 里新建一个 providerBase URL 填 TaoToken 的 API 入口Key 填你的 keyModel 填 Model ID。Cline 的 MCP 配置里也是同样的三件套。工具不同字段名可能略有差异但核心信息一致。配置改完后检查一遍一致性skill 的config.json里的base_url、Claude Code settings 里的ANTHROPIC_BASE_URL、以及任何其他工具里的地址必须都是https://taotoken.net/api。Key 和 Model ID 同理。这一步做完配置就收敛了。4. 端到端验证一句话触发确认产出待发布稿配置改完不能只看得跑一遍验证。这一节给你一个完整的端到端动作从触发到确认产出。第一步设置环境变量。在终端里执行export TAOTOKEN_API_KEY你的key如果你用 Windows PowerShell$env:TAOTOKEN_API_KEY你的key这一步是为了让 skill 的config.json能读到 key。验证一下是否设置成功echo $TAOTOKEN_API_KEY应该输出你的 key。如果为空说明没设置上检查一下 shell 配置文件。第二步确认 Claude Code 能读到配置。启动 Claude Code在对话里输入一个简单请求比如「列出当前可用的模型」。如果配置正确它会返回模型列表如果报 401说明 key 或 base_url 有问题跳到下一节排查。第三步触发写作 skill。在 Claude Code 里说一句把今天做的 frontmatter 配置收敛写成一篇分享这时候 skill 应该被激活按六步流程走先写文章然后在「人工确认内容」这个卡点停下来等你。你会看到它产出的草稿开头带着 frontmatter。第四步检查 frontmatter 字段。看产出的草稿开头确认这几个字段都在title、series、tags、created、status、pillar、model。title是否关键词前置tags是否含热词status是否为「待发布」。任何一个缺失说明frontmatter-template.yaml没被正确读取检查 skill 的config.json里frontmatter_template路径对不对。第五步跑脱敏检测。假设草稿存到了06 - 长期记忆库/待发布/某篇.md执行python vault-scripts/sensitive_check.py 06 - 长期记忆库/待发布/某篇.md脚本会做三层检测黑名单匹配、配置字段嗅探、疑似人名识别。如果输出「检测通过」说明脱敏没问题如果列出可疑词按提示替换。替换规则用固定的那套真实项目→「我的产品线」作者→「我」同事→「后端同学」。第六步确认最终产出。经过人工确认内容和脱敏检测后你手上应该是一篇 frontmatter 完整、脱敏通过、结构正确的待发布稿。这时候status字段是「待发布」可以直接进入后续的发布环节。整个验证过程的关键是「一句话触发」。你只说了一句「把今天做的 XX 写成分享」剩下的格式、脱敏、结构都由 skill 保证。这就是配置收敛后的效果——你负责出思路和把关AI 负责按规范量产。如果验证过程中某一步卡住了别急着改配置先看报错信息。下一节把常见报错对照着排一遍。5. 常见报错排查401、local proxy failed、reading choices、OAuth配置和验证过程中最容易遇到四类报错。这一节逐个对照给你排查路径。第一类401 Unauthorized。这是最常见的说明认证失败。可能原因有三个。一是 API Key 没设置或设置错了检查echo $TAOTOKEN_API_KEY是否有输出以及和 TaoToken 控制台里创建的是否一致。二是 Key 被写进了配置文件但环境变量没生效检查 Claude Code 的 settings 里ANTHROPIC_API_KEY是否引用了正确的值。三是 Key 已过期或被吊销去控制台的 API Keys 页面确认状态。排查顺序先确认环境变量再确认配置文件最后确认 key 本身有效。第二类local proxy failed。这个报错通常出现在你本地有代理工具或网络配置干扰的情况下。注意这里说的不是让你去配代理而是排查本地是否有残留的代理设置影响了请求。检查环境变量里是否有HTTP_PROXY、HTTPS_PROXY这类设置如果有临时清掉再试unset HTTP_PROXY unset HTTPS_PROXY然后重新触发请求。如果报错消失说明是本地代理配置干扰。TaoToken 的 API 入口是直连的不需要额外代理设置。第三类reading choices 相关报错。这类报错通常出现在响应解析阶段提示读取choices字段失败。原因一般是返回的响应结构和你预期的格式不匹配。排查方向确认你用的 Model ID 是模型列表里真实存在的拼写完全一致。如果 Model ID 写错服务端可能返回一个错误结构客户端去读choices就读不到。另外确认 Base URL 没有多余路径就是https://taotoken.net/api。如果这两点都对检查你的客户端版本是否支持该模型的响应格式。第四类OAuth 相关报错。如果你用 Claude Code 的 OAuth 登录方式可能会遇到 token 刷新失败或授权过期。这类问题的排查路径是先确认你用的是 API Key 模式还是 OAuth 模式。如果用 API Key就不该走 OAuth 流程检查配置里是否混入了 OAuth 相关字段。如果用 OAuth确认授权是否还有效必要时重新授权。对于写作 skill 这种场景建议直接用 API Key 模式配置更简单不涉及 OAuth 刷新。除了这四类还有一个高频问题是「模型不响应」或「响应超时」。先检查网络连通性确认能访问https://taotoken.net/api。然后检查 Model ID 是否正确。如果都正常可能是请求内容过长尝试缩短输入再试。排查时记住一个原则先确认三件套Base URL、Key、Model ID完全一致再排查其他。大部分报错都源于这三者中某一个写错或没生效。把三件套对齐问题基本能解决八成。6. 把配置收敛成习惯下一步和长期方案配置改完、验证跑通之后这件事的价值不在于「这次改对了」而在于「以后不用再改」。把 frontmatter 和模型调用收敛到统一入口本质上是把一次性的手工操作变成可持续的流程。具体来说你现在有了三份集中维护的东西一份 frontmatter 模板定义了所有文章的元数据契约一份 skill 配置引用了模型调用三件套一份敏感词清单供所有脱敏脚本共用。以后要换模型只改config.json里的model_id和 Claude Code settings 里的ANTHROPIC_MODELfrontmatter 模板不用动。要加新的 frontmatter 字段只改模板所有新文章自动带上。要更新脱敏词库只改敏感词文件所有 skill 生效。如果你打算长期用这套流水线写内容建议进一步把模型调用做成 Coding Plan 的形式把常用的写作、润色、脱敏任务分别绑定到合适的模型上。这样不同任务用不同模型成本和效果都能优化。Coding Plan 的入口在 https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_contentcoding_planutm_campaignrewrite 可以按任务类型配置。另外如果你在写作之外还有代码相关的 skill比如自动生成示例代码或跑测试那这些 skill 的模型调用也应该走同一个入口。统一入口的好处是你只需要维护一份 key 和一份 base_url所有 skill 共享。接入文档在 https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_contentdocutm_campaignrewrite 里面有各种调用方式的说明遇到不确定的格式可以查。回到写作 skill 本身。这篇解决的是 frontmatter 和模型调用分散的问题下一篇会讲发布环节——掘金、知乎、CSDN 三个平台脾气不同怎么统一成「定时自动发 邮件告诉我结果」。写作环节闭环了发布环节才能接上。最后留一个实操建议每次新增或修改 skill 配置后都跑一遍这篇第 4 节的端到端验证。不要跳过验证直接写正式稿因为配置错误在正式稿里暴露的代价更高。验证通过再批量产出这是最省时间的做法。如果你在配置过程中遇到这篇没覆盖的报错可以去 API Keys 页面确认 key 状态或者查接入文档里的调用示例。把三件套对齐大部分问题都能自己解决。
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进