canghe-post-to-wechat by freestylefly/canghe-skills
npx skills add https://github.com/freestylefly/canghe-skills --skill canghe-post-to-wechat匹配用户语言:使用用户使用的语言进行回应。如果用户使用中文,则用中文回应。如果用户使用英文,则用英文回应。
代理执行:确定此 SKILL.md 目录为 SKILL_DIR,然后使用 ${SKILL_DIR}/scripts/<name>.ts。
| 脚本 | 用途 |
|---|---|
scripts/wechat-browser.ts | 图文消息发布 |
scripts/wechat-article.ts | 通过浏览器发布文章 |
scripts/wechat-api.ts | 通过 API 发布文章 |
广告位招租
在这里展示您的产品或服务
触达数万 AI 开发者,精准高效
scripts/check-permissions.ts | 验证环境与权限 |
使用 Bash 检查 EXTEND.md 是否存在(优先级顺序):
# 首先检查项目级
test -f .canghe-skills/canghe-post-to-wechat/EXTEND.md && echo "project"
# 然后检查用户级(跨平台:$HOME 在 macOS/Linux/WSL 上有效)
test -f "$HOME/.canghe-skills/canghe-post-to-wechat/EXTEND.md" && echo "user"
┌────────────────────────────────────────────────────────┬───────────────────┐ │ 路径 │ 位置 │ ├────────────────────────────────────────────────────────┼───────────────────┤ │ .canghe-skills/canghe-post-to-wechat/EXTEND.md │ 项目目录 │ ├────────────────────────────────────────────────────────┼───────────────────┤ │ $HOME/.canghe-skills/canghe-post-to-wechat/EXTEND.md │ 用户主目录 │ └────────────────────────────────────────────────────────┴───────────────────┘
┌───────────┬───────────────────────────────────────────────────────────────────────────┐ │ 结果 │ 操作 │ ├───────────┼───────────────────────────────────────────────────────────────────────────┤ │ 找到 │ 读取、解析、应用设置 │ ├───────────┼───────────────────────────────────────────────────────────────────────────┤ │ 未找到 │ 运行首次设置 (references/config/first-time-setup.md) → 保存 → 继续 │ └───────────┴───────────────────────────────────────────────────────────────────────────┘
EXTEND.md 支持:默认主题 | 默认发布方法 (api/browser) | 默认作者 | 默认开启评论开关 | 默认仅粉丝可评论开关 | Chrome 配置文件路径
最低支持键(不区分大小写,接受 1/0 或 true/false):
| 键 | 默认值 | 映射 |
|---|---|---|
default_author | 空 | 当 CLI/前置元数据未提供 author 时的后备值 |
need_open_comment | 1 | draft/add 请求中的 articles[].need_open_comment |
only_fans_can_comment | 0 | draft/add 请求中的 articles[].only_fans_can_comment |
推荐的 EXTEND.md 示例:
default_theme: default
default_publish_method: api
default_author: 苍何
need_open_comment: 1
only_fans_can_comment: 0
chrome_profile_path: /path/to/chrome/profile
值优先级:
首次使用前,建议运行环境检查。用户可以选择跳过。
npx -y bun ${SKILL_DIR}/scripts/check-permissions.ts
检查项:Chrome、配置文件隔离、Bun、辅助功能、剪贴板、粘贴按键、API 凭据、Chrome 冲突。
如果任何检查失败,根据项目提供修复指导:
| 检查项 | 修复方法 |
|---|---|
| Chrome | 安装 Chrome 或设置 WECHAT_BROWSER_CHROME_PATH 环境变量 |
| 配置文件目录 | 确保 ~/.local/share/wechat-browser-profile 可写 |
| Bun 运行时 | `curl -fsSL https://bun.sh/install |
| 辅助功能 (macOS) | 系统设置 → 隐私与安全性 → 辅助功能 → 启用终端应用 |
| 剪贴板复制 | 确保 Swift/AppKit 可用 (macOS Xcode CLI 工具:xcode-select --install) |
| 粘贴按键 (macOS) | 与上述辅助功能修复方法相同 |
| 粘贴按键 (Linux) | 安装 xdotool (X11) 或 ydotool (Wayland) |
| API 凭据 | 按照步骤 5 中的引导设置,或手动在 .canghe-skills/.env 中设置 |
适用于带有多张图片(最多 9 张)的短消息:
npx -y bun ${SKILL_DIR}/scripts/wechat-browser.ts --markdown article.md --images ./images/
npx -y bun ${SKILL_DIR}/scripts/wechat-browser.ts --title "标题" --content "内容" --image img.png --submit
复制此清单,并在完成项目时勾选:
发布进度:
- [ ] 步骤 0:加载偏好设置 (EXTEND.md)
- [ ] 步骤 1:确定输入类型
- [ ] 步骤 2:检查 markdown-to-html 技能
- [ ] 步骤 3:转换为 HTML
- [ ] 步骤 4:验证元数据(标题、摘要、封面)
- [ ] 步骤 5:选择方法并配置凭据
- [ ] 步骤 6:发布到微信
- [ ] 步骤 7:报告完成情况
检查并加载 EXTEND.md 设置(参见上文的偏好设置部分)。
关键:如果未找到,请在执行任何其他步骤或提问之前完成首次设置。
解析并存储这些默认值以供后续步骤使用:
default_authorneed_open_comment (默认 1)only_fans_can_comment (默认 0)| 输入类型 | 检测方法 | 操作 |
|---|---|---|
| HTML 文件 | 路径以 .html 结尾,文件存在 | 跳转到步骤 4 |
| Markdown 文件 | 路径以 .md 结尾,文件存在 | 继续到步骤 2 |
| 纯文本 | 不是文件路径,或文件不存在 | 保存为 markdown,然后执行步骤 2 |
纯文本处理:
mkdir -p "$(pwd)/post-to-wechat/$(date +%Y-%m-%d)"
# 保存内容到:post-to-wechat/yyyy-MM-dd/[slug].md
3. 继续作为 markdown 文件处理
Slug 示例:
understanding-ai-modelsai-future (为 slug 翻译成英文)跳过条件:输入是 .html 文件
技能发现:
# 检查 canghe-markdown-to-html 是否存在
test -f skills/canghe-markdown-to-html/SKILL.md && echo "found"
| 结果 | 操作 |
|---|---|
| 找到 | 读取其 SKILL.md,继续到步骤 3 |
| 多个技能 | 询问用户选择 |
| 未找到 | 显示安装建议 |
当未找到时:
未找到 markdown-to-html 技能。
建议安装:
https://github.com/JimLiu/canghe-skills/blob/main/skills/canghe-markdown-to-html/SKILL.md
选项:
A) 取消 - 先安装该技能
B) 继续 - 手动提供 HTML 文件
跳过条件:输入是 .html 文件
| 主题 | 描述 |
|---|---|
default | 经典主题 - 传统排版,标题居中带底边,二级标题白字彩底 |
grace | 优雅主题 - 文字阴影,圆角卡片,精致引用块 |
simple | 简洁主题 - 现代极简风,不对称圆角,清爽留白 |
npx -y bun ${MD_TO_HTML_SKILL_DIR}/scripts/main.ts <markdown_file> --theme <theme>
htmlPath, title, author, summary, contentImages检查从步骤 3 提取的元数据(或直接 HTML 输入的 HTML 元标签)。
| 字段 | 如果缺失 |
|---|---|
| 标题 | 提示:"输入标题,或按 Enter 键从内容自动生成" |
| 摘要 | 提示:"输入摘要,或按 Enter 键自动生成(推荐用于 SEO)" |
| 作者 | 使用后备链:CLI --author → 前置元数据 author → EXTEND.md default_author |
自动生成逻辑:
封面图片检查(article_type=news 必需):
--cover 则使用。coverImage, featureImage, cover, image)。imgs/cover.png。询问发布方法(除非在 EXTEND.md 或 CLI 中指定):
| 方法 | 速度 | 要求 |
|---|---|---|
api (推荐) | 快 | API 凭据 |
browser | 慢 | Chrome,登录会话 |
如果选择 API - 检查凭据:
# 检查项目级
test -f .canghe-skills/.env && grep -q "WECHAT_APP_ID" .canghe-skills/.env && echo "project"
# 检查用户级
test -f "$HOME/.canghe-skills/.env" && grep -q "WECHAT_APP_ID" "$HOME/.canghe-skills/.env" && echo "user"
如果凭据缺失 - 引导设置:
未找到微信 API 凭据。
获取凭据:
1. 访问 https://mp.weixin.qq.com
2. 转到:开发 → 基本配置
3. 复制 AppID 和 AppSecret
保存到哪里?
A) 项目级:.canghe-skills/.env (仅限此项目)
B) 用户级:~/.canghe-skills/.env (所有项目)
选择位置后,提示输入值并写入 .env:
WECHAT_APP_ID=<用户输入>
WECHAT_APP_SECRET=<用户输入>
API 方法:
npx -y bun ${SKILL_DIR}/scripts/wechat-api.ts <html_file> [--title <title>] [--summary <summary>] [--author <author>] [--cover <cover_path>]
draft/add 载荷规则:
POST https://api.weixin.qq.com/cgi-bin/draft/add?access_token=ACCESS_TOKENarticle_type:news (默认) 或 newspicnews,包含 thumb_media_id (封面是必需的)need_open_comment (默认 1)only_fans_can_comment (默认 0)author 解析:CLI --author → 前置元数据 author → EXTEND.md default_author如果脚本参数未暴露两个评论字段,仍要确保最终的 API 请求体包含解析后的值。
浏览器方法:
npx -y bun ${SKILL_DIR}/scripts/wechat-article.ts --html <html_file>
对于 API 方法,包含草稿管理链接:
微信发布完成!
输入:[类型] - [路径]
方法:API
主题:[主题名称]
文章:
• 标题:[标题]
• 摘要:[摘要]
• 图片:[N] 张内联图片
• 评论:[开启/关闭],[仅粉丝/所有用户]
结果:
✓ 草稿已保存到微信公众号
• media_id:[media_id]
后续步骤:
→ 管理草稿:https://mp.weixin.qq.com (登录后进入「内容管理」→「草稿箱」)
创建的文件:
[• post-to-wechat/yyyy-MM-dd/slug.md (如果是纯文本)]
[• slug.html (已转换)]
对于浏览器方法:
微信发布完成!
输入:[类型] - [路径]
方法:浏览器
主题:[主题名称]
文章:
• 标题:[标题]
• 摘要:[摘要]
• 图片:[N] 张内联图片
结果:
✓ 草稿已保存到微信公众号
创建的文件:
[• post-to-wechat/yyyy-MM-dd/slug.md (如果是纯文本)]
[• slug.html (已转换)]
| 主题 | 参考 |
|---|---|
| 图文参数,自动压缩 | references/image-text-posting.md |
| 文章主题,图片处理 | references/article-posting.md |
| 功能 | 图文 | 文章 (API) | 文章 (浏览器) |
|---|---|---|---|
| 纯文本输入 | ✗ | ✓ | ✓ |
| HTML 输入 | ✗ | ✓ | ✓ |
| Markdown 输入 | 标题/内容 | ✓ (通过技能) | ✓ (通过技能) |
| 多张图片 | ✓ (最多 9 张) | ✓ (内联) | ✓ (内联) |
| 主题 | ✗ | ✓ | ✓ |
| 自动生成元数据 | ✗ | ✓ | ✓ |
默认封面后备 (imgs/cover.png) | ✗ | ✓ | ✗ |
评论控制 (need_open_comment, only_fans_can_comment) | ✗ | ✓ | ✗ |
| 需要 Chrome | ✓ | ✗ | ✓ |
| 需要 API 凭据 | ✗ | ✓ | ✗ |
| 速度 | 中等 | 快 | 慢 |
对于 API 方法:
.canghe-skills/.env 中设置对于浏览器方法:
对于 Markdown 转换:
canghe-markdown-to-html)配置文件位置(优先级顺序):
<cwd>/.canghe-skills/.env~/.canghe-skills/.env| 问题 | 解决方案 |
|---|---|
| 没有 markdown-to-html 技能 | 从建议的 URL 安装 canghe-markdown-to-html |
| 缺少 API 凭据 | 按照步骤 5 中的引导设置 |
| 访问令牌错误 | 检查 API 凭据是否有效且未过期 |
| 未登录 (浏览器) | 首次运行会打开浏览器 - 扫描二维码登录 |
| 未找到 Chrome | 设置 WECHAT_BROWSER_CHROME_PATH 环境变量 |
| 标题/摘要缺失 | 使用自动生成或手动提供 |
| 没有封面图片 | 添加前置元数据封面或在文章目录中放置 imgs/cover.png |
| 评论默认值错误 | 检查 EXTEND.md 键 need_open_comment 和 only_fans_can_comment |
| 粘贴失败 | 检查系统剪贴板权限 |
通过 EXTEND.md 进行自定义配置。有关路径和支持的选项,请参阅偏好设置部分。
每周安装次数
103
仓库
GitHub 星标数
182
首次出现
2026 年 2 月 24 日
安全审计
安装于
github-copilot102
gemini-cli102
codex102
kimi-cli102
cursor102
opencode102
通过 LiteLLM 代理让 Claude Code 对接 GitHub Copilot 运行 | 高级变通方案指南
40,000 周安装