Skill flagged — suspicious patterns detected

ClawHub Security flagged this skill as suspicious. Review the scan results before using.

公众号长文 AI 写稿

v1.0.17

公众号写稿|微信公众号写稿|AI 写作|长文写作|公众号文章|文章润色|改写续写|公众号风格|AIGC|article generation|content creation|DeepSeek|GPT|Claude — 公众号长文 AI 写作,从话题或提纲生成完整初稿,支持改写、续写、润色、开头结尾优化,可调 D...

0· 27·0 current·0 all-time
bymarsatwechat@aiworkskills
Security Scan
Capability signals
Requires sensitive credentials
These labels describe what authority the skill may exercise. They are separate from suspicious or malicious moderation verdicts.
VirusTotalVirusTotal
Benign
View report →
OpenClawOpenClaw
Suspicious
medium confidence
Purpose & Capability
The skill implements a WeChat article writing workflow and a local script that calls OpenAI‑compatible LLM endpoints — this matches the name/description. However: (1) the prefix 'aws' and the .aws-article directory naming may misleadingly suggest dependence on AWS cloud services when none are required; (2) the SKILL.md and scripts require the repository-wide 9‑skill suite to be installed for correct operation, but the registry metadata does not declare this cross-skill dependency. These are coherence/clarity issues rather than direct maliciousness.
Instruction Scope
The SKILL.md confines instructions to writing workflow steps: checking presence of the 9 related skills, reading/writing .aws-article/config.yaml and per-article article.yaml, selecting drafts directories, and invoking the included write.py script or returning prompts. It does not instruct reading unrelated system files or exfiltrating data to unexpected endpoints. It does require file I/O and network calls appropriate for generating and saving drafts.
Install Mechanism
There is no external download/install spec; the skill is instruction‑plus-local-code only. No remote installers, archives, or third‑party package fetches are present in the provided files, so install mechanism risk is low.
!
Credentials
The script expects credentials/config in aws.env (WRITING_MODEL_API_KEY) and reads .aws-article/config.yaml, but the registry metadata declared no required environment variables or primary credential. This mismatch is significant: users will need to provide an API key in aws.env for LLM calls, yet that requirement isn't surfaced. Additionally, the script will parse the whole aws.env file; if users store other secrets there, the repository will read them — increase caution. Permissions in skill.json (filesystem, network, shell) are broad but consistent with the skill's behavior; nonetheless they amplify risk if secrets are present.
Persistence & Privilege
The skill does not request forced always:true or claim permanent global presence. It reads/writes repository files and drafts as part of normal operation; that is expected for a writing tool. The skill.json lists filesystem/network/shell permissions — broad but proportionate for a tool that runs scripts and calls LLM endpoints. It does not attempt to modify other skills' configs.
What to consider before installing
This skill appears to do what it says (generate/rewriting WeChat articles) but there are a few things to check before installing: - Expect to provide an LLM API key: the script uses WRITING_MODEL_API_KEY in aws.env and .aws-article/config.yaml for model/base_url. The registry metadata did not declare this — add the key only if you trust the skill. - Review aws.env before use: the script parses the entire aws.env file. Do not put unrelated secrets (AWS keys, tokens) in aws.env unless you want the repository to read them. - Inspect scripts/write.py yourself (it’s included) to confirm network endpoints and behavior. If you rely on a specific provider, set base_url and model explicitly in .aws-article/config.yaml. - The skill expects a 9‑skill suite; follow SKILL.md guidance or install the whole suite if you want full functionality. If you only need the script prompt output, consider using the prompt subcommand which does not call LLM. - Because skill.json grants filesystem/network/shell access, run this in a sandbox or with limited privileges if you are unsure, and verify the GitHub source (the SKILL.md points to a repo) before trusting it. If you want, I can point out the exact lines in scripts/write.py that read aws.env and perform network calls, or summarize the network endpoints the script will call based on your .aws-article/config.yaml.

