跳到主要内容
知仓学习社ZHICANG

aws-wechat-article-main

公众号运营|微信公众号|公众号一条龙|公众号全流程|自媒体运营|wechat automation|content pipeline|AIGC workflow — 公众号一条龙运营总控入口,选题→写稿→审稿→排版→配图→发布串联 8 个子 skill,单条指令完成整篇图文从 0 到上架。面向公…

读凭据联网严重 49 · 高危 0aiworkskills/wechat-article-skills

它会碰到什么

扫了多少23 个文本文件,47 KB
它会碰到什么读凭据联网
命中总数53 处
命中统计严重 49 · 高 0 · 中 0 · 低 4
逐条看命中(30 条严重或高危)
  • 严重 references/articlescreening-schema.md:3cred-paths
    **账号与流程级** → **`.aws-article/config.yaml`**;**本篇发文与发布状态** → **`article.yaml`**;**密钥** → 仓库根 **`aws.env`**。
  • 严重 references/articlescreening-schema.md:9cred-paths
    | 账号、文风、模型 endpoint、微信元数据、发布方式等 | **`.aws-article/config.yaml`** | **`config.example.yaml`**(同目录) |
  • 严重 references/articlescreening-schema.md:15cred-paths
    **优先级**:用户当次说法 > 本篇 **`article.yaml`**(仅本篇字段)> **`.aws-article/config.yaml`**(`custom_*` 覆盖 `default_*`)> 各 skill 内置默认。
  • 严重 references/articlescreening-schema.md:19cred-paths
    ## `.aws-article/config.yaml` 字段(按模板分组)
  • 严重 references/articlescreening-schema.md:25cred-paths
    **配图风格**:**封面**预设目录为 **`cover-styles/`**(内置随 `aws-wechat-article-images` + **`.aws-article/presets/cover-styles/`**);**正文配图**为 **`presets/image-styles/`** 下同名 `
  • 严重 references/branches.md:11cred-paths
    - 必读 `.aws-article/config.yaml`(账号与发布策略);本篇目录内需有 `article.yaml`(或按用户状态后补)。
  • 严重 references/config.example.yaml:2cred-paths
    # Copy to .aws-article/config.yaml; secrets go in aws.env at repo root (see env.example.yaml in this directory)
  • 严重 references/config.example.yaml:29cred-paths
    # Presets live in .aws-article/presets/{type}/; see each directory's README.md
  • 严重 references/config.example.yaml:46cred-paths
    default_cover_image_style: []   # Cover preset names → cover-styles/ (built-in + .aws-article/presets/cover-styles/)
  • 严重 references/config.example.yaml:71cred-paths
    # Business assets (product intros, screenshots, brand images) go in .aws-article/products/{product-name}/
  • 严重 references/config.example.yaml:133cred-paths
    # Assets and presets are stored under .aws-article/; see .aws-article/README.md
  • 严重 references/config.example.yaml:133cred-paths
    # Assets and presets are stored under .aws-article/; see .aws-article/README.md
  • 严重 references/config.example.yaml:137cred-paths
    # Writing spec: see .aws-article/writing-spec.md (copy from writing-spec.example.md in this directory)
  • 严重 references/first-time-setup.md:7cred-paths
    一条龙 / 总览流水线:**先具备仓库根 `aws.env`、`.aws-article/config.yaml`,并通过 `validate_env.py`**,再按总览 [SKILL.md](../SKILL.md) 交互顺序完成 **「2) 全局账号约束」**:**`article_category` / `ta
  • 严重 references/first-time-setup.md:27cred-paths
    ### 1)`.aws-article/config.yaml` 与 `aws.env` 是否存在(仓库根)
  • 严重 references/first-time-setup.md:30cred-paths
    test -f .aws-article/config.yaml && test -f aws.env && echo ok || echo missing
  • 严重 references/first-time-setup.md:34cred-paths
    if ((Test-Path -LiteralPath ".aws-article\config.yaml") -and (Test-Path -LiteralPath "aws.env")) { "ok" } else { "missing" }
  • 严重 references/first-time-setup.md:39cred-paths
    1. **`.aws-article/config.yaml`**:复制 **`skills/aws-wechat-article-main/references/config.example.yaml`** 为 **`.aws-article/config.yaml`**。
  • 严重 references/first-time-setup.md:39cred-paths
    1. **`.aws-article/config.yaml`**:复制 **`skills/aws-wechat-article-main/references/config.example.yaml`** 为 **`.aws-article/config.yaml`**。
  • 严重 references/first-time-setup.md:42cred-paths
    **初始化约束**:新建 **`.aws-article/config.yaml`** 时,**`publish_method` 必须初始化为 `draft`**;除非用户明确指定「不接微信/不走上传」,否则禁止初始化为 `none`。
  • 严重 references/first-time-setup.md:54cred-paths
    (默认读取 **`.aws-article/config.yaml`** 与 **`aws.env`**;可用 `--config`、`--env` 指定路径。)
  • 严重 references/first-time-setup.md:69cred-paths
    - **方式 A(推荐)**:在仓库根用编辑器打开 **`aws.env`** 填入 `WECHAT_1_APPID` / `WECHAT_1_APPSECRET` 等,并在 **`.aws-article/config.yaml`** 填入 `wechat_accounts` / `wechat_api_base` 
  • 严重 references/first-time-setup.md:100cred-paths
    ⛔ **缺少 `.aws-article/config.yaml` 或 `aws.env`**,或 **`validate_env.py` 退出码 1**(微信必要配置不完整):
  • 严重 references/first-time-setup.md:120cred-paths
    - `.aws-article/presets/structures`
  • 严重 references/first-time-setup.md:121cred-paths
    - `.aws-article/presets/closing-blocks`
  • 严重 references/first-time-setup.md:122cred-paths
    - `.aws-article/presets/title-styles`
  • 严重 references/first-time-setup.md:123cred-paths
    - `.aws-article/presets/formatting`
  • 严重 references/first-time-setup.md:124cred-paths
    - `.aws-article/presets/cover-styles`
  • 严重 references/first-time-setup.md:125cred-paths
    - `.aws-article/presets/image-styles`
  • 严重 references/first-time-setup.md:126cred-paths
    - `.aws-article/presets/sticker-styles`

