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 "贴图/图文/文章".
By freestylefly · 487 installs
npx skills add freestylefly/canghe-skills --skill canghe-post-to-wechat
Source repository · Upstream listing
Post to WeChat Official Account
Language
Match user's language : Respond in the same language the user uses. If user writes in Chinese, respond in Chinese. If user writes in English, respond in English.
Script Directory
Agent Execution : Determine this SKILL.md directory as SKILL DIR , then use ${SKILL DIR}/scripts/<name .ts .
Script Purpose
scripts/wechat browser.ts Image text posts (图文)
scripts/wechat article.ts Article posting via browser (文章)
scripts/wechat api.ts Article posting via API (文章)
scripts/check permissions.ts Verify environment & permissions
Preferences (EXTEND.md)
Use Bash to check EXTEND.md existence (priority order):
┌────────────────────────────────────────────────────────┬───────────────────┐
│ Path │ Location │
├────────────────────────────────────────────────────────┼───────────────────┤
│ .canghe skills/canghe post to wechat/EXTEND.md │ Project directory │
├────────────────────────────────────────────────────────┼───────────────────┤
│ $HOME/.canghe skills/canghe post to wechat/EXTEND.md │ User home │
└────────────────────────────────────────────────────────┴───────────────────┘
┌───────────┬───────────────────────────────────────────────────────────────────────────┐
│ Result │ Action │
├───────────┼───────────────────────────────────────────────────────────────────────────┤
│ Found │ Read, parse, apply settings │
├───────────┼───────────────────────────────────────────────────────────────────────────┤
│ Not found │ Run first time setup ([references/config/first time setup.md](references/config/first time setup.md)) → Save → Continue │
└───────────┴───────────────────────────────────────────────────────────────────────────┘
EXTEND.md Supports : Default theme Default publishing method (api/browser) Default author Default open comment switch Default fans only comment switch Chrome profile path
First time setup: [references/config/first time setup.md](references/config/first time setup.md)
Minimum supported keys (case insensitive, accept 1/0 or true/false ):
Key Default Mapping
default author empty Fallback for author when CLI/frontmatter not provided
need open comment 1 articles[].need open comment in draft/add request
only fans can comment 0 articles[].only fans can comment in draft/add request
Recommended EXTEND.md example :
Value priority :
1. CLI arguments
2. Frontmatter
3. EXTEND.md
4. Skill defaults
Pre flight Check (Optional)
Before first use, suggest running the environment check. User can skip if they prefer.
Checks: Chrome, profile isolation, Bun, Accessibility, clipboard, paste keystroke, API credentials, Chrome conflicts.
If any check fails , provide fix guidance per item:
Check Fix
Chrome Install Chrome or set WECHAT BROWSER CHROME PATH env var
Profile dir Ensure ~/.local/share/wechat browser profile is writable
Bun runtime curl fsSL https://bun.sh/install \ bash
Accessibility (macOS) System Settings → Privacy & Security → Accessibility → enable terminal app
Clipboard copy Ensure Swift/AppKit available (macOS Xcode CLI tools: xcode select install )
Paste keystroke (macOS) Same as Accessibility fix above
Paste keystroke (Linux) Install xdotool (X11) or ydotool (Wayland)
API credentials Follow guided setup in Step 5, or manually set in .canghe skills/.env
Image Text Posting (图文)
For short posts with multiple images (up to 9):
See [references/image text posting.md](references/image text posting.md) for details.
Article Posting Workflow (文章)
Copy this checklist and check off items as you complete them:
Step 0: Load Preferences
Check and load EXTEND.md settings (see Preferences section above).
CRITICAL : If not found, complete first time setup BEFORE any other steps or questions.
Resolve and store these defaults for later steps:
default author
need open comment (default 1 )
only fans can comment (default 0 )
Step 1: Determine Input Type
Input Type Detection Action
HTML file Path ends with .html , file exists Skip to Step 4
Markdown file Path ends with .md , file exists Continue to Step 2
Plain text Not a file path, or file doesn't exist Save to markdown, then Step 2
Plain Text Handling :
1. Generate slug from content (first 2 4 meaningful words, kebab case)
2. Create directory and save file:
3. Continue processing as markdown file
Slug Examples :
"Understanding AI Models" → understanding ai models
"人工智能的未来" → ai future (translate to English for slug)
Step 2: Check Markdown to HTML Skill
Skip if : Input is .html file
Skill Discovery :
Result Action
Found Read its SKILL.md, continue to Step 3
Multiple skills AskUserQuestion to choose
Not found Show installation suggestion
When Not Found :
Step 3: Convert Markdown to HTML
Skip if : Input is .html file
1. Ask theme preference (unless specified in EXTEND.md or CLI):
Theme Description
default 经典主题 传统排版,标题居中带底边,二级标题白字彩底
grace 优雅主题 文字阴影,圆角卡片,精致引用块
simple 简洁主题 现代极简风,不对称圆角,清爽留白
2. Execute conversion (using the discovered skill):
3. Parse JSON output to get: htmlPath , title , author , summary , contentImages
Step 4: Validate Metadata
Check extracted metadata from Step 3 (or HTML meta tags if direct HTML input).
Field If Missing
Title Prompt: "Enter title, or press Enter to auto generate from content"
Summary Prompt: "Enter summary, or press Enter to auto generate (recommended for SEO)"
Author Use fallback chain: CLI author → frontmatter author → EXTEND.md default author
Auto Generation Logic :
Title : First H1/H2 heading, or first sentence
Summary : First paragraph, truncated to 120 characters
Cover Image Check (required for article type=news ):
1. Use CLI cover if provided.
2. Else use frontmatter ( coverImage , featureImage , cover , image ).
3. Else check article directory default path: imgs/cover.png .
4. Else fallback to first inline content image.
5. If still missing, stop and request a cover image before publishing.
Step 5: Select Publishing Method and Configure
Ask publishing method (unless specified in EXTEND.md or CLI):
Method Speed Requirements
api (Recommended) Fast API credentials
browser Slow Chrome, login session
If API Selected Check Credentials :
If Credentials Missing Guide Setup :
After location choice, prompt for values and write to .env :
Step 6: Publish to WeChat
API method :
draft/add payload rules :
Use endpoint: POST https://api.weixin.qq.com/cgi bin/draft/add?access token=ACCESS TOKEN
article type : news (default) or newspic
For news , include thumb media id (cover is required)
Always resolve and send:
need open comment (default 1 )
only fans can comment (default 0 )
author resolution: CLI author → frontmatter author → EXTEND.md default author
If script parameters do not expose the two comment fields, still ensure final API request body includes resolved values.
Browser method :
Step 7: Completion Report
For API method , include draft management link:
For Browser method :
Detailed References
Topic Reference
Image text parameters, auto compression [references/image text posting.md](references/image text posting.md)
Article themes, image handling [references/article posting.md](references/article posting.md)
Feature Comparison
Feature Image Text Article (API) Article (Browser)
Plain text input ✗ ✓ ✓
HTML input ✗ ✓ ✓
Markdown input Title/content ✓ (via skill) ✓ (via skill)
Multiple images ✓ (up to 9) ✓ (inline) ✓ (inline)
Themes ✗ ✓ ✓
Auto generate metadata ✗ ✓ ✓
Default cover fallback ( imgs/cover.png ) ✗ ✓ ✗
Comment control ( need open comment , only fans can comment ) ✗ ✓ ✗
Requires Chrome ✓ ✗ ✓
Requires API credentials ✗ ✓ ✗
Speed Medium Fast Slow
Prerequisites
For API method :
WeChat Official Account API credentials
Guided setup in Step 5, or manually set in .canghe skills/.env
For Browser method :
Google Chrome
First run: log in to WeChat Official Account (session preserved)
For Markdown conversion :
A markdown to html skill (e.g., canghe markdown to html )
If not installed, the workflow will suggest installation
Config File Locations (priority order):
1. Environment variables
2. <cwd /.canghe skills/.env
3. ~/.canghe skills/.env
Troubleshooting
Issue Solution
No markdown to html skill Install canghe markdown to html from suggested URL
Missing API credentials Follow guided setup in Step 5
Access token error Check if API credentials are valid and not expired
Not logged in (browser) First run opens browser scan QR to log in
Chrome not found Set WECHAT BROWSER CHROME PATH env var
Title/summary missing Use auto generation or provide manually
No cover image Add frontmatter cover or place imgs/cover.png in article directory
Wrong comment defaults Check EXTEND.md keys need open comment and only fans can comment
Paste fails Check system clipboard permissions
Extension Support
Custom configurations via EXTEND.md. See Preferences section for paths and supported options.