Like a lobster shell, security has layers — review code before you run it.

ai-writingvk970jwnj217e4123be8fw5r64n85av2raigcvk970jwnj217e4123be8fw5r64n85av2rchinesevk970jwnj217e4123be8fw5r64n85av2rclaude-codevk970jwnj217e4123be8fw5r64n85av2rcontentvk970jwnj217e4123be8fw5r64n85av2rcopywritingvk970jwnj217e4123be8fw5r64n85av2rlatestvk970jwnj217e4123be8fw5r64n85av2rwechatvk970jwnj217e4123be8fw5r64n85av2r
27downloads
0stars
5versions
Updated 1h ago
v1.0.17
MIT-0

长文写作

公众号长文 AI 写作引擎 —— 从提纲或话题生成完整初稿,支持改写、续写、润色,多模型可切。

套件说明 · 本 skill 属 aws-wechat-article-* 一条龙套件(共 9 个 slug,入口 aws-wechat-article-main)。跨 skill 的相对引用依赖同一 skills/ 目录,建议一并 clawhub install 全套。源码:https://github.com/aiworkskills/wechat-article-skills

前置依赖 ⛔ 套件必须装齐

aws-wechat-article-* 一条龙套件的 9 个 skill 互相引用首次引导、环境校验与规则文档。单独安装任一 skill 无法正常工作,必须装齐 9 个:

aws-wechat-article-main
aws-wechat-article-topics
aws-wechat-article-writing
aws-wechat-article-review
aws-wechat-article-formatting
aws-wechat-article-images
aws-wechat-article-publish
aws-wechat-article-assets
aws-wechat-sticker

Agent:进入下方工作流前,先检查当前 skills/ 目录下上述 9 个子目录是否都存在。

若任一缺失 → 停止本 skill 工作流,不得尝试代替用户跑脚本或继续;按下述话术回复用户:

本套件需 9 个 skill 都装齐才能使用。检测到缺少:<列出缺失项>。请执行:

# macOS / Linux / Git Bash
for slug in aws-wechat-article-main aws-wechat-article-topics aws-wechat-article-writing aws-wechat-article-review aws-wechat-article-formatting aws-wechat-article-images aws-wechat-article-publish aws-wechat-article-assets aws-wechat-sticker; do
  clawhub install "$slug"
done
# Windows PowerShell
'aws-wechat-article-main','aws-wechat-article-topics','aws-wechat-article-writing','aws-wechat-article-review','aws-wechat-article-formatting','aws-wechat-article-images','aws-wechat-article-publish','aws-wechat-article-assets','aws-wechat-sticker' | ForEach-Object { clawhub install $_ }

装完再回本 skill 让我继续。

9 个全部存在 → 按下方工作流继续。

路由

从零发文、一条龙、完整流程 → aws-wechat-article-main

配置检查 ⛔

任何操作执行前,必须首次引导 执行其中的 「检测顺序」。检测通过后才能进行以下操作(或用户明确书面确认「本次不检查」):

从选题到发布的前置规则(阻断、禁止擅自降级、「本次例外」等)见 aws-wechat-article-main/SKILL.md;本 skill 只描述写稿步骤。

写作模型writing_modelproviderbase_urlmodel 等)在 .aws-article/config.yamlWRITING_MODEL_API_KEY 在仓库根 aws.env。键名对照 {baseDir}/../aws-wechat-article-main/references/env.example.yaml

交互约定:须遵守 main 的智能体行为约束——通过环境校验且获用户明确「本次例外」时,不得默认改由当前 Agent 代写并假装流程完整。环境检查未通过时,只按 首次引导 处理配置选项,不要在同一条回复里混入写稿、草稿路径或多草稿选择;配置闭环后再进入本 skill 工作流。

工作流