这一栏是扫描器报的事实,不是结论。命中多不等于有毒(安全工具、规则库、示例脚本本来就会包含危险写法),命中少也不等于干净。它和你手上的凭据、文件、网络有什么关系,需要你自己看。

技能内容

公众号运营总览

一键式公众号 AI 内容流水线 —— 从选题到上架 8 个子 skill 串联。

> 套件说明 · aws-wechat-article-* 共 9 个 slug:main / topics / writing / review / formatting / images / publish / assets,外加 aws-wechat-sticker。跨 skill 的相对引用依赖同一 skills/ 根目录;推荐 clawhub sync 一次性全装。源码:<https://github.com/aiworkskills/wechat-article-skills>

Agent 执行:确定本 SKILL.md 所在目录为 {baseDir}

能力披露(Capabilities)

本 skill 是编排入口,真正调用外部 API 的是子 skill(writing / images / publish / sticker / review)。本入口自身只跑 validate_env.py

  • 凭证:读 aws.env 的各 _API_KEYWECHAT_{N}_仅校验键存在且非空,值不用于任何网络请求
  • 网络:本入口无外发;子 skill 有外发,见各自的能力披露
  • 文件读写.aws-article/、本篇 article.yaml
  • shell:仅 {python} {baseDir}/scripts/validate_env.py

> 整体套件会调用外部 LLM、图像与微信 API,并在调用时外发 API key 与本篇内容。

只装 main 一个时仍可做环境校验;进入流水线会因子 skill 缺失而 file not found

配置检查 ⛔ BLOCKING

进入「全局账号约束」「本篇准备」及内容流水线之前,必须按 [首次引导](references/first-time-setup.md) 完整走一遍「检测顺序」——判断 OS、探测 {python}、检查两份配置文件、跑 validate_env.py、创建预设目录。任一步失败不得继续

那份文档同时是唯一的失败引导来源与行为约束(禁止自作主张、不得索取密钥)出处,本文件不再复述。

三个要点在这里说一次:

  • publish_method 默认 draftpublish.py full 只写公众号草稿箱)。用户明确要求「发出去」才改 published,或临时用 full --publish
  • 用户明确不接微信 → 先设 publish_method: none 再过校验,之后 full 会直接跳过。
  • 写作 / 图片模型是可选项,缺失时只警告、不阻断。

主要配置文件(不要混用)

| 文件 | 位置 | 作用 |

|------|------|------|

| aws.env | 仓库根 | 只放密钥*_API_KEYWECHAT_N_APPID / WECHAT_N_APPSECRET(键名见 references/env.example.yaml) |

| .aws-article/config.yaml | 仓库内 | 账号级非密钥配置:文风、选题边界、模型端点、微信槽位与 publish_method(模板见 references/config.example.yaml) |

| article.yaml | 本篇目录 | 本篇发文元数据与状态:image_sourcegenerated / user)、publish_completed(新建 false,发布闭环后 true) |

