首页 / 全部技能 / 内容创作 / canghe-post-to-wechat
内容创作 · freestylefly/canghe-skills

canghe-post-to-wechat

Posts content to WeChat Official Account (微信公众号) via API or Chrome CDP. Supports article posting (文章) with HTML, markdown, or plain text input, and image-text posting (贴图, formerly 图文) with multiple images. Use when user mentions "发布公众号", "post to wechat", "微信公众号", or "贴图/图文/文章".

L5 严管 · 隔离环境与严格审计V2 已复核条款/合规凭据/登录态执行命令联网读写文件Dual-pass Audit
Author freestyleflyGitHub freestylefly/canghe-skills ↗License MIT(仓库根 LICENSE)Commit dd0bf35595
管控等级描述 skill 的能力与建议配套的管控措施,不代表质量或安全认证,也不表示可用或不可用。是否使用由用户和管理者决定。不同 agent 宿主对权限的约束各不相同,请勿假定宿主一定会提供安全兜底。第三方 skill 版权归原作者,使用风险由使用者自行承担。

1实现原理 · 为什么它能做到

双通道发布:要么走微信公众平台 API(wechat-api.ts,草稿接口),要么走浏览器 CDP(wechat-article.ts / wechat-browser.ts 驱动真实 Chrome)。

skills/canghe-post-to-wechat/SKILL.md
Posts content to WeChat Official Account (微信公众号) via API or Chrome CDP.
这里在做什么:SKILL.md 首句即声明两条发布路线;后续 Step 5 让用户选 api(快)或 browser(慢)。

流程是清单式的 Step 0-7,且首次设置被定义为阻断操作:EXTEND.md 未就绪前禁止任何其它步骤或提问。

skills/canghe-post-to-wechat/references/config/first-time-setup.md
**BLOCKING OPERATION**: This setup MUST complete before ANY other workflow steps.
这里在做什么:把偏好收集做成硬门禁,防止 agent 在未配置时贸然进入内容/发布环节。

API 路径的凭证来自 .env:WECHAT_APP_ID / WECHAT_APP_SECRET,三级优先级为环境变量 → 项目 .canghe-skills/.env → 用户 ~/.canghe-skills/.env。

skills/canghe-post-to-wechat/SKILL.md
test -f .canghe-skills/.env && grep -q "WECHAT_APP_ID" .canghe-skills/.env && echo "project"
这里在做什么:Step 5 用 Bash 探测两级 .env 是否存在凭证,缺失则引导用户到公众平台取得 AppID/AppSecret 并写入。

草稿请求体规则被写死:POST draft/add,article_type 取 news/newspic,news 必带 thumb_media_id,并显式携带评论开关字段。

skills/canghe-post-to-wechat/SKILL.md
- Use endpoint: `POST https://api.weixin.qq.com/cgi-bin/draft/add?access_token=ACCESS_TOKEN`
这里在做什么:Step 6 规定 API 报文细节(端点、类型、封面必需、need_open_comment/only_fans_can_comment 解析优先级)。

浏览器路径用真实 Chrome + CDP,并以 --disable-blink-features=AutomationControlled 关闭自动化特征。

skills/canghe-post-to-wechat/scripts/cdp.ts
'--disable-blink-features=AutomationControlled',
这里在做什么:启动参数里主动抹掉自动化标志,属反自动化侦测的技术性绕过(wechat-browser.ts:345 同样存在)。

贴图/图文把图片贴进编辑器:markdown 图片先替换为 WECHATIMGPH_n 占位符,粘贴 HTML 后逐个定位占位符删除并贴入图片。

skills/canghe-post-to-wechat/references/article-posting.md
3. **Paste**: HTML content is pasted into WeChat editor
这里在做什么:Image Handling 四步(Parse→Render→Paste→Replace)是浏览器发文的贴图核心机制。

剪贴板写入依赖内联 Swift/AppKit:脚本把一段 Swift 源码写临时文件再编译执行,以支持图片/富文本剪贴板。

skills/canghe-post-to-wechat/scripts/copy-to-clipboard.ts
await writeFile(swiftPath, getMacSwiftClipboardSource(), 'utf8');
这里在做什么:跨平台剪贴板适配的一环(macOS 侧);Linux/Windows 另有对应实现。

markdown→HTML 转换委派给 canghe-markdown-to-html,命令与主题选项同源。

skills/canghe-post-to-wechat/SKILL.md
npx -y bun ${MD_TO_HTML_SKILL_DIR}/scripts/main.ts <markdown_file> --theme <theme>
这里在做什么:Step 2/3 先发现 canghe-markdown-to-html,再以其 main.ts 转换并解析 JSON(htmlPath/title/summary/contentImages)。

预检脚本检查 Chrome、profile 隔离、Bun、辅助功能、剪贴板、粘贴键、API 凭证与 Chrome 冲突。

skills/canghe-post-to-wechat/SKILL.md
Checks: Chrome, profile isolation, Bun, Accessibility, clipboard, paste keystroke, API credentials, Chrome conflicts.
这里在做什么:check-permissions.ts 是可选的前置体检,失败时 SKILL.md 给出逐项修复指引。

2核心能力