写稿进度:
- [ ] 第0步:⛔ [首次引导 · 检测顺序](../aws-wechat-article-main/references/first-time-setup.md)
- [ ] 第1步:⛔ **`.aws-article/config.yaml`** 中 **`article_category`**、**`target_reader`**、**`default_author`**(trim 后)须**均非空**;缺则**逐项问用户**、用户确认后再**写回文件**;**禁止**从 **`article.yaml`** 等擅自抄录(与 [main](../aws-wechat-article-main/SKILL.md)「2) 全局账号约束」一致);**须先于**续旧/新开
- [ ] 第2步:⛔ **在不了解**用户要**续写既有草稿**还是**新开一篇**时,**须先询问**并确定本篇 `drafts/…` 目录,**再**进入以下步骤;**禁止**未确认就调用写作脚本(见 [main](../aws-wechat-article-main/SKILL.md)「3) 本篇准备」开头)
- [ ] 第3步:读取本篇约束与写作规范;**写稿前先按下文「说明文档资源库」判断是否查阅/是否传 `--reference`**
- [ ] 第4步:发布方式(`publish_method`)⛔
- [ ] 第5步:确定输入与写作方式
- [ ] 第6步:写作
- [ ] 第7步:自检与修正
- [ ] 第8步:展示并等待用户确认 ⛔

说明:第 2 步在用户已明确路径或意图(例如直接给出 drafts/…、或明确说「新开一篇」)时可不再重复盘问

多草稿 / 未闭环:与第 2 步同原则——不了解续写/新开时须先问禁止自动选中某一 drafts/… 跑写作脚本。

确认轮次优化

以下步骤可合并或静默通过以减少交互轮次:

  1. Step 1(全局三键):若 article_categorytarget_readerdefault_author 已非空 → 静默通过,无需再确认。
  2. Step 4(publish_method):若已是 draft/published/none(合法值)→ 静默通过(规则第3条已允许)。
  3. 合并询问:当需要同时确认 Step 2(新篇/续写)和 Step 4(发布意图)时,合并为一轮提问
  4. 配图确认:若用户已给出明确主题且未提出风格要求,images skill 可按默认风格自动生成,无需单独确认配图方案

最少轮次:用户意图明确时(如给出主题 + "写一篇文章"),理想轮次为 1 轮(确认标题/摘要)+ 写完后展示结果

第1步:全局账号三键(.aws-article/config.yaml)⛔

在续旧/新开询问之前,打开 .aws-article/config.yaml,检查 article_categorytarget_readerdefault_author 是否 trim 后均非空。任一项缺失:逐项询问用户,取得用户当轮明确答复后再写回该文件,再进入第 2 步。禁止article.yaml、其它草稿或仓库文件静默推断并写盘;可把从某文件读到的内容仅作建议展示,须用户同意后再写入。禁止跳过本步。禁止仅在对话里确认却不落盘。与 main「2) 全局账号约束」一致。

第2步:续旧稿还是新稿(不了解时须先问)⛔

当不清楚用户是要续写 drafts/ 下某篇进行中草稿还是新开一篇时:须先询问(可列出候选目录),待用户选定后再进入第 3 步。须在第 1 步全局三键已落盘之后执行已明确时跳过本步询问。

目录命名:新开一篇时,目录名必须YYYYMMDD-标题slug(如 drafts/20260406-wechat-article-skills/)。YYYYMMDD 为当日日期,slug 为小写、连字符分隔的标题缩写。禁止省略日期前缀

第3步:读取本篇约束与写作规范

⛔ 关键字段不得空跑:在调用 write.py 或按合并约束让 Agent 代写之前,确认合并后的 article_categorytarget_reader 均为非空字符串(trim 后);default_author 非空 本篇 article.yamlauthor 非空。若任一项不满足,须暂停写稿,引导用户补全 .aws-article/config.yaml(及/或本篇 article.yaml),并实际写入文件——不要仅用对话表格收集「读者」却不落盘。全局三键的优先检查顺序见 main「2) 全局账号约束」;若第 1 步已正确落盘,此处多为合并 article.yaml 覆盖后的复核。