字段说明见 [articlescreening-schema.md](references/articlescreening-schema.md)。

交互顺序

上一步完成再进下一步。 每步若缺必要输入(目录、元数据、主题、用户选择、发布意图),先问用户并取得确认;除非用户说明基于某个历史任务继续,那就按中间产物判断从哪个阶段接入。

1) 配置自检 ⛔

按上文完成检测顺序,validate_env.py 退出码 0 且预设目录已建,才能进下一步。

  • 退出码 0 + 可选项警告 → 不阻断,直接进下一步,不得要求用户先配写作/图片模型。
  • 退出码 1(微信不完整)→ 见 [branches.md 第三节](references/branches.md)。
  • validate_env.py 不检查 article_category / target_reader / default_author,那三项在下一步查。

2) 全局账号约束 ⛔

打开 .aws-article/config.yaml,检查 article_categorytarget_readerdefault_author trim 后是否非空。

三项齐全 → 静默通过,进下一步。任一为空 → 见 [branches.md 第四节](references/branches.md):逐项问用户、取得当轮答复后写回文件,禁止擅自填写或从别处反推

3) 本篇准备

不了解用户要续写还是新开时,须先问,再进入下面的步骤。禁止默认「最近修改」的目录、未确认就跑写作脚本、或假定沿用上一轮路径。

用户直接给了 drafts/… 路径 → 走 [branches.md 第一节「我已有目录」](references/branches.md)。

涉及用户自身业务时(产品 / 软件 / 服务):先 ls .aws-article/products/ 看有无相关目录,有就必读根下 *.md 作底稿、优先复用 images/ 里的现成配图;流程中产生的业务介绍类内容,主动引导用户存回 .aws-article/products/{产品名}/。详见 [assets skill](../aws-wechat-article-assets/SKILL.md)。

新建一篇(严格子顺序,勿跳步)

  1. 写作意图BLOCKING:必须问清本篇要写什么(主题、角度、体裁或目标)。用户只想「帮我出选题」时须明确确认后再按无方向模式处理。

⛔ 用户未回答本步之前,禁止 web_search、禁止执行 topics 的调研、禁止批量生成选题或标题。

用户已在当次对话说清楚的,口头确认一句即可,不必重复盘问。

  1. 定题与 slug:确定发文标题(用户从候选中选或自定义),据此生成 slug,目录名 YYYYMMDD-标题slug
  2. 建目录与 article.yaml:创建 {drafts_root}/YYYYMMDD-标题slug/drafts_rootconfig.yaml 为准,默认 drafts/)。

必须用 {baseDir}/../aws-wechat-article-publish/scripts/article_init.py 初始化,不要手写。 手写一定会漏字段——实测三篇连着漏掉 image_medium,配图媒介的「避开上一篇」因此永远查不到东西。

  1. 本篇预设单选落盘(必做):以 config.yaml 为来源,按 custom_ > default_ 结合本篇主题,为下列字段各选单一预设写回 article.yaml单元素列表

default_structuredefault_closing_blockdefault_title_styledefault_format_presetdefault_format_schemedefault_cover_image_styledefault_sticker_style

default_article_image_style 不在此列,保持多元素候选池原样——正文形态是每个图位各选一个,收敛成一个等于整篇配图用同一种形态。实测三篇都被钉成「对比说明」,而实际三张图是实证、流程图、流程图。

