Install
openclaw skills install @thcjp/aws-wechat-article-writing面向微信公众号长文的 AI 写作引擎。从选题卡、提纲或口述话题生成完整初稿, 覆盖改写、续写、润色、开头结尾优化等环节。写作约束来自 .aws-article/config.yaml 与本篇 article.yaml 叠加,支持 target_reader / tone / writing_style 等文风字段, 可调用 DeepSeek / GPT / Claude 等 Chat Completions 兼容端点,或在模型未配置时 自动降级为当前对话模型按相同约束代写。集成业务资料库引用、配图占位、发布意图管理.
openclaw skills install @thcjp/aws-wechat-article-writing核心功能: 本技能提供等环节等能力。
公众号长文 AI 写作引擎 —— 从提纲或话题生成完整初稿,支持改写、续写、润色,多模型可切.
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| input | string | 是 | 公众号长文写作引擎处理的输入数据或指令 |
| options | object | 否 | 附加配置选项,如模式选择、格式偏好等 |
| callback_url | string | 否 | 异步处理完成后的回调通知URL |
| 能力 | 免费版 | 付费版 |
|---|---|---|
| 基础功能 | 支持 | 支持 |
| 公众号长文写作引擎从提纲或话题生成 | 不支持 | 支持 |
| 多渠道消息批量发送 | 不支持 | 支持 |
| 消息模板与变量注入 | 不支持 | 支持 |
| 送达状态实时回调 | 不支持 | 支持 |
| 通信记录归档与检索 | 不支持 | 支持 |
本 skill 调用 write.py 生成文章初稿,会把文章内容发送给用户配置的 LLM 端点。使用前请阅读以下行为说明:
write.py 读取仓库根 aws.env 的 WRITING_MODEL_API_KEYAuthorization: Bearer <key> 头发送到用户在 config.yaml.writing_model.base_url 配置的外部端点(常见为 DeepSeek / OpenAI / Anthropic 等 Chat Completions 兼容 API)。请使用专用 key 并配置可信端点或内部代理article.yaml / topic-card.md / 合并配置 / 用户通过 --reference 指定的参考文档全文,整体 POST 给上述端点.aws-article/config.yaml、本篇 article.yaml、topic-card.md、.aws-article/products/{产品名}/*.mddraft.md、article.mdpython3 {baseDir}/(请参考skill目录中的脚本文件)可使用 write.py prompt 子命令只输出 prompt JSON 不调用 LLM,由 Agent 代写 —— 想避免把内容发给第三方时用这条路径.
| 依赖项 | 类型 | 是否必需 | 获取方式 |
|---|---|---|---|
| LLM API | API | 必需 | 由Agent内置LLM提供 |
需要配置对应API Key,详见上文环境配置章节
API Key配置方式:
export API_KEY="${API_KEY:?请设置环境变量}"
配置后需重启会话或开启新终端生效。API Key应妥善保管,避免泄露到版本控制系统.
draft.md.aws-article/config.yaml + 本篇 article.yaml,同键以本篇为准target_reader 控深度与用词,tone 控语气,writing_style 控结构表达writing_model 段配 provider / base_url / model,兼容 Chat Completions 协议.md,可传 --reference(最多 5 个)image_density(默认每节一图)产出 ,封面占位置于标题前publish_method 取 draft / published / none,默认 draft详细的输入输出格式请参考下方章节说明。
aws-wechat-article-writing的相关能力任何操作执行前,必须检查 .aws-article/config.yaml 中 article_category、target_reader、default_author 三键(trim 后均非空)。任一项缺失须逐项询问用户,取得明确答复后写回文件,再进入写作流程。禁止从 article.yaml 等其它文件静默推断并写盘;禁止仅在对话里确认却不落盘.
写作模型:writing_model(provider、base_url、model)在 .aws-article/config.yaml;WRITING_MODEL_API_KEY 在仓库根 aws.env.
交互约定:未通过环境校验且未获用户明确「本次例外」时,不得默认改由当前 Agent 代写并假装流程完整。环境检查未通过时只处理配置选项,不要在同一条回复里混入写稿、草稿路径或多草稿选择;配置闭环后再进入写作流程.
写稿进度:
article_category、target_reader、default_author)落盘,须先于续旧/新开drafts/... 目录,再进入以下步骤;禁止未确认就调用写作脚本--referencepublish_method确认轮次优化:Step 1 三键已非空则静默通过;Step 4 已是合法值则静默通过;Step 2 与 Step 4 可合并为一轮提问。用户意图明确时(如给出主题加写一篇文章),理想轮次为 1 轮(确认标题/摘要)加写完后展示结果.
当不清楚用户要续写 drafts/ 下某篇进行中草稿还是新开一篇时,须先询问(可列出候选目录),待用户选定后再进入第 3 步。已明确时跳过询问.
目录命名:新开一篇时目录名必须为 YYYYMMDD-标题slug(如 drafts/20260406-wechat-article-skills/)。YYYYMMDD 为当日日期,slug 为小写、连字符分隔的标题缩写。禁止省略日期前缀.
调用 write.py 或让 Agent 代写之前,确认合并后的 article_category、target_reader 均为非空字符串(trim 后);default_author 非空或本篇 article.yaml 的 author 非空。若任一项不满足,须暂停写稿,引导用户补全 .aws-article/config.yaml(及/或本篇 article.yaml),并实际写入文件.
约束来源:write.py 先读全局 .aws-article/config.yaml,再读本篇目录下 article.yaml,把两边键叠成一张表用于生成写作提示 —— 同一键在两份文件里都有时以本篇 article.yaml 为准.
.aws-article/config.yaml:文风、结构预设、禁用词、字数、embeds 等顶层字段进入这张表。writing_model / image_model 只给脚本连 API 用,不整段放进给大模型的写作说明article.yaml:本篇标题、作者、摘要、publish_completed 等;与 config 重名的键会覆盖 configdefault_structure / default_closing_block 指向的预设正文来自 .aws-article/presets/,在本篇 article.yaml 中必须为单元素列表 [名](或空列表)。多候选时 Agent 须读取每个候选预设文件,结合主题判断最匹配的一个写入 article.yaml,禁止盲选领先个.
.aws-article/products/{产品名}/ 是用户业务的原始资料库,业务介绍 .md 直接挂在产品根,images/ 子目录存业务配图.
触发口径:
ls .aws-article/products/,对相关产品根下 *.md 必读,已有同主题文档优先增量改写而非另起炉灶写作两种方式:
方式一(智能体直接写稿):写稿前先 ls .aws-article/products/,涉及产品则必读相关 .md;写作时将业务资料转化为账号文风后引用;draft.md 中凡实际引用某份业务介绍处用括号附上该文件仓库相对路径;配图占位按 image_density 生成,格式  独占一行,封面占位放标题前.
方式二(write.py 写稿):有相关文档时在仓库根执行 write.py 传 --reference <路径>(可重复,最多 5 个,路径形如 .aws-article/products/<产品名>/<文件名>.md,不接受 images/ 子目录下的图片说明 .md);无相关文档时不传 --reference,仅靠选题卡与合并配置写稿。若 API 因上下文超限失败,减少 --reference 篇数或换更短文档后重试.
调用 write.py 或进入写作之前,确认 .aws-article/config.yaml 中 publish_method:
draft(默认):定稿后若走 publish.py full,只把图文写入公众号草稿箱,不自动发出去published:定稿后 publish.py full 会在创建草稿后再提交发布(异步),也可用 full --publish 单次强制带发布none:用户明确不想填微信配置,publish.py full 直接跳过不调微信,写稿/审稿/排版照常规则:默认保持或写入 publish_method: draft,除非用户明确要对外发布改为 published;明确不填微信、不走上传改为 none。已是合法值可不重复盘问。禁止在 publish_method 非法时调用 write.py;禁止未经同意默认 published.
write.py draft/rewrite/continue)—— 依赖 config.yaml 的 writing_model 加 aws.env 的 WRITING_MODEL_API_KEYwrite.py prompt <mode> <input> 获取提示词 JSON,再由 Agent 按相同提示词直接写,无须本次例外确认必须告知用户当前使用的方式:已配置且调用脚本告知使用的模型;模型未配置自动降级告知由当前对话模型直接写稿;故障降级告知第三方 API 不可用由对话模型代写并说明原因.
运行脚本后须把终端里的具体报错原样摘要给用户,勿只说调用失败。按退出码与报错类型分支:
[NO_MODEL] —— 自动降级,运行 write.py prompt <mode> <input> 获取提示词 JSON,Agent 按该 system_prompt 和 user_prompt 写文章,无须用户确认URLError、临时性 502/503 等 —— 必须自动再试 1 次(告知正在重试);第二次仍失败则改用 write.py prompt 取提示词后由 Agent 按相同约束代写,并明确告知第三方 API 网络不可用本次由对话模型代写config.yaml 的 writing_model、aws.env 的 WRITING_MODEL_API_KEY、本篇目录是否有 article.yaml),请用户修正后重跑;用户明确打字愿意本次改由 Agent 代写,再按本次例外处理并留痕model / 请求参数再试一次,仍失败则与用户商定是否 Agent 代写写作时必须遵循读取的 target_reader、tone、writing_style:深度与用词贴合读者,语气贴合调性,结构与表达方式贴合文章风格.
用户供图分支(image_source: user):用户图片须先放入本篇 imgs/;由智能体读图分析并生成或补全 img_analysis.md(可用 user_image_prepare.py 先生成模板再填写);未落盘 img_analysis.md 不得调用 write.py;img_analysis.md 中推荐用途为封面必须且只能有 1 处;写稿时直接使用用户图片路径 imgs/未指定.png,不再输出 示例。image_source 只允许 generated 或 user,禁止写 user_provided.
状态切换规则(article.yaml):新建文章默认 image_source: generated、publish_completed: false;进入用户上传图片替换/重写流程时改为 user 并将 publish_completed 置回 false;重新发布成功且有回执后写回 publish_completed: true.
文章结构按优先级加载:用户指定、本篇 article.yaml 的 default_structure、.aws-article/presets/structures/ 下的文件、内置默认。文末区块按优先级加载:本篇 article.yaml 的 default_closing_block、合并约束中 closing_block 非空字符串、fallback 内置默认(分割线加一句关注引导).
仅做粗扫:禁用词、段落长度、开头吸睛度、小标题密度,发现明显问题自动修正。不替代 review skill 的内容审 —— 完整的合规、敏感词、文末 embed、引用标注剥离均归 review 处理;本步禁止越界做 review 的工作.
配图占位自检(默认模式):当 image_source != user 时,核对 draft.md 是否满足 image_density(未配置则按每节一图);缺失或格式不合法时先补齐/修正  再进入审稿或配图步骤.
续写新增  时,必须把该占位计入待配图清单。进入发布相关步骤前,必须复核本篇正文产物:article.md / article.html 若仍含 示例,只能标记为正文配图未完成,禁止宣称发布闭环完成.
本 skill 产出只到 draft.md。禁止在 writing 阶段:自行写入 article.md(article.md 是 review 的 BLOCKING 产物,须含文末 {embed:...} 且已剥离引用标注);自行剥离 (资料路径:...) 引用标注(剥离动作由 review 调用 write.py strip-citations 完成);跳过 review 直接进入 formatting.
用户提供选题卡或口述主题,从零生成一篇符合账号文风的公众号长文初稿。先落盘全局三键,再确认新开目录命名,按合并约束与结构预设产出 draft.md,配图占位按 image_density 生成.
用户指明 drafts/ 下某篇进行中草稿,读取本篇 article.yaml 与已有 draft.md,按 continue 模式续写后续章节。续写新增配图占位须计入待配图清单,发布前复核正文产物是否仍含 示例.
本篇主题涉及用户自身业务(产品对外介绍、教程、案例),先 ls .aws-article/products/ 必读相关业务介绍 .md,已有同主题文档优先增量改写。走 write.py 时传 --reference(最多 5 个)注入系统提示参考资料库,模型在依据处标注资料路径.
一篇正文涉及生成配图与用户供图混合,通过 image_source 在 generated / user 间切换;用户供图分支须先落盘 img_analysis.md 才能调用 write.py,封面推荐用途必须且只能 1 处;写后自检占位密度并补齐缺失占位.
用户提出为自家 SaaS 产品写一篇公众号长文。Agent 先 ls .aws-article/products/ 发现 saas-product/项目介绍.md 与 saas-product/功能清单.md,判断主题涉及自身业务必读两份文档。确认 .aws-article/config.yaml 中三键非空、publish_method: draft。因有相关业务文档,在仓库根执行 write.py draft topic-card.md --reference .aws-article/products/saas-product/项目介绍.md --reference .aws-article/products/saas-product/功能清单.md -o drafts/20260406-saas-intro/draft.md。脚本把两份资料全文注入系统提示参考资料库,模型在依据处标注资料路径。产出 draft.md 后粗扫禁用词与小标题密度,自检配图占位每节一图,封面占位置于标题前,展示给用户确认后移交 review.
用户未配置 writing_model,write.py draft 退出码 2 且 stderr 含 [NO_MODEL]。Agent 不打断用户,自动运行 write.py prompt draft topic-card.md 取回 system_prompt 与 user_prompt 的 JSON,按相同写作约束(相同 target_reader / tone / writing_style / 结构预设)由当前对话模型直接写稿,输出到 -o 指定路径。完成后告知用户:写作模型未配置,本次由当前对话模型直接写稿(使用相同写作约束)。无须用户确认或本次例外.
用户已配置 DeepSeek 端点,write.py draft 退出码 1,stderr 显示 URLError 与连接超时。Agent 告知正在重试,简短等待后重跑同一命令;第二次仍超时,改用 write.py prompt 取提示词后由 Agent 按相同约束代写,并明确告知:第三方 API 网络不可用,本次由对话模型代写。整个过程未掩盖问题、未静默切换.
stderr 含 [NO_MODEL]。自动降级:运行 write.py prompt <mode> <input> 取提示词 JSON,Agent 按该 system_prompt 和 user_prompt 写文章输出到 -o 指定路径。无须用户确认或本次例外.
stderr 含超时、连接失败、URLError、临时性 502/503。必须自动再试 1 次并告知正在;第二次仍为网络类失败则改用 write.py prompt 取提示词后由 Agent 按相同约束代写,必须明确告知第三方 API 网络不可用本次由对话模型代写.
stderr 含 401/403、Key 无效、未找到写作约束、YAML 解析失败。不要为省事自动降级掩盖问题。列出须检查项(config.yaml),请用户修正后重跑 write.py。用户明确打字愿意本次改由 Agent 代写,再按本次例外处理并留痕.
article_category、target_reader、default_author 中任一项 trim 后为空。须暂停写稿,逐项询问用户,取得明确答复后写回 .aws-article/config.yaml,再进入写作流程。禁止从 `article.
publish_method 不在 draft / published / none 中。禁止调用 write.py。按规则与用户确认:默认 draft,明确要对外发布改 published,明确不填微信改 none,写回文件后再进入写作.
image_source: user 但本篇未落盘 img_analysis.md。不得调用 write.py,否则脚本报错退出。先用 user_image_prepare.py 生成模板并填写,确保推荐用途为封面处必须且只能 1 处,再调用 write.py.
写作 API 因上下文/token 超限失败。减少 --reference 篇数(如从 5 个降到 2 个)或换更短文档后;仍失败则与用户商定是否由 Agent 代写.
单独安装本 skill 时,跨 skill 引用(如 ../aws-wechat-article-main/references/*.md)的步骤在读取阶段遇到 file not found。本 skill 内的纯本地步骤仍可用;需要跨 skill 引用的步骤建议装齐一条龙套件到同一 skills/ 根目录.
在 .aws-article/config.yaml 的 writing_model 段填 provider / base_url / model(base_url 指向 Chat Completions 兼容端点);在仓库根 aws.env 填 WRITING_MODEL_API_KEY。键名对照参考 references/env.example.yaml。未配置时 write.py 退出码 2 自动降级.
draft.md 是本 skill 的产物,含配图标记与括号引用路径,用于事实溯源。article.md 是 review skill 的产物,由 review 调用 write.py strip-citations 剥离括号路径、追加文末 {embed:...} 后写入。writing 阶段禁止自行命名 article.md 或自行剥离引用标注.
本篇主题涉及用户自身业务(对外介绍、教程、案例、自家业务安利)且 .aws-article/products/{产品名}/ 下有相关业务介绍 .md 时传;路径形如 .md,可重复最多 5 个,不接受 images/ 子目录下的图片说明 .md。主题与自身业务无关时不传.
draft(默认)定稿后 publish.py full 只写入公众号草稿箱不自动发出;published 在创建草稿后再提交发布(异步),也可 full --publish 单次强制;none 用户明确不填微信,publish.py full 直接跳过不调微信,写稿/审稿/排版照常.
不了解用户要续写某篇还是新开时须先询问(可列出 drafts/ 候选目录),待用户选定后再进入写作;禁止未确认就自动选中某一 drafts/... 跑写作脚本。已明确路径或意图时跳过询问。新开目录名必须为 YYYYMMDD-标题slug,禁止省略日期前缀.
两种:模型未配置(退出码 2)自动取 prompt 由 Agent 代写,无须确认;网络类失败(退出码 1)自动重试一次,第二次仍失败则取 prompt 由 Agent 代写并明确告知。配置/凭证类失败不会自动降级,须用户修正或明确打字愿意本次例外。所有降级路径都先运行 write.py prompt 取相同 system_prompt 和 user_prompt,确保写作约束一致.
write.py 会把 article.yaml / topic-card.md / 参考文档全文 POST 给配置的端点,内容外发须用户知情并配置可信端点draft.md,合规审、敏感词、文末 embed、引用标注剥离均归 review skill,writing 阶段不得越界--reference 最多 5 个且路径须直接挂在产品根,token 超限时须减少篇数skills/ 根目录,单独安装时部分步骤会 file not found{
"success": true,
"data": {
"result": "公众号长文写作引擎处理结果",
"execution_time": "0.5s",
"metadata": {
"version": "1.0",
"processor": "aws-wechat-article-writing"
}
},
"execution_log": [
"解析输入参数",
"执行核心处理",
"格式化输出结果"
],
"error": null
}
| 错误现象 | 可能原因 | 诊断步骤 | 解决方案 |
|---|---|---|---|
| 写作引擎无法启动 | 缺少必要的运行环境或依赖项 | 检查运行环境是否满足依赖说明,确认所有依赖项已正确安装 | 安装缺失的依赖项,重启应用 |
| 输入格式错误 | 用户输入不符合skill预期格式 | 检查输入是否符合skill使用说明中的格式要求 | 修正输入格式,重新输入 |
| 文章生成质量差 | 模型未正确配置或输入内容不合适 | 检查模型配置是否正确,确认输入内容是否合适 | 调整模型配置,优化输入内容 |
| 写作速度慢 | 网络延迟或模型负载过高 | 检查网络连接是否稳定,查看模型负载情况 | 优化网络连接,减轻模型负载 |
| 发布失败 | 微信公众号配置不正确或网络问题 | 检查微信公众号配置是否正确,确认网络连接是否稳定 | 修正微信公众号配置,优化网络连接 |
| 风险项 | 等级 | 防护措施 | 验证方法 |
|---|---|---|---|
| 数据泄露 | 高 | 对外API调用使用HTTPS协议,确保数据传输安全 | 检查API调用是否使用HTTPS |
| API滥用 | 中 | 限制API调用频率,监控异常调用行为 | 检查API调用日志,设置频率限制 |
| 模型未授权访问 | 中 | 使用专用API Key,限制访问权限 | 检查API Key权限,定期更换API Key |
| 内容违规 | 高 | 审查生成的文章内容,防止违规内容发布 | 使用内容审查工具,定期检查文章内容 |
| 网络攻击 | 高 | 部署防火墙,防止DDoS攻击 | 检查防火墙设置,定期进行安全审计 |
| 场景 | 效率提升量化分析 | 差异化对比 |
|---|---|---|
| 新话题开篇写稿 | 比人工撰写减少70%的时间 | 首次实现从选题到初稿的自动化 |
| 续写既有草稿 | 比人工撰写减少60%的时间 | 支持续写功能,提高内容连贯性 |
| 基于业务资料库改写润色 | 比人工撰写减少80%的时间 | 集成业务资料库,提高内容准确性 |
| 多草稿配图占位管理 | 比人工撰写减少50%的时间 | 支持多草稿管理,提高工作效率 |
A1: 公众号长文AI写作,从提纲或话题生成完整初稿,支持改写续写润色与多模型切换。面向微信公众号长文的 AI 写作引擎。从选题卡、提纲或口述话题生成完整初稿, 覆盖改。支持文本指令和结构化参数输入,具体格式参考使用流程章节。
A2: 是的,部分功能需要配置对应平台的API Key。请在依赖说明章节查看具体要求,并通过环境变量安全配置。
A3: 检查命令参数是否正确,确认运行环境支持exec能力。如遇权限问题,请参照错误处理章节排查。
| 操作场景 | 手动耗时 | 自动化耗时 | 效率提升 |
|---|---|---|---|
| 文件解析与提取 | 5-10分钟/个 | <5秒/个 | 60-120x |
| 批量文件处理(100个) | 8-16小时 | <5分钟 | 96-192x |
| API调用与响应解析 | 2-3分钟/次 | <1秒/次 | 120-180x |
| 多接口数据聚合 | 15-30分钟 | <10秒 | 90-180x |
| 命令执行与结果收集 | 3-5分钟/次 | <2秒/次 | 90-150x |
| 重复任务批量执行 | 因任务而异 | 线性缩减 | 5-50x |
| 错误排查与修复 | 10-30分钟 | <30秒 | 20-60x |
| 对比维度 | 公众号长文写作引擎 | 传统手动方式 | 通用脚本工具 |
|---|---|---|---|
| 自动化程度 | 全流程自动 | 完全手动 | 部分自动 |
| 错误处理 | 内置错误恢复 | 依赖人工经验 | 基本try-catch |
| 可复用性 | 参数化配置 | 一次性脚本 | 模板化 |
| 安全合规 | 内置安全检查 | 无安全保障 | 无安全保障 |
| 适用场景 | 公众号长文AI写作,从提纲或话题生成完整初稿,支持改写续写润色与多模型切换。面向 | 通用场景 | 通用场景 |
针对公众号长文写作引擎使用中可能遇到的常见问题,提供以下排查方案:
| 错误类型 | 原因分析 | 解决方案 |
|---|---|---|
| API认证失败(401) | API密钥错误或过期 | 检查密钥配置,重新生成token |
| 接口限流(429) | 请求频率超出限制 | 降低调用频率,启用重试退避策略 |
| 响应超时(504) | 网络延迟或服务端负载过高 | 增加超时阈值,检查网络连接 |
| 文件不存在 | 路径错误或文件未创建 | 检查路径拼写,确认文件已生成 |
| 文件格式不支持 | 扩展名不在支持列表中 | 转换为支持的格式后重试 |
| 权限不足 | 当前用户无读写权限 | 检查文件权限,以管理员身份运行 |
| 命令执行失败 | 参数错误或环境依赖缺失 | 检查命令语法,确认依赖已安装 |
| 进程超时 | 命令执行时间过长 | 增加超时设置,优化命令参数 |
| 网络连接失败 | DNS解析失败或防火墙拦截 | 检查网络配置,确认代理设置 |