约束从哪来write.py 会先读全局 .aws-article/config.yaml,再读本篇目录下的 article.yaml,把两边的键叠成一张表用来生成写作提示——若同一键在两份文件里都有,以本篇 article.yaml 为准。字段分工见 articlescreening-schema.md

  1. .aws-article/config.yaml文风、结构预设、禁用词、字数、embeds与「写什么、怎么写」有关的顶层字段会进入这张表。
    writing_model / image_model 两段只给脚本连 API 用(地址、模型名等),整段放进给大模型的「写作说明」里,以免把技术配置当成正文要求。
  2. 本篇 article.yaml:本篇标题、作者、摘要、publish_completed 等;与 config 重名的键覆盖 config。

write.py 在仓库根执行,按输入 .md 所在目录找到本篇 article.yaml;叠完后的约束表不能为空(一般只要 config.yaml 里已有账号/文风等即可)。publish_completed:新建或补全本篇 article.yaml 时须为 false;本篇发布真正结束后由 publish skill 改为 truepublish.py 不修改此字段

default_structure / default_closing_block 指向的 预设正文来自 .aws-article/presets/(及用户目录下同名 presets),与配置中的文件主名对应。两者在本篇 article.yaml 中必须为单元素列表 [名](或空列表 []);write.py 对预设选择仅读取本篇 article.yaml,不再在执行阶段从 custom_* / default_* 候选池推断。

多候选自动选择:当 default_structure(或 default_closing_block)含多个候选时,Agent 须:

  1. 读取每个候选预设文件(如 .aws-article/presets/structures/<名>.md),了解其适用场景;
  2. 结合本篇主题 / 选题卡内容,判断最匹配的一个;
  3. 将该名写入 article.yaml 同键为单元素列表 [名]
  4. 然后再调用 write.py禁止盲选第一个——须基于内容匹配。若无法判断,向用户展示候选及说明后请用户选择。

另加载 .aws-article/writing-spec.md(如有)。

字段用途
target_reader读者画像 → 深度、用词、案例
tone调性 → 语气与句式
writing_style结构表达方式(口语/书面/故事/方法论等)

配置中其它与写稿相关的键(如 topic_directionforbidden_wordsheading_densitytarget_word_count)一并写入约束。

说明文档资源库(写稿前)⛔

目的:减轻垂直领域表述含糊或臆测;默认路径为 .aws-article/assets/stock/references/(按文件命名存放说明类 Markdown;项目另有约定目录时一并视为同一类资源库)。

写作只有 两种方式,说明文档用法如下(二选一,勿混用同一条命令里的职责)。

方式一:智能体直接写稿

  1. 写稿前:查看资源库(及项目约定目录)里是否有与本篇主题、选题卡明显相关的说明文档。
  2. 写作时:可引用其中内容并转化为账号文风;没有相关文档就不引用,不阻断写稿
  3. draft.md:凡正文中实际引用或依据了某份说明文档的,在该处表述之后用括号附上该文件的仓库相对路径(路径须真实存在);未引用则不必加括号
  4. 配图占位(硬性):当 image_source 不为 user(合并 config.yaml + 本篇 article.yaml)时,按 image_density 生成配图占位;若未配置或为空,默认每节一图。格式必须为 ![类型名:画面内容](placeholder),每个占位独占一行封面占位放在标题之前;类型名与细则见 references/structure-template.md「配图标记」。
  5. article.md 定稿:面向读者发布,正文中不保留上述括号路径(与审稿/排版约定一致)。

方式二:write.py 写稿

  1. 运行脚本前:同样先查看/判断资源库是否有与主题相关的 .md(判断标准与方式一一致)。
  2. 有相关文档:在仓库根执行 write.py 时传入 --reference <路径>(可重复,最多 5 个;路径须在 .aws-article/assets/stock/references/ 下,详见脚本与 usage)。脚本将全文注入系统提示「参考资料库」,并约定模型在依据处标注资料路径。
  3. 无相关文档不传 --reference,仅靠选题卡与合并配置写稿即可。
  4. 若写作 API 因上下文/token 超限失败,减少 --reference 篇数或换更短文档后重试。