选模版与配色不要只看名字:先跑 format.py --list-themes,按「适合 / 不适合」对本篇题材,再按配色说明选一档。也不要连着几篇选同一套——同一天发的几篇如果模版、配色、封面形态全同,读者一眼看出是套模板。开工前扫一眼最近几篇:

   grep -h "^default_format_preset:" -A1 $(ls -d drafts/*/ | sort -r | head -3 | sed 's#$#article.yaml#') 2>/dev/null

续写 / 重入的处理见 [branches.md 第五节](references/branches.md)。

  1. 脚本输出一律落盘 ⛔:调本套件任何脚本都把 stdout 与 stderr 一起重定向到本篇目录下的 <环节>.log,不要只看屏幕。
   {python} {baseDir}/../aws-wechat-article-images/scripts/image_create.py generate … \
     > drafts/YYYYMMDD-slug/cover-generation.log 2>&1

约定文件名:cover-generation.logimage-generation.logformat.logpublish.log。这些日志是出问题时唯一的凭据,关键信息只在里面——端点忽略比例把封面腰斩、模版从哪个文件加载、配色有没有应用、正文图传成了哪个 URL,屏幕上滚过去就没了。实测靠 cover-generation.log 里那行「已按 2.35:1 居中裁切: 1024x1024 → 1024x436」才定位到封面为什么难看。

4) 内容流水线

选题 → 写稿 → 审稿(内容审) → 排版 → 配图 → 审稿(终审)

| 步骤 | 子 skill | 读取 | 产出 |

|------|---------|------|------|

| 选题 | [topics](../aws-wechat-article-topics/SKILL.md) | config.yaml、web_search | topic-card.md research.md |

| 写稿 | [writing](../aws-wechat-article-writing/SKILL.md) | topic-card.mdconfig.yaml | draft.md |

| 内容审 | [review](../aws-wechat-article-review/SKILL.md) | draft.mdconfig.yaml | review.mdarticle.md |

| 排版 | [formatting](../aws-wechat-article-formatting/SKILL.md) | article.mdconfig.yaml | article.html |

| 配图 | [images](../aws-wechat-article-images/SKILL.md) | article.mdconfig.yaml | imgs/cover.* |

| 终审 | review | article.htmlimgs/ | review.md |

内容审产出的 article.md 定稿须先满足 [review 第 5 步](../aws-wechat-article-review/SKILL.md)(文末 {embed:…},BLOCKING)再排版。

topics / web_search 须在 3-1(用户已说明写什么,或已确认只帮出选题)之后才可执行。

确认轮次:全局三键非空时静默通过;publish_method 合法时不重复盘问;多个待确认项合并为一轮。用户意图明确时理想轮次为 1 轮(确认标题/摘要)+ 写完展示。配图在用户无特殊要求时按默认风格自动执行,不单独确认。

5) 发布

config.yamlpublish_method 为准:draftpublish.py full 只写草稿箱;publishedfull --publish → 再提交发布;nonefull 无操作退出。

前两档需微信凭证配齐,建议先跑 publish.py check-wechat-env。完成后输出小结与回执,目录按需移至 published_root

用户说「草稿箱里图不满意要换图重发」→ 见 [branches.md 第二节](references/branches.md)。

中间产物门禁 ⛔

进入下一步前先检查本步所需产物;缺什么补什么,禁止跳步并宣称已完成

| 阶段 | 必要产物 | 缺失时 |

|------|---------|--------|

| 写稿完成 | article.md 存在且非空 | 继续写稿或回 writing |

| 排版完成 | article.html 存在,且由当前 article.md 重新生成 | 先重跑 formatting |

| 配图完成 | 有 cover.(png/jpg/jpeg/webp)article.mdarticle.html 都不含 placeholder | 先跑 images 生成并替换 |

| 发布就绪 | article.yamltitle/author/digest/content_source;发布环境检查通过 | 先补元数据或环境 |

| 发布闭环 | 发布命令成功且回执可用 | 才允许写回 publish_completed: true |

禁止仅凭单一信号(如「草稿创建成功」)就宣称全流程完成。正文仍有 placeholder 时,状态必须标记为「草稿已提交,正文配图未完成」。

路由

默认与长文发文相关时优先 main,由本 skill 按步编排;不要因为用户说了「写」「选题」「发」就跳过 main 直连子 skill。

何时可直连子 skill:用户明确只要该步产物且不隐含「从零到发出」整条链。

| 用户说法 | 路由到 |

|---------|--------|

| 从0开始、一条龙、完整流程、帮我发一篇、发到公众号、今天写什么好(要成文并发)、不确定从哪步开始 | main |

| 「能不能发」且含代为发布、或要从稿到发出整条收尾 | main |

| 只要选题卡 / 标题 / 摘要 / 排期 / 系列策划 | topics |

| 只要在已有选题或草稿上写稿 / 改写 / 润色 / 续写 | writing |

| 只要审稿 / 校对 / 合规清单 | review |

| 只要排版 / 换主题 / 转 HTML | formatting |

| 只要长文封面或正文配图 | images |

| 只要执行发布 / 提交 / 群发 | publish |

| 贴图、图片消息、多图推送、九宫格 | sticker |

表述含糊、可能还要后续发文的,仍从 main 问起。单步子 skill 的边界见 [branches.md 第六节](references/branches.md)。

分支与补充规则

不在主路径上的情况全部写在 [references/branches.md](references/branches.md):已有目录分支、发布后换图重发、退出码 1 的处理、全局三键为空时怎么问、续写重入的预设处理、单步子 skill 的边界。

想直接用这个技能?

本站把开放许可(MIT / Apache 等)的技能按仓库打包整理到网盘,点一下转存到你自己的网盘,不用一个个从 GitHub 拉。许可未声明的技能只给原始仓库链接,不打包。