wechat-studio
npx skills add https://github.com/chouheiwa/wechat-studio --skill wechat-studio
Agent 安装分布
Skill 文档
WeChat Studio
å¾®ä¿¡å ¬ä¼å·å 容åä½å ¨æµç¨å·¥å ·ï¼Markdown æçãåä½å©æãAI å»çãå¾çä¸ä¼ ãè稿åå¸ã
â ï¸ è·¯å¾è§£æï¼éè¦ï¼
æ¬ skill çèæ¬ä½äº SKILL.md æå¨ç®å½ä¸ãæ§è¡ä»»ä½èæ¬ä¹åï¼å¿ é¡»å ç¡®å®æ¬æä»¶çå®é è·¯å¾ï¼å¹¶ä»¥æ¤æ¨å¯¼èæ¬ç®å½ã
è§åï¼ ä»¥ä¸ææ¡£ä¸ææ $SKILL_DIR å ä½ç¬¦åºæ¿æ¢ä¸ºæ¬ SKILL.md æä»¶æå¨çç®å½è·¯å¾ã
ä¾å¦ï¼å¦ææ¬æä»¶ä½äº /Users/xxx/Desktop/AI/skills/wechat-studio/SKILL.mdï¼å $SKILL_DIR = /Users/xxx/Desktop/AI/skills/wechat-studioã
# é¦å
ç¡®å®èæ¬ç®å½ï¼åºäº SKILL.md æå¨ä½ç½®ï¼
SKILL_DIR="<æ¬ SKILL.md æä»¶æå¨ç®å½çç»å¯¹è·¯å¾>"
åè½ä¸ï¼Markdown â 微信 HTML
convert.mjs ç´æ¥å° Markdown 渲æä¸ºå¸¦ä¸»é¢æ ·å¼ç微信å
¬ä¼å· HTMLï¼æ é AI åä¸ã
# è¾åºå°æä»¶
node "$SKILL_DIR/scripts/convert.mjs" -i article.md -t autumn-warm -o article.html
# è¾åºå° stdout
node "$SKILL_DIR/scripts/convert.mjs" -i article.md -t spring-fresh
å¾çä¼èªå¨æ¿æ¢ä¸º <!-- IMG:0 -->ã<!-- IMG:1 --> å ä½ç¬¦ï¼æ Markdown ä¸åºç°é¡ºåºç¼å·ã
å¯ç¨ä¸»é¢:
| ä¸»é¢ | 说æ |
|---|---|
autumn-warm |
ç§æ¥æå ï¼æ©è²è°ï¼æ¸©ææ²»æï¼é»è®¤ï¼ |
spring-fresh |
æ¥æ¥æ¸ æ°ï¼ç»¿è²è°ï¼æ¸ ç½æå¿« |
ocean-calm |
æµ·æ´éè°§ï¼èè²è°ï¼æ²ç¨³ä¸ä¸ |
åè½äºï¼é£æ ¼åä½ï¼Dan Koeï¼
è§¦åæ¡ä»¶ï¼ ç¨æ·æå°”ç¨ Dan Koe 飿 ¼å”ã”帮æåä¸ç¯æç« “ã”åä¸ç¯å ³äºâ¦çæç« “
ç´æ¥æä»¥ä¸è§èçææç« ï¼æ éè¿è¡èæ¬ã
Dan Koe æ ¸å¿åä½ DNA
- 身份ä¼å äºè¡å¨ â ä½ ä¸æ¯ç¼ºä¹èªå¾ï¼èæ¯ä½ å å¿æ·±å¤å¹¶ä¸æ³è¦ä½ å´ä¸è¯´æ³è¦çä¸è¥¿
- ææè¡ä¸ºé½æç®ç â æå»¶ä¸æ¯æï¼æ¯ä½ å¨ä¿æ¤èªå·±å åæç§ææ§
- æ¹åä»è®¤ç¥å¼å§ â çæ¸ é®é¢æ¬è´¨ï¼è¡å¨èªç¶è·ä¸
- å对ç²ç®ä¸ç²¾ â å¨è¿ä¸ªæ¶ä»£ï¼å¤å å ´è¶£æ¯è¶ è½åï¼ä¸æ¯ç¼ºé·
- åä½å³æè â è¡¨è¾¾ä¸æ¸ æ¥ï¼è¯´æè¿æ²¡æ³æ¸ æ¥
æç« ç»æï¼6 é¨åï¼
第ä¸é¨åï¼é©åå¼åºï¼å 150 åï¼ï¼éä¸ç§ï¼
- åå认åï¼ä½ 大æ¦ç伿¾å¼ä½ çæ°å¹´ç®æ ãæ²¡å ³ç³»ï¼å¤§å¤æ°äººé½ä¼â¦
- èªææé²ï¼ä¸å¹´åï¼ææ¯å¤©å·¥ä½ 14 å°æ¶ï¼å´è¶æ¥è¶ç©·â¦
- å常è¯å®£è¨ï¼”èªå¾”æ¯è¿ä¸ªæ¶ä»£æå¤§çéªå±ä¹ä¸â¦
- ç´å»çç¹ï¼å¦æä½ 乿è¿è¿ç§æè§ââææç¥é该åä»ä¹ï¼å°±æ¯åä¸å°â¦
第äºé¨åï¼çç¹å ±é¸£ â æ¿è®¤èªå·±ä¹æåæ ·é®é¢ï¼æè¿°å¤±è´¥ç»åï¼å¼åºæ·±å±åå
第ä¸é¨åï¼ä»·å¼æ¿è¯º â å享 N ä¸ªæ ¸å¿è®¤ç¥ï¼åç¥è¯»è 读å®çæ¶ç
第åé¨åï¼æ ¸å¿å 容ï¼3-7 个模åï¼ï¼æ¯æ¨¡åï¼
## ä¸ã[æ é¢ï¼ç¹åºæ ¸å¿æ´è§]
> "åè¨æéå¥"
> ââåºå¤
[大夿°äººçé误çè§£]
ä½çç¸æ¯ï¼[æ£ç¡®çè§£]
举个ä¾åï¼[å
·ä½æ¡ä¾]
*æä»¥å
³é®ä¸æ¯[表é¢åæ³]ï¼èæ¯[æ·±å±åå]ã*
第äºé¨åï¼éå¥æç¼ â è³å° 3-5 å¥å¯åç¬æå½çéå¥ï¼ç¨ æä½ æ è®°
第å é¨åï¼èµæç»å°¾ï¼éä¸ç§ï¼
- è¡å¨æåï¼å»ºè®®ä¸ä¸ªå¯ç«å³æ§è¡çå ·ä½å°è¡å¨
- æèé®é¢ï¼çä¸ä¸ªå¼å深度æèçé®é¢
- 认ç¥å级ï¼ç®æ´éè¿°æ ¸å¿ä¿¡æ¯ï¼å¼ºè°è¯»è å·²è·å¾ç认ç¥
æ ¼å¼è§è
- æ¯æ®µä¸è¶ è¿ 3 è¡ï¼éè¦è§ç¹åç¬ææ®µ
- ç²ä½ï¼å
³é®æ¦å¿µ | æä½ï¼æ ¸å¿éå¥ |
ããï¼ç¹æ®æ¦å¿µ - å¥åç¨å¥å·æå¥å¶é å¼å¸æï¼ç¨ç ´æå·ââå¶é åé¡¿
è¯æ°è¦æ±
â åæåè天ï¼ä¸åèå¸è®²è¯¾ â æ¢è¯´å¤§å¤æ°äººä¸æ¿è¯´ççè¯ â æ¿è®¤èªå·±çå±éå失败 â ç¨å ·ä½ä¾åæ¯ææ½è±¡è§ç¹ â å± é«ä¸´ä¸çè¯´ææ â 空æ´çå±å¿å£å·ï¼”å æ²¹ï¼ä½ å¯ä»¥çï¼”ï¼ â è¿åº¦æ£è½é
åè½ä¸ï¼å¾çä¸ä¼
ä¸ä¼ æ¬å°å¾ç
# åå¼
node "$SKILL_DIR/scripts/upload-image.mjs" /path/to/image.jpg
# æ¹éï¼JSON æä»¶ï¼å
容为路å¾å符串æ°ç»ï¼
node "$SKILL_DIR/scripts/upload-image.mjs" --json images.json
# 强å¶éæ°ä¸ä¼ ï¼è·³è¿ç¼åï¼
node "$SKILL_DIR/scripts/upload-image.mjs" --json images.json --no-cache
batch JSON æ ¼å¼ï¼images.jsonï¼ï¼
["images/photo1.jpg", "images/photo2.png", "images/photo3.webp"]
åå¼ è¾åºï¼
{ "success": true, "media_id": "xxx", "wechat_url": "https://mmbiz..." }
æ¹éè¾åºï¼JSON æ°ç»ï¼ï¼
[
{ "file": "img1.jpg", "success": true, "media_id": "xxx", "wechat_url": "https://mmbiz..." },
{ "file": "img2.png", "success": true, "media_id": "yyy", "wechat_url": "https://mmbiz..." }
]
ä¸è½½å¨çº¿å¾çå¹¶ä¸ä¼
# åå¼
node "$SKILL_DIR/scripts/download-upload.mjs" "https://example.com/image.png"
# æ¹éï¼JSON æä»¶ï¼å
容为 URL å符串æ°ç»ï¼
node "$SKILL_DIR/scripts/download-upload.mjs" --json urls.json
# 强å¶éæ°ä¸ä¼
node "$SKILL_DIR/scripts/download-upload.mjs" --json urls.json --no-cache
batch JSON æ ¼å¼ï¼urls.jsonï¼ï¼
["https://a.com/1.jpg", "https://b.com/2.png"]
å¾çä¼èªå¨å缩ï¼è¶ è¿ 5MB æ¶ï¼åä¸ä¼ ãç¸åå 容çå¾çä¼å½ä¸æ¬å°ç¼åï¼è·³è¿éå¤ä¸ä¼ ã
ç¼åæä»¶ä½äº ~/.config/wechat-studio/upload-cache.jsonï¼ä»¥æä»¶ MD5 为 keyã
æ¿æ¢ HTML å ä½ç¬¦
ä¸ä¼ 宿åï¼ç¨ replace-images.mjs å° HTML ä¸ç <!-- IMG:N --> èªå¨æ¿æ¢ä¸ºå¯¹åºç微信å¾ç <img> æ ç¾ï¼
node "$SKILL_DIR/scripts/replace-images.mjs" \
--html article.html \
--result upload-result.json \
--output article-final.html
é项ï¼
--htmlï¼è¾å ¥ HTML æä»¶è·¯å¾--resultï¼ä¸ä¼ ç»æ JSON æä»¶ï¼ç±--outputåæ°çæï¼--outputï¼è¾åº HTML æä»¶è·¯å¾ï¼ä¸æå®åè¾åºå° stdoutï¼
å ä½ç¬¦ <!-- IMG:0 --> 对åºç»ææ°ç»ç¬¬ 0 项ï¼<!-- IMG:1 --> 对åºç¬¬ 1 项ï¼ä»¥æ¤ç±»æ¨ã
åè½åï¼åå»ºå¾æè稿
Step 1: åå¤è稿 JSON æä»¶ï¼draft.jsonï¼
{
"articles": [{
"title": "æç« æ é¢",
"content": "<p>宿´ HTML å
容ï¼å·²æ¿æ¢å¾ç URLï¼</p>",
"thumb_media_id": "å°é¢å¾çç´ æ ID",
"author": "ä½è
å",
"digest": "æç« æè¦ï¼æå¤ 120 å",
"need_open_comment": 0,
"only_fans_can_comment": 0
}]
}
Step 2: å建è稿
node "$SKILL_DIR/scripts/create-draft.mjs" draft.json
è¾åºï¼
{ "success": true, "media_id": "è稿ç media_id" }
åè½äºï¼å建å°ç»¿ä¹¦ï¼å¾çå¸ï¼
# æå®æ¬å°å¾ç
node "$SKILL_DIR/scripts/create-image-post.mjs" \
-t "æ é¢" -c "æè¿°æå" --images photo1.jpg,photo2.jpg
# ä» Markdown æä»¶æåå¾ç
node "$SKILL_DIR/scripts/create-image-post.mjs" \
-t "æ é¢" -m article.md
# é¢è§ï¼ä¸å®é
å建ï¼
node "$SKILL_DIR/scripts/create-image-post.mjs" \
-t "æ é¢" --images photo1.jpg --dry-run
è¾åºï¼
{ "success": true, "media_id": "xxx", "image_count": 2, "uploaded_ids": ["id1", "id2"] }
åè½å ï¼AI å»çï¼Humanizer-zhï¼
è§¦åæ¡ä»¶ï¼ ç¨æ·æå°”å»é¤ AI ç迹”ã”让æç« æ´èªç¶”ã”humanize”
ç´æ¥æä»¥ä¸è§èå¤çææ¬ï¼æ éè¿è¡èæ¬ã
æ ¸å¿ 5 æ¡è§å
- å é¤å¡«å çè¯ â å»é¤å¼åºç½åå¼ºè°æ§ææè¯
- æç ´å ¬å¼ç»æ â é¿å äºå 对æ¯ãæå§æ§å段
- ååèå¥ â æ··åå¥åé¿åº¦ï¼ä¸¤é¡¹ä¼äºä¸é¡¹
- 信任读è â ç´æ¥éè¿°ï¼è·³è¿è½¯ååæææå¼å¯¼
- å é¤éå¥ â 妿å¬èµ·æ¥åå¯å¼ç¨çè¯å¥ï¼éåå®
22 ç§ AI å使¨¡å¼
å 容模å¼ï¼
- è¿åº¦å¼ºè°æä¹ï¼æ å¿çãè§è¯äºãæ¯â¦çä½ç°ï¼
- è¿åº¦å¼ºè°ç¥å度ï¼åå¤å¼ç¨åªä½/ä¸å®¶ä½æ å ·ä½æ¥æºï¼
- 以 -ing ç»å°¾çè¤æµ åæï¼çªåº/强è°/ç¡®ä¿â¦ï¼
- å®£ä¼ å¹¿åå¼è¯è¨ï¼å 满活åçã令人å¹ä¸ºè§æ¢çï¼
- 模ç³å½å ï¼è¡ä¸æ¥åæ¾ç¤ºãä¸å®¶è®¤ä¸ºï¼æ å ·ä½æ¥æºï¼
- å ¬å¼å”ææä¸æªæ¥å±æ”
è¯è¨æ¨¡å¼ï¼ 7. è¿åº¦ä½¿ç¨ AI è¯æ±ï¼æ¤å¤ãè³å ³éè¦ãæ·±å ¥æ¢è®¨ãæ ¼å±ï¼ 8. é¿å 使稔比ï¼ä½ä¸º/代表/æ å¿çï¼ 9. å¦å®å¼ææ¯ï¼ä¸ä» â¦èä¸â¦ï¼ 10. 䏿®µå¼æ³åè¿åº¦ä½¿ç¨ 11. 廿æ¢è¯ï¼ä¸»äººå ¬â主è¦è§è²âä¸å¿äººç©âè±éï¼ 12. èåèå´ï¼ä» X å° Yï¼ä½ä¸å¨åä¸å°ºåº¦ï¼
飿 ¼æ¨¡å¼ï¼ 13. ç ´æå·è¿åº¦ä½¿ç¨ 14. ç²ä½è¿åº¦ä½¿ç¨ 15. å èæ é¢åç´å表ï¼ç²ä½æ é¢+åå·ç项ç®ç¬¦å·ï¼ 16. 表æ 符å·è£ 饰æ é¢
å¡«å è¯ï¼ 17. å¡«å çè¯ï¼ä¸ºäºå®ç°è¿ä¸ç®æ ãå¨è¿ä¸ªæ¶é´ç¹ï¼ 18. è¿åº¦éå®ï¼å¯ä»¥æ½å¨å°å¯è½è¢«è®¤ä¸ºï¼ 19. éç¨ç§¯æç»è®ºï¼æªæ¥çèµ·æ¥å æãæ¿å¨äººå¿çæ¶ä»£ï¼
交æµçè¿¹ï¼ 20. åä½äº¤æµç迹ï¼å¸æè¿å¯¹æ¨æå¸®å©ãå½ç¶ï¼ï¼ 21. ç¥è¯æªæ¢æ¥æå 责声æ 22. è°åªå躬å±èçè¯æ°
å¤çåè¾åºæ ¼å¼
# 人æ§ååçææ¬
[éååçææ¬]
# ä¿®æ¹è¯´æ
[ç®è¦è¯´æä¸»è¦ä¿®æ¹]
# è´¨éè¯å
| 维度 | å¾å | 说æ |
|------|------|------|
| ç´æ¥æ§ | x/10 | |
| èå¥ | x/10 | |
| 信任度 | x/10 | |
| ç宿§ | x/10 | |
| ç²¾ç¼åº¦ | x/10 | |
| **æ»å** | **x/50** | |
é ç½®
éè¦å¾®ä¿¡åè¯æè½ä½¿ç¨ä¸ä¼ /è稿åè½ï¼convertãåä½ãå»çæ éåè¯ï¼ã
æ¹å¼ä¸ï¼ç¯å¢åé
export WECHAT_APP_ID=your_appid
export WECHAT_SECRET=your_secret
æ¹å¼äºï¼é ç½®æä»¶ï¼æä¼å 级ä»é«å°ä½ï¼
./wechat-studio.yaml # é¡¹ç®æ¬å°ï¼æé«ä¼å
级ï¼
~/.wechat-studio.yaml # ç¨æ·ç®å½
~/.config/wechat-studio/config.yaml # å
¨å±é
ç½®
wechat:
appid: your_appid
secret: your_secret
# å¾çå缩é项ï¼å¯éï¼
compress_images: true # æ¯å¦èªå¨å缩ï¼é»è®¤ true
max_image_width: 1920 # æå¤§å®½åº¦ï¼pxï¼ï¼é»è®¤ 1920
max_image_size: 5242880 # æå¤§æä»¶å¤§å°ï¼åèï¼ï¼é»è®¤ 5MB
http_timeout: 30 # HTTP è¶
æ¶ï¼ç§ï¼ï¼é»è®¤ 30
å ¸å工使µ
åå¸ä¸ç¯ Markdown æç«
æ¹å¼ä¸ï¼ä¸é®åå¸ï¼æ¨èï¼
# 1. æ¹éä¸ä¼ æç« å¾çï¼ç»æåå
¥ JSON
node "$SKILL_DIR/scripts/upload-image.mjs" --json images.json --output upload-result.json
# 2. ä¸é®ï¼Markdown â æ¸²æ â æ¿æ¢å¾ç â æç» HTML
node "$SKILL_DIR/scripts/publish.mjs" -i article.md -r upload-result.json -t autumn-warm -o article-final.html
# 3. ä¸ä¼ å°é¢å¾
node "$SKILL_DIR/scripts/upload-image.mjs" cover.jpg
# 4. å建è稿ï¼åå¤ draft.jsonï¼å¡«å
¥ article-final.html å
容åå°é¢ media_idï¼
node "$SKILL_DIR/scripts/create-draft.mjs" draft.json
æ¹å¼äºï¼åæ¥æä½
# 1. Markdown â HTMLï¼ç´æ¥æ¸²æï¼æ é AIï¼
node "$SKILL_DIR/scripts/convert.mjs" -i article.md -t autumn-warm -o article.html
# 2. æ¹éä¸ä¼ æç« å¾çï¼ç»æåå
¥ JSON
node "$SKILL_DIR/scripts/upload-image.mjs" --json images.json --output upload-result.json
# 3. èªå¨æ¿æ¢ HTML ä¸çå ä½ç¬¦
node "$SKILL_DIR/scripts/replace-images.mjs" \
--html article.html \
--result upload-result.json \
--output article-final.html
# 4. ä¸ä¼ å°é¢å¾
node "$SKILL_DIR/scripts/upload-image.mjs" cover.jpg
# 5. å建è稿ï¼åå¤ draft.jsonï¼å¡«å
¥ article-final.html å
容åå°é¢ media_idï¼
node "$SKILL_DIR/scripts/create-draft.mjs" draft.json
åå¸å°ç»¿ä¹¦
node "$SKILL_DIR/scripts/create-image-post.mjs" \
-t "乿æå½±ç²¾é" -c "å
å½±è®°å½æ¥å¸¸" \
--images sep01.jpg,sep02.jpg,sep03.jpg
File Structure
scripts/
convert.mjs # Markdown â 微信 HTMLï¼ä»£ç 渲æï¼æ é AIï¼
upload-image.mjs # ä¸ä¼ æ¬å°å¾çå°å¾®ä¿¡
download-upload.mjs # ä¸è½½å¨çº¿å¾çå¹¶ä¸ä¼
replace-images.mjs # æ¿æ¢ HTML ä¸ç <!-- IMG:N --> å ä½ç¬¦
publish.mjs # ä¸é®ï¼Markdown â æ¿æ¢å¾ç â æç» HTML
create-draft.mjs # åå»ºå¾æè稿
create-image-post.mjs # å建å°ç»¿ä¹¦
lib/
args.mjs # CLI åæ°è§£æå·¥å
·
config.mjs # é
ç½®å è½½ï¼env > YAML > é»è®¤å¼ï¼
wechat.mjs # 微信 APIï¼tokenãä¸ä¼ ãè稿ï¼
image.mjs # å¾çå缩ï¼sharpï¼
themes/ # ä¸»é¢ YAML æä»¶
writers/ # åä½é£æ ¼ YAML æä»¶