禁止:将与主题无关的文档硬塞进正文;伪造说明文档中不存在的事实。

第4步:发布意图(publish_method)⛔

调用 write.py 或进入第6步写作之前,确认 .aws-article/config.yaml 中的 publish_method(与 发布 skillarticlescreening-schema.md 一致):

取值含义(向用户说明时用 plain 语言)
draft默认定稿后若走 publish.py full,只把图文写入公众号草稿箱,不自动「发出去」。
published定稿后 publish.py full 会在创建草稿后再提交发布(异步)。也可用 full --publish 单次强制带发布。
none询问微信配置后用户明确不想填写:写入 publish_method: nonepublish.py full直接跳过、不调微信;写稿/审稿/排版等照常。

规则

  1. 默认保持或写入 publish_method: draft,除非用户明确要对外发布 → 改为 published明确不填微信、不走上传 → 改为 none
  2. 微信:提醒发布需要 aws.env;用户拒绝填写 → none,不要代跑 publish.py full(跑了也会无操作退出)。
  3. 若已是 draft / published / none(小写):可不重复盘问

禁止:在 publish_method 非法时调用 write.py;禁止未经同意默认 published

第5步:确定输入与写作方式

输入topic-card.md / 用户提供的提纲或素材 / 用户口述主题;并已按上文「说明文档资源库」完成判断(直接写稿则已决定是否引用;走 write.py 则已决定是否传 --reference)。

写作方式(优先级)

  1. 优先:调用第三方模型write.py draft/rewrite/continue)— 依赖 config.yamlwriting_model + aws.envWRITING_MODEL_API_KEY(见 usage.md
  2. 自动降级:模型未配置(退出码 2)→ 先 write.py prompt <mode> <input> 获取提示词 JSON,再由 Agent 按相同提示词直接写,无须「本次例外」确认
  3. 故障降级:调用失败(退出码 1)→ 按下方重试/排错逻辑

必须告知用户当前使用的方式

  • 已配置且调用脚本 → ℹ️ 使用 write.py 调用第三方模型({model})
  • 模型未配置自动降级 → ℹ️ 写作模型未配置,本次由当前对话模型直接写稿(使用相同写作约束)
  • 故障降级 Agent 直写 → ℹ️ 第三方 API 不可用,本次由当前对话模型代写(使用相同写作约束),并说明原因

write.py 退出码处理(智能体必选分支)

运行脚本后须把终端里的具体报错原样摘要给用户(或引用关键行),勿只说「调用失败」。

退出码与报错类型分支处理:

类型判断线索智能体动作
未配置(退出码 2)stderr 含 [NO_MODEL]自动降级:运行 write.py prompt <mode> <input> 获取提示词 JSON({"system_prompt": "...", "user_prompt": "..."})→ Agent 按该 system_promptuser_prompt 写文章 → 输出到 -o 指定路径或展示给用户。无须用户确认或「本次例外」。
网络类(退出码 1)超时、连接失败、URLError网络错误:、临时性 502/503 等必须自动再试 1 次(可简短等待后重跑同一命令,并告知用户「正在重试」)。第二次仍为网络类失败 → 改用 write.py prompt 获取提示词后由 Agent 按相同约束代写;必须明确告知:第三方 API 网络不可用,本次由对话模型代写。
配置/凭证类(退出码 1)401/403、Key 无效、未找到写作约束、YAML 解析失败等不要为「省事」自动降级掩盖问题。列出须检查项config.yamlwriting_modelaws.envWRITING_MODEL_API_KEY、本篇目录是否有 article.yaml 等),请用户修正后重跑 write.py。若用户明确打字愿意本次改由 Agent 代写,再按 main「本次例外」处理并留痕。
业务/内容类(退出码 1)4xx 中除鉴权外(如 400 参数)、模型返回空等将 API 返回体摘要给用户;可先根据提示改 model / 请求参数再试一次;仍失败则与用户商定是否 Agent 代写。