01API 发文(草稿):wechat-api.ts 调微信草稿接口
02浏览器发文(文章):wechat-article.ts 驱动真实 Chrome
03贴图/图文多图发布(最多 9 张,标题/内容超限自动压缩)
04图片占位符 → 真实键击贴图流程(WECHATIMGPH_n 定位替换)
05元数据校验与自动生成(标题/摘要/封面,封面回退 imgs/cover.png)
06评论开关控制(need_open_comment / only_fans_can_comment)
07偏好外置 EXTEND.md(默认主题/发布方式/作者/评论开关/Chrome profile)与首次引导设置
08环境预检(Chrome/权限/剪贴板/键击/凭证/冲突)

3外部依赖

KindDependency / Endpoint
api微信公众平台草稿接口(draft/add)
network微信公众平台(凭证申请/草稿管理页)
clibun(经 npx -y 即时拉取)
cliGoogle Chrome(CDP)+ osascript / xdotool / ydotool(真实键击贴图)

4管控建议与判定依据

建议配套管控措施
面向 Agent
隔离环境,逐次授权
面向管理者
严格授权、全量审计、合规确认
判定依据(文件路径与关键语句摘要)
  • SKILL.md / 脚本参数: 包含绕过自动化检测、关闭宿主沙箱或跳过 SSL 证书校验
  • SKILL.md / 会话存储: 读取或复用浏览器用户登录态与会话 Cookie
  • 本地凭据 / 浏览器配置: 读取用户登录 Cookie/会话/密钥环: 浏览器路径复用共享 Chrome profile 的公众号登录态(会话 cookie 即在 profile 内)
  • scripts/: 执行本地脚本或命令: npx -y bun ${SKILL_DIR}/scripts/wechat-api.ts / wechat-article.ts / wechat-
  • 网络端点: 声明外部网络访问: 微信草稿接口 POST https://api.weixin.qq.com/cgi-bin/draft/add?access_token=ACCESS
  • 本地工作目录: 文件读写与工件输出: 纯文本输入时创建 post-to-wechat/yyyy-MM-dd/[slug].md(mkdir -p + 写文件)
审计说明: (能力/策略级判定,非恶意植入)。两条红轴:① 反自动化侦测的技术性绕过——浏览器路径启动真实 Chrome 并带 --disable-blink-features=AutomationControlled(cdp.ts:220、wechat-browser.ts:345),贴图以 osascript 真实 Cmd+V 键击为首要手段;命中范式红档『反反爬/绕过』(先例 baoyu-post-to-wechat、baoyu-post-to-x、notebooklm-skill)。② 凭证面与外部副作用——API 路径经 .env 读 WECHAT_APP_ID/WECHAT_APP_SECRET 并以此账号调用微信草稿接口(draft/add),浏览器路径复用共享 Chrome 登录态;发布以用户账号产生不可逆副作用。跨 skill 调用 canghe-markdown-to-html 不作传递式抬档,仅写入 reason/risks。

5第二遍独立确认

  • [ok] 双通道实现原理 — SKILL.md 描述、脚本清单与 Step 5/6 命令三处互证 api 与 browser 两条路径。
  • [ok] 反自动化绕过 — 风险扫描在 cdp.ts:220 与 wechat-browser.ts:345 各定位一条 --disable-blink-features=AutomationControlled,判红据成立。
  • [ok] 凭证读取 — SKILL.md 的 .env 探测命令、凭证引导流程与 Config File Locations 三级优先级一致。
  • [ok] 微信 API 端点与报文规则 — draft/add 端点在 SKILL.md Step 6 与 Feature Comparison 中一致出现,含 thumb_media_id 与评论字段规则。
  • [ok] 贴图占位符机制 — article-posting.md 的 Parse/Render/Paste/Replace 四步与 image-text-posting.md 说明自洽。
  • [unlocatable] 主脚本正文细节 — wechat-api.ts / wechat-article.ts / wechat-browser.ts 全文未在 bundle 展开,取 token、DOM 操作等细节以 SKILL.md 与扫描行为据,未代码级复核。
  • [ok] 跨 skill 依赖 canghe-markdown-to-html — SKILL.md Step 2/3 明写发现与调用,属他人 skill 行为,不参与本 skill 判级。
  • [ok] 插件/镜像等供应链线索 — 除 npx -y bun 即时拉取与自带 md 子集外,未在 bundle 内发现第三方镜像或远程包注入。

6结论

  • 双通道覆盖发布全场景:API 快且结构化,浏览器路径可覆盖 API 不支持的贴图/富交互编辑器。
  • 工程化程度高:清单式流程、BLOCKING 首设、环境预检、逐项修复指引,降低使用门槛。
  • 微信生态细节完备:封面必需、评论开关、标题/内容压缩、图片占位符贴图流程。
  • 适合: 需要把 Markdown/HTML/纯文本文章或贴图发布到微信公众号的内容运营者,尤其需要评论开关与贴图流程的自动化场景。
    不适合: 不允许第三方自动化操作公众号账号的人;不愿读取/存放 AppID·AppSecret 或复用浏览器登录态的环境。
    Install Agent-Ready
    ① Verified Mirror 2026-10-10
    Option A · Direct DownloadDownload canghe-post-to-wechat.tar.gz
    sha256: 1efd21eef0ed6ee4…
    Option B · Copy Guide for Agent
    install.json
    agent 读 JSON 指南后会自动从本站下载安装,无需更多说明。
    ② Upstream GitHub
    GitHub Repo ↗
    Pinned to commit dd0bf35595.