Agent 代写时提示词获取:无论哪种降级路径,Agent 代写前都应先运行 write.py prompt <mode> <input>--instruction 按需传入),取回与 write.py 调第三方模型时完全相同system_promptuser_prompt,确保写作约束一致。

禁止:配置明显错误时静默改用 Agent 写稿却不说明;网络降级后不告知用户「本次未走第三方模型」。

第6步:写作

写作时必须遵循第3步读取的 target_readertonewriting_style(来自合并后的约束):深度与用词贴合读者,语气贴合调性,结构与表达方式贴合文章风格。

用户供图分支(image_source: user

  • 用户图片须先放入本篇 imgs/;随后由智能体读图分析并生成或补全 img_analysis.md(可用 user_image_prepare.py 先生成模板再填写)。未落盘 img_analysis.md 不得调用 write.py,否则脚本会报错退出。
  • img_analysis.md 是写稿时配图与章节顺序的唯一依据write.py 会把它并入提示,按「建议章节 / 推荐用途」把每张图放到合理位置(可重排章节以匹配叙事)。
  • img_analysis.md 中“推荐用途:封面”必须且只能有 1 处;否则不得写稿。
  • 写稿时直接使用用户图片路径(imgs/xxx.png),不再输出 placeholder
  • image_source 只允许:generated / user禁止写 user_provided
  • 该字段由智能体按流程动态更新:默认 generated;进入用户供图替换流程时写为 user

状态切换规则(article.yaml

  • 新建文章默认:image_source: generatedpublish_completed: false
  • 当进入“用户上传图片替换/重写”流程时:将 image_source 改为 user,并将 publish_completed 置回 false(表示需重新发布闭环)。
  • 重新发布成功且有回执后:再写回 publish_completed: true

文章结构:按优先级加载结构预设:

  1. 用户指定(「用清单体结构」)
  2. 本篇 article.yamldefault_structure(单元素列表)
  3. .aws-article/presets/structures/ 下的文件
  4. 内置默认:references/structure-template.md

文末区块:按优先级加载:

  1. 本篇 article.yamldefault_closing_block 指定的文件(单元素列表)
  2. 合并约束中 closing_block 非空字符串(若有)
  3. fallback:内置默认文末(分割线 + 一句关注引导):---\n觉得有用?点个关注,持续获取优质内容。

默认模式下,写作时在需要图的位置插入配图标记 ![类型名:画面内容](placeholder)(规则见 write.py 系统提示与 references/structure-template.md「配图标记」)。

调用第三方模型时的脚本用法:references/usage.md

第7步:自检与修正

按写作规范做一轮自检(禁用词、段落长度、开头吸睛度、小标题密度),发现问题自动修正。

配图占位自检(默认模式):当 image_source != user 时,核对 draft.md 是否满足 image_density(未配置则按每节一图);缺失或格式不合法时,先补齐/修正 ![类型名:画面内容](placeholder) 再进入审稿或配图步骤。

续写补充(中间产物门禁)

  • 续写新增 ![...](placeholder) 时,必须把该占位计入“待配图清单”(供 images 步骤生成与替换)。
  • 进入发布相关步骤前,必须复核本篇正文产物:article.md / article.html 若仍含 placeholder,只能标记为“正文配图未完成”,禁止宣称发布闭环完成。

第8步:展示并等待用户确认 ⛔

过程文件

读取产出
topic-card.md.aws-article/config.yaml、本篇 article.yamldraft.md(含配图标记);本 skill 可能更新 publish_method(发出去 → published;不填微信 → none;默认 draft);新建/补全 article.yaml 时保持 publish_completed: false

Comments

Loading comments...