redbook-creator-publish
npx skills add https://github.com/happycapy-ai/happycapy-skills --skill redbook-creator-publish
Agent 安装分布
Skill 文档
å°çº¢ä¹¦å¸ååä½ä¸å叿è½
æ¦è¿°
æ¬æè½å¸®å©ç¨æ·åä½å°çº¢ä¹¦é£æ ¼çä¼è´¨å 容ï¼å æ¬æ é¢ãæ£æãæ ç¾ãé å¾ï¼å¹¶é»è®¤èªå¨ä¸ä¼ å°å°çº¢ä¹¦åä½è å¹³å°ã
éè¦æ´æ°ï¼v3.0ï¼ï¼
- ð Python å®ç°ï¼ä½¿ç¨ Playwright for Python å®ç°æµè§å¨èªå¨åï¼æ°å¢ï¼
- ð é»è®¤èªå¨ä¸ä¼ ï¼æ é询é®ç¨æ·ï¼ç´æ¥æ§è¡èªå¨ä¸ä¼
- ð§ æºè½é级ï¼èªå¨ä¸ä¼ 失败æ¶èªå¨æä¾è¯¦ç»æå¨ä¸ä¼ æå¼
- â é 徿¹ä¸º PNG/JPG æ ¼å¼ï¼ä¸åä½¿ç¨ HTMLï¼
- â é¢è§ HTML å MD ææ¡£æ¯ææ¾ç¤ºå¾ç
- â ä½¿ç¨ Playwright æµè§å¨èªå¨åï¼æ¯ Selenium æ´å¿«æ´ç¨³å®ï¼
- â DOM éæ©å¨é ç½®å
- â è¯é¢æ·±åº¦æç´¢åè½
åç½®æ£æ¥
å¨å¼å§å·¥ä½æµç¨åï¼å¿ é¡»æ£æ¥å¹¶åå¤ä»¥ä¸ç¯å¢ï¼
1. æ£æ¥ Python ç¯å¢ï¼å¿ éï¼
python3 --version
è¦æ±ï¼Python 3.0 ææ´é«çæ¬
妿æªå®è£ æçæ¬è¿ä½ï¼
- è¾åºé误信æ¯ï¼
â æªæ£æµå° Python 3+ ç¯å¢ - æç¤ºç¨æ·ï¼
æ¬æè½éè¦ Python 3.0+ æ¯æã å®è£ æ¹æ³: - macOS: brew install python3 - Windows: è®¿é® https://www.python.org/ ä¸è½½å®è£ å®è£ 宿åè¯·éæ°è¿è¡æ¤æè½ã - 忢æ§è¡ï¼çå¾ ç¨æ·å®è£ Python
2. æ£æ¥ Playwright æ¯å¦å®è£ ï¼é¦æ¬¡èªå¨å®è£ ï¼
python3 -c "import playwright" 2>/dev/null && echo "Playwright installed" || echo "Playwright not found"
妿æªå®è£ ï¼
- è¾åºä¿¡æ¯ï¼
ð æ£æµå° Playwright æªå®è£ ï¼æ£å¨èªå¨å®è£ ... - èªå¨æ§è¡å®è£
ï¼
pip3 install playwright playwright install chromium - æ¾ç¤ºå®è£ è¿åº¦åç»æ
- å®è£
宿åè¾åºï¼
â Playwright å®è£ 宿
妿已å®è£ ï¼
- è¾åºï¼
â Playwright å·²å®è£
3. æ£æ¥ Chrome æµè§å¨ï¼ç¨äº HTML 转å¾çï¼
# macOS
test -d "/Applications/Google Chrome.app" && echo "Chrome installed" || echo "Chrome not found"
妿æªå®è£ ï¼
- è¾åºè¦åä¿¡æ¯ï¼
â ï¸ æªæ£æµå° Chrome æµè§å¨ - æç¤ºç¨æ·ï¼
é å¾è½¬æ¢éè¦ Chromeï¼HTML 转 PNG åè½ï¼ã ä¸è½½å°å: https://www.google.com/chrome/ 注æï¼Playwright ä¼ä½¿ç¨ Chromium è¿è¡èªå¨åä¸ä¼ ï¼ä¸ä¾èµç³»ç» Chrome - å¯ä»¥ç»§ç»æ§è¡ï¼é å¾å¯ç¨åæå¨çæï¼
工使µç¨
ç¬¬ä¸æ¥ï¼ç¡®å®åä½ä¸»é¢å¹¶æ·±åº¦æç´¢
éè¦ï¼æ è®ºç¨æ·æ¯å¦æä¾è¯é¢ï¼é½å¿ é¡»å è¿è¡æ·±åº¦æç´¢ï¼ç¡®ä¿å 容çåç¡®æ§åæ¶ææ§ã
1.1 è¯é¢ç¡®å®
- ç¨æ·æä¾è¯é¢ï¼ä½¿ç¨ç¨æ·æä¾çè¯é¢
- ç¨æ·æªæä¾è¯é¢ï¼æç´¢å½æ¥ææ°ç AI èµè®¯æçé¨è¯é¢ä½ä¸ºåä½ç´ æ
1.2 深度æç´¢ï¼å¿ é¡»æ§è¡ï¼
ä½¿ç¨ WebSearch å·¥å ·å¯¹è¯é¢è¿è¡æ·±åº¦æç´¢ï¼
æç´¢è¦æ±ï¼
- æç´¢è³å° 2-3 个ç¸å ³å ³é®è¯
- è·åææ°çæ°æ®ãæ¡ä¾ãç¨æ·åé¦ï¼ç¡®ä¿ä¿¡æ¯æ¥èªææ°å¹´ä»½ï¼å¦2026å¹´ï¼
- äºè§£è¯é¢çç度å讨论æ¹å
- ç¡®ä¿å 容符å主é¢å¹¶ææ·±åº¦
ç¤ºä¾æç´¢å ³é®è¯ï¼
- è¯é¢”AIå·¥å
·”ï¼
- “2026ææ°AIå·¥å ·æ¨è”
- “AIå·¥å ·ä½¿ç¨æç¨æ¡ä¾”
- “AIå·¥å ·æçæåæ°æ®”
- è¯é¢”工使ç”ï¼
- “æé«å·¥ä½æçæ¹æ³2026”
- “æçå·¥å ·æ¨è使ç¨ä½éª”
- “æ¶é´ç®¡çæå·§å®æ”
æç´¢è¾åºï¼
ð æ£å¨æ·±åº¦æç´¢è¯é¢: [è¯é¢åç§°]
æç´¢å
³é®è¯ 1: [å
³é®è¯]
- æ¾å° X 个ç¸å
³ç»æ
- å
³é®ä¿¡æ¯: [æè¦]
æç´¢å
³é®è¯ 2: [å
³é®è¯]
- æ¾å° X 个ç¸å
³ç»æ
- å
³é®ä¿¡æ¯: [æè¦]
â
æç´¢å®æï¼å·²è·åå
è¶³ç´ æ
ç¬¬äºæ¥ï¼çæå¸åå 容
åè references/style-guide.md äºè§£å°çº¢ä¹¦å 容飿 ¼è§èã
æ é¢è¦æ±
- åæ°éå¶ï¼ä¸è¶ è¿20个å
- å¯ä»¥ä½¿ç¨emojiï¼é彿·»å 1-2个emojiå¢å å¸å¼å
- é©åè®¾è®¡ï¼æ é¢å¿ é¡»å å«é©åå ç´ ï¼æ¿åç¨æ·å¥½å¥å¿
æ é¢é©åç±»åï¼
- æ°ååï¼ã3ä¸ªæ¹æ³ãã5åéå¦ä¼ã
- çé®åï¼ã为ä»ä¹…ããä½ ç¥éåã
- å©çåï¼ãçé±ããåç¾ããææã
- æ¬å¿µåï¼ã没æ³å°…ããç«ç¶…ã
- å ±é¸£åï¼ãç»äºæ¾å°äºããåææ²¡æ©ç¥éã
æ£æè¦æ±
- è¯è¨ï¼ä½¿ç¨ä¸æï¼ææ¯ä¸æåè¯å¯ä¿çè±æï¼
- åæ°è¦æ±ï¼æ£æå å®¹å¿ é¡»å¨ 300-500å ä¹é´ï¼å 容è¦å 宿æ
- ç»æï¼å¼å¤´é©å â æ ¸å¿å 容ï¼è¯¦ç»å±å¼ï¼â æ»ç»/äºå¨
- 段è½ï¼æ¯æ®µ2-4è¡ï¼åç¨å段å空è¡
- 符å·ï¼éå½ä½¿ç¨åé符å¢å¼ºé 读ä½éª
- ç´ ææ¥æºï¼åºäºæ·±åº¦æç´¢ç»æï¼æ´åææ°ä¿¡æ¯åæ¡ä¾
æ£æé©å段示ä¾ï¼
å§å¦¹ä»¬ï¼è¿ä¸ªæ¹æ³æèäºå¥½ä¹
äº...
䏿¢ç¸ä¿¡ï¼æå±
ç¶ç°å¨æåç°è¿ä¸ª...
å享ä¸ä¸ªè®©ææçç¿»åçå°æå·§...
æ£æå 容å±å¼è¦æ±ï¼
- æ¯ä¸ªè¦ç¹è¦æè¯¦ç»è¯´æï¼ä¸è½åªæ¯ä¸å¥è¯å¸¦è¿
- å å ¥ä¸ªäººä½¿ç¨ä½éªåæåï¼å¯ä»¥åºäºæç´¢å°çç¨æ·å馿¹åï¼
- æä¾å ·ä½ç使ç¨åºæ¯åæ¡ä¾ï¼ä½¿ç¨æç´¢å°çç宿¡ä¾ï¼
- éå½å å ¥å¯¹æ¯ï¼ä½¿ç¨å vs 使ç¨åï¼
- å¼ç¨æç´¢å°çæ°æ®å¢å å¯ä¿¡åº¦
å 容è¾åºæ ¼å¼ï¼
## æ é¢
[çæçæ é¢ï¼å
å«emoji]
## æ£æ
[å¼å¤´é©å段 - å¼åå
±é¸£ï¼30-50å]
[æ ¸å¿å
容 - 详ç»å±å¼æ¯ä¸ªè¦ç¹ï¼200-350å]
- ä½¿ç¨æç´¢å°çæ°æ®åæ¡ä¾
- å å
¥å
·ä½ä½¿ç¨åºæ¯
- æä¾å¯¹æ¯åä½éª
[æ»ç»æ®µ - å½çº³éç¹ï¼30-50å]
[äºå¨å¼å¯¼ - å¼å¯¼è¯è®ºæ¶èï¼20-30å]
## æ ç¾
#æ ç¾1 #æ ç¾2 #æ ç¾3 #æ ç¾4 #æ ç¾5 #æ ç¾6 #æ ç¾7 #æ ç¾8
ç¬¬ä¸æ¥ï¼çæé å¾ï¼PNG/JPG æ ¼å¼ï¼
éè¦åæ´ï¼ä¸åä½¿ç¨ HTML æ ¼å¼ï¼ç´æ¥çæ PNG/JPG å¾çã
å¾ççææµç¨
- å çæ HTML 模æ¿ï¼ä¸´æ¶æä»¶ï¼ï¼ä½¿ç¨ Newsprint 飿 ¼å建å¡ç
- 转æ¢ä¸º PNGï¼ä½¿ç¨ Chrome headless æ¨¡å¼æªå¾
- å é¤ä¸´æ¶ HTMLï¼åªä¿ç PNG æä»¶
å¾çè¦æ±
- æ°éï¼çæ 1å¼ ä¸»å¾é å¾å³å¯ï¼ä¸åéè¦å¤å¼ è£åªï¼
- æ ¼å¼ï¼PNG æ JPGï¼æ¨è PNGï¼
- 尺寸ï¼9:16 ç«çæ¯ä¾ï¼å°çº¢ä¹¦æ åç«çæ¯ä¾ï¼
- 尺寸ï¼1080×1920 px
- æ¯ä¾ï¼9:16ï¼å°çº¢ä¹¦æä½³å±ç¤ºæ¯ä¾ï¼
- ç´æ¥æå尺寸çæï¼ä¸åç¼©æ¾æè£åª
- å 容对åºï¼å¾çå 容éè¦æ¦æ¬æç« çæ ¸å¿è¦ç¹
- 飿 ¼è¦æ±ï¼
- éè¦ï¼æ¯å¼ å¾çæ ¹æ®å 容åèªè®¾è®¡ï¼ä¸è¦ææå¾ç飿 ¼é½ä¸æ ·
- å¯ä»¥ä½¿ç¨ä¸åçå¸å±ãé è²ãåä½ç»å
- åå°AIæï¼è¿½æ±èªç¶ãçå®çè§è§ææ
- é è²èªç¶åè°ï¼ä¸è¦è¿äºé¥±å
- å¯åè Newsprint æ¥çº¸é£æ ¼ï¼ä½ä¸éäºæ¤é£æ ¼
- æåï¼
- å¾çä¸å¦éæåï¼å¿ 须使ç¨ä¸æ
- å使¸ æ°æè¯»ï¼ç»å¯¹ä¸å 许åºç°ä¹±ç
- 使ç¨é«æ¸ 渲æç¡®ä¿æåæ¾ç¤ºæ¸ æ°
- å®å ¨ï¼ä½¿ç¨åè§ãä¿é©çå ç´ ï¼é¿å ææå 容
é å¾ç±»åè§å
åªçæ 1å¼ ä¸»å¾ï¼ä¸åéè¦å¤å¼ è£åªï¼
| å¾çåºå· | æä»¶å | å¾çç±»å | å 容说æ |
|---|---|---|---|
| 第1å¼ | cover.png | ä¸»å¾ | 9:16 ç«ç主å¾ï¼å 嫿 é¢åæ ¸å¿å 容ï¼å¸å¼ç¹å» |
注æï¼
- åªçæä¸å¼ 9:16 ç髿¸ 主å¾å³å¯
- å¾ç尺寸ï¼1080×1920 pxï¼ç´æ¥çæï¼ä¸å缩æ¾ï¼
- å¾ç飿 ¼æ ¹æ®å 容èªè¡è®¾è®¡ï¼å¯ä»¥å¤æ ·å
- ç¡®ä¿æåæ¸ æ°ï¼æ ä¹±ç
- å¨ HTML 设计æ¶ï¼å¡çå°ºå¯¸ç´æ¥è®¾ç½®ä¸º 1080x1920px
设计系ç»åè
éè¦ï¼å¾ç飿 ¼ä¸éè¦ç»ä¸ï¼å¯ä»¥æ ¹æ®å 容åèªè®¾è®¡ã
å¯éè®¾è®¡é£æ ¼ï¼
-
Newsprint æ¥çº¸é£æ ¼ï¼åè assets/image-templates.htmlï¼
- è´æ¬å°å·æ¥çº¸çé»éæ¶ä»£
- é«å¯¹æ¯åº¦æçãç½æ ¼å¸å±
- éå严èãä¸ä¸çå 容
-
ç°ä»£ç®çº¦é£æ ¼
- 大éçç½ï¼ç®æ´æç
- æåé è²ï¼åè§è®¾è®¡
- éåè½»æ¾ãå好çå 容
-
æå¿å°é¢é£æ ¼
- 大æ é¢ï¼éç®è§è§
- å¤å½©é è²ï¼å¸å¼ç¼ç
- é忍èãçç¹ç±»å 容
-
å¡çå å 飿 ¼
- å¤å±å¡çï¼ä¿¡æ¯ä¸°å¯
- æ¸ æ°å±æ¬¡ï¼æäºé 读
- éåæç¨ãæ¥éª¤ç±»å 容
设计ååï¼ææé£æ ¼éç¨ï¼ï¼
- æåå¿ é¡»æ¸ æ°ï¼ä½¿ç¨ä¸æï¼ç»å¯¹ä¸å 许乱ç
- å 容丰å¯ä½ä¸æ¥æ¤ï¼çæå¼å¸ç©ºé´
- é è²èªç¶åè°ï¼ç¬¦å主é¢
- çªåºæ ¸å¿ä¿¡æ¯ï¼æ¬¡è¦ä¿¡æ¯å¯éå½å¼±å
Design Tokensï¼è®¾è®¡åéï¼ï¼
--background: #F9F9F7; /* æ¥çº¸ç±³ç½è² */
--foreground: #111111; /* 墨é»è² */
--muted: #E5E5E0; /* åéç° */
--accent: #CC0000; /* ç¼è¾çº¢ï¼ä»
ç¨äºå¼ºè°ï¼ */
åä½ç³»ç»ï¼
- æ é¢ï¼
Noto Serif SCï¼ä¸æè¡¬çº¿ï¼ç²ä½ï¼å¤§åå·ï¼ - æ£æï¼
Noto Sans SCï¼ä¸ææ è¡¬çº¿ï¼ - UI/æ ç¾ï¼
Interï¼è±ææ 衬线ï¼å¤§åï¼åæ¯é´è·å å®½ï¼ - æ°æ®/æ¥æï¼
JetBrains Monoï¼ç宽åä½ï¼
æ ¸å¿è®¾è®¡è§åï¼
- é¶åè§ï¼ææå
ç´ å¿
须使ç¨
border-radius: 0 - é«å¯¹æ¯åº¦ï¼é»ç½ä¸ºä¸»ï¼çº¢è²ä» ä½ç¹ç¼
- å¯è§ç½æ ¼ï¼ä½¿ç¨è¾¹æ¡åéï¼æ¨¡ææ¥çº¸æ ç®
- å¤§åæ ç¾ï¼
text-transform: uppercase; letter-spacing: 0.15em - ç¹ç¶èæ¯çº¹çï¼æ¨¡ææ¥çº¸å°å·ææ
- æ¬åææï¼é¢è²å转ï¼é»åç½ï¼ç½åé»ï¼
- ç°åº¦å¾çï¼å¾çé»è®¤ç°åº¦å¤ç
HTML 转 PNG çæ§è¡æ¥éª¤
æ¥éª¤ 1ï¼åå»ºä¸´æ¶ HTML æä»¶
# å建临æ¶ç®å½
mkdir -p ./redbook-article/[主é¢]-[æ¥æ]/temp/
# ä½¿ç¨ Write å·¥å
·çæ HTML æä»¶
# æä»¶: ./redbook-article/[主é¢]-[æ¥æ]/temp/cover.html
æ¥éª¤ 2ï¼ä½¿ç¨ Python èæ¬è½¬æ¢ä¸º PNG
python3 /Users/a58/.claude/skills/redbook-creator-publish/scripts/html_to_image.py \
./redbook-article/[主é¢]-[æ¥æ]/temp/ \
--output ./redbook-article/[主é¢]-[æ¥æ]/images/
æ¥éª¤ 3ï¼æ¸ çä¸´æ¶æä»¶
rm -rf ./redbook-article/[主é¢]-[æ¥æ]/temp/
è¾åºæ¥å¿ç¤ºä¾ï¼
ð¨ çæé
å¾...
ð åå»ºä¸´æ¶ HTML 模æ¿...
â
cover.html
â
content-1.html
â
content-2.html
â
summary.html
ð¼ï¸ 转æ¢ä¸º PNG å¾ç...
ä½¿ç¨ Chrome: /Applications/Google Chrome.app/Contents/MacOS/Google Chrome
转æ¢: cover.html -> cover.png ... â
转æ¢: content-1.html -> content-1.png ... â
转æ¢: content-2.html -> content-2.png ... â
转æ¢: summary.html -> summary.png ... â
宿: 4/4 个æä»¶è½¬æ¢æå
ðï¸ æ¸
çä¸´æ¶æä»¶...
â
é
å¾çæå®æï¼
ç¬¬åæ¥ï¼çææ¬å°æä»¶
å¨ç¨æ·å½åå·¥ä½ç®å½ä¸åå»ºå®æ´çæä»¶ç»æï¼
ç®å½ç»æ
redbook-article/
âââ [å¸å主é¢]-[YYYY-MM-DD]/
âââ [å¸å主é¢]-[YYYY-MM-DD].html # é¢è§æä»¶ï¼æ¾ç¤ºå¾çï¼
âââ [å¸å主é¢]-[YYYY-MM-DD].md # Markdownæ ¼å¼ï¼æ¾ç¤ºå¾ç+è·¯å¾ï¼
âââ [å¸å主é¢]-[YYYY-MM-DD].txt # çº¯ææ¬åå§å
容
âââ images/
â âââ cover.png # å°é¢å¾
â âââ content-1.png # å
容å¾1
â âââ content-2.png # å
容å¾2
â âââ summary.png # æ»ç»å¾
â âââ ...
âââ config.json # å¸åé
置信æ¯
âââ publish_config_temp.json # åå¸é
ç½®ï¼ä¸´æ¶ï¼
æä»¶å 容说æ
1. HTML é¢è§æä»¶ï¼å¿ é¡»æ¾ç¤ºå¾çï¼ï¼
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<title>[æ é¢]</title>
<style>
/* Newsprint 飿 ¼ CSS */
</style>
</head>
<body>
<div class="preview-container">
<h1>[æ é¢]</h1>
<!-- æ¾ç¤ºé
å¾ -->
<div class="images-grid">
<img src="images/cover.png" alt="å°é¢å¾">
<img src="images/content-1.png" alt="å
容å¾1">
<!-- ... æ´å¤å¾ç -->
</div>
<div class="content">
[æ£æå
容]
</div>
<div class="tags">
[æ ç¾]
</div>
</div>
</body>
</html>
2. Markdown æä»¶ï¼.mdï¼ï¼å¿ é¡»æ¾ç¤ºå¾ç+è·¯å¾ï¼ï¼
# [æ é¢]
## é
å¾é¢è§




## æ£æ
[宿´æ£æå
容ï¼ä¿çæ ¼å¼]
## æ ç¾
[æææ ç¾]
---
## é
å¾è·¯å¾å表
便äºå¨å
¶ä» Markdown å·¥å
·ä¸æ¥çï¼
- å°é¢å¾ï¼`images/cover.png`
- å
容å¾1ï¼`images/content-1.png`
- å
容å¾2ï¼`images/content-2.png`
- æ»ç»å¾ï¼`images/summary.png`
---
*çææ¶é´ï¼[YYYY-MM-DD HH:mm:ss]*
*åæ°ç»è®¡ï¼[åæ°] å*
3. çº¯ææ¬æä»¶ï¼.txtï¼ï¼
[æ é¢]
[æ£æå
容ï¼çº¯ææ¬æ ¼å¼ï¼å¯ç´æ¥å¤å¶]
[æ ç¾ï¼ç©ºæ ¼åé]
4. é ç½®æä»¶ï¼config.jsonï¼ï¼
{
"title": "å¸åæ é¢",
"content": "æ£æå
容",
"tags": ["æ ç¾1", "æ ç¾2", "æ ç¾3"],
"images": [
"images/cover.png",
"images/content-1.png",
"images/content-2.png",
"images/summary.png"
],
"created_at": "2026-01-26T12:00:00",
"word_count": 450,
"search_keywords": ["å
³é®è¯1", "å
³é®è¯2"],
"sources": ["æ¥æº1", "æ¥æº2"]
}
æ§è¡å½ä»¤ï¼
# å建ç®å½ç»æ
mkdir -p ./redbook-article/[å¸å主é¢]-[æ¥æ]/images
# çæå个æä»¶ï¼ä½¿ç¨Writeå·¥å
·ï¼
宿ååç¥ç¨æ·ï¼
â
æä»¶å·²çæï¼
ð ä¿åä½ç½®ï¼./redbook-article/[å¸å主é¢]-[æ¥æ]/
å
å«ä»¥ä¸æä»¶ï¼
âââ [å¸å主é¢]-[æ¥æ].html # é¢è§æä»¶ï¼å¯å¨æµè§å¨ä¸æå¼æ¥çï¼
âââ [å¸å主é¢]-[æ¥æ].md # Markdownæç« ï¼æ¾ç¤ºå¾çï¼
âââ [å¸å主é¢]-[æ¥æ].txt # çº¯ææ¬ï¼å¯ç´æ¥å¤å¶ç²è´´ï¼
âââ images/ # é
徿件夹ï¼PNGæ ¼å¼ï¼
â âââ cover.png # å°é¢å¾ â
â âââ content-1.png # å
容å¾1
â âââ content-2.png # å
容å¾2
â âââ summary.png # æ»ç»å¾
âââ config.json # é
置信æ¯
ð¡ æç¤ºï¼
- 卿µè§å¨ä¸æå¼ .html æä»¶å¯é¢è§å®æ´ææ
- å¨ Markdown ç¼è¾å¨ä¸æå¼ .md æä»¶å¯æ¥ç徿å
容
- images/ æä»¶å¤¹ä¸çå¾çå¯ä»¥ç´æ¥ä¸ä¼ å°å°çº¢ä¹¦
ç¬¬äºæ¥ï¼æµè§å¨èªå¨åä¸ä¼
éè¦ï¼é»è®¤æ§è¡èªå¨ä¸ä¼ ï¼æ é询é®ç¨æ·ãåªæèªå¨ä¸ä¼ å¤±è´¥æ¶ææç¤ºæå¨ä¸ä¼ ã
5.1 æ£æ¥å¹¶å®è£ Playwright
é¦å æ£æ¥ Playwright æ¯å¦å·²å®è£ ï¼
python3 -c "import playwright" 2>/dev/null && echo "Playwright installed" || echo "Playwright not found"
妿æªå®è£ ï¼
ð æ£æµå° Playwright æªå®è£
ï¼æ£å¨èªå¨å®è£
...
Playwright æ¯ç°ä»£åçæµè§å¨èªå¨åå·¥å
·ï¼ç¨äºèªå¨ä¸ä¼ å
容å°å°çº¢ä¹¦ã
å®è£
è¿ç¨çº¦é 1-2 åé...
èªå¨æ§è¡å®è£ ï¼
pip3 install playwright
playwright install chromium
æ¾ç¤ºå®è£ è¿åº¦åç»æï¼
â³ æ£å¨å®è£
Playwright...
â³ æ£å¨ä¸è½½ Chromium æµè§å¨...
â
Playwright å®è£
宿ï¼
妿已å®è£ ï¼
â
Playwright å·²å®è£
ï¼è·³è¿å®è£
æ¥éª¤
5.2 åç½®æç¤º
å¿ é¡»æ¾ç¤ºçéè¦æç¤ºï¼
==========================================================
ð åå¤èªå¨ä¸ä¼ å°å°çº¢ä¹¦
==========================================================
â ï¸ éè¦æç¤ºï¼
1. 馿¬¡ä½¿ç¨éè¦å¨æµè§å¨ä¸ç»å½å°çº¢ä¹¦è´¦å·
ï¼æµè§å¨ä¼èªå¨æå¼ï¼è¯·å®æç»å½ï¼
2. ç½ç»è¿æ¥æ£å¸¸
3. ä¸ä¼ è¿ç¨ä¸è¯·å¿æä½æµè§å¨
ï¼é¢è®¡èæ¶ï¼30-60ç§ï¼
å³å°å¼å§èªå¨ä¸ä¼ ...
ä¸éè¦çå¾ ç¨æ·ç¡®è®¤ï¼ç´æ¥å¼å§ä¸ä¼ æµç¨ã
5.3 æ§è¡èªå¨ä¸ä¼
ä½¿ç¨ Playwright Python èæ¬æ§è¡ä¸ä¼ ï¼
python3 /Users/a58/.claude/skills/redbook-creator-publish/scripts/auto_upload_playwright.py \
--config ./redbook-article/[主é¢]-[æ¥æ]/config.json
èæ¬åæ°è¯´æï¼
--configæ-cï¼é ç½®æä»¶è·¯å¾ï¼å¿ éï¼--headlessï¼ä½¿ç¨æ 头模å¼ï¼å¯éï¼é»è®¤æ¾ç¤ºæµè§å¨çªå£ï¼
ä¸ä¼ æµç¨æ¥éª¤
Playwright èæ¬ä¼èªå¨æ§è¡ä»¥ä¸æ¥éª¤ï¼æ¯æ¥é½ä¼è¾åºæ¥å¿ï¼
æ¥éª¤ 1ï¼æå¼å°çº¢ä¹¦åä½è å¹³å°
èæ¬ä¼ï¼
- ä½¿ç¨ Playwright å¯å¨ Chromium æµè§å¨
- æå¼å°çº¢ä¹¦åä½è å¹³å°ä¸ä¼ 页é¢
- æ£æ¥ç»å½ç¶æï¼å¦ææªç»å½ä¼çå¾ ç¨æ·ç»å½
è¾åºæ¥å¿ï¼
ð æ¥éª¤ 1/5: æå¼å°çº¢ä¹¦åä½è
å¹³å°
URL: https://creator.xiaohongshu.com/publish/publish?from=menu&target=image
â
页é¢å è½½æå
æè ï¼å¦ææªç»å½ï¼ï¼
ð æ¥éª¤ 1/5: æå¼å°çº¢ä¹¦åä½è
å¹³å°
URL: https://creator.xiaohongshu.com/publish/publish?from=menu&target=image
â ï¸ æ£æµå°æªç»å½ï¼è¯·å
ç»å½...
çå¾
ç»å½å®æ...
â
ç»å½æå
â
页é¢å è½½æå
æ¥éª¤ 2ï¼ä¸ä¼ å¾ç
èæ¬ä¼ï¼
- å®ä½æä»¶ä¸ä¼ è¾å ¥æ¡
- 䏿¬¡æ§ä¸ä¼ ææå¾çï¼å°é¢å¾å¿ é¡»æ¯ç¬¬ä¸å¼ ï¼
- çå¾ å¾çä¸ä¼ 宿
è¾åºæ¥å¿ï¼
ð¸ æ¥éª¤ 2/5: ä¸ä¼ å¾ç
DOMéæ©å¨: input[type="file"][accept*="image"]
å¾çæ°é: 4 å¼
å°é¢å¾: cover.png (第ä¸å¼ )
ä¸ä¼ ä¸...
â
cover.png ä¸ä¼ æå
â
content-1.png ä¸ä¼ æå
â
content-2.png ä¸ä¼ æå
â
summary.png ä¸ä¼ æå
â
ææå¾çä¸ä¼ 宿
æ¥éª¤ 3ï¼å¡«åæ é¢
èæ¬ä¼ï¼
- å®ä½æ é¢è¾å ¥æ¡
- æ¸ ç©ºå¹¶å¡«åæ é¢å 容
- 模æçå®è¾å ¥ï¼å¸¦å»¶è¿ï¼
è¾åºæ¥å¿ï¼
âï¸ æ¥éª¤ 3/5: å¡«åæ é¢
DOMéæ©å¨: .c-input_inner input[type="text"]
æ é¢å
容: ð¥ 3个AIå·¥å
·è®©æçç¿»å
â
æ é¢å¡«å宿
æ¥éª¤ 4ï¼å¡«åæ£æ
èæ¬ä¼ï¼
- å®ä½æ£æç¼è¾å¨
- 填忣æå å®¹åæ ç¾
- 模æçå®è¾å ¥ï¼é段è¾å ¥ï¼
è¾åºæ¥å¿ï¼
ð æ¥éª¤ 4/5: 填忣æ
DOMéæ©å¨: .ql-editor
æ£æåæ°: 387 å
â
æ£æå¡«å宿
æ¥éª¤ 5ï¼ç¹å»åå¸
èæ¬ä¼ï¼
- å®ä½å叿é®
- ç¹å»åå¸
- çå¾ åå¸å®æ
è¾åºæ¥å¿ï¼
ð æ¥éª¤ 5/5: ç¹å»åå¸
DOMéæ©å¨: .css-k405vo
â
å·²ç¹å»å叿é®
â³ çå¾
åå¸å®æ...
â
å叿åï¼
宿´ä¸ä¼ æ¥å¿ç¤ºä¾
==========================================================
ð å°çº¢ä¹¦èªå¨ä¸ä¼
==========================================================
â ï¸ éè¦æç¤ºï¼
1. 馿¬¡ä½¿ç¨éè¦å¨æµè§å¨ä¸ç»å½å°çº¢ä¹¦è´¦å·
2. ä¸ä¼ è¿ç¨ä¸è¯·å¿æä½æµè§å¨
3. é¢è®¡èæ¶ï¼30-60ç§
å³å°å¼å§èªå¨ä¸ä¼ ...
ð æ¥éª¤ 1/5: æå¼å°çº¢ä¹¦åä½è
å¹³å°
URL: https://creator.xiaohongshu.com/publish/publish?from=menu&target=image
â
页é¢å è½½æå
ð¸ æ¥éª¤ 2/5: ä¸ä¼ å¾ç
DOMéæ©å¨: input[type="file"][accept*="image"]
å¾çæ°é: 4 å¼
å°é¢å¾: cover.png (第ä¸å¼ )
ä¸ä¼ ä¸...
â
cover.png ä¸ä¼ æå
â
content-1.png ä¸ä¼ æå
â
content-2.png ä¸ä¼ æå
â
summary.png ä¸ä¼ æå
â
ææå¾çä¸ä¼ 宿
âï¸ æ¥éª¤ 3/5: å¡«åæ é¢
DOMéæ©å¨: .c-input_inner input[type="text"]
æ é¢å
容: ð¥ 3个AIå·¥å
·è®©æçç¿»å
â
æ é¢å¡«å宿
ð æ¥éª¤ 4/5: 填忣æ
DOMéæ©å¨: .ql-editor
æ£æåæ°: 387 å
â
æ£æå¡«å宿
ð æ¥éª¤ 5/5: ç¹å»åå¸
DOMéæ©å¨: .css-k405vo
â
å·²ç¹å»å叿é®
â³ çå¾
åå¸å®æ...
â
å叿åï¼
==========================================================
ð ä¸ä¼ 宿ï¼
==========================================================
å¸åå·²æååå¸å°å°çº¢ä¹¦åä½è
å¹³å°
ð æ¥çå¸åï¼
请å¨å°çº¢ä¹¦åä½è
平尿¥çåå¸ç»æ
https://creator.xiaohongshu.com/
ð¡ æç¤ºï¼
- åå¸åå¯è½éè¦å¹³å°å®¡æ ¸
- å®¡æ ¸éè¿åä¼å¨å°çº¢ä¹¦APP䏿¾ç¤º
æµè§å¨å°å¨ 5 ç§åå
³é...
é误å¤ç
æ¯ä¸ªæ¥éª¤é½æé误å¤çï¼å¦æå¤±è´¥åè¾åºè¯¦ç»é误信æ¯ï¼
ç¤ºä¾ 1ï¼DOM å ç´ æªæ¾å°
â æ¥éª¤ 2/5 失败: ä¸ä¼ å¾ç
é误: æªæ¾å°ä¸ä¼ æ§ä»¶
å¯è½åå :
1. å°çº¢ä¹¦å¹³å°æ´æ°äºé¡µé¢ç»æ
2. DOMéæ©å¨é
ç½®ä¸æ£ç¡®
è§£å³æ¹æ¡:
1. 卿µè§å¨ä¸æå¼ https://creator.xiaohongshu.com/publish/publish
2. æ F12 æå¼å¼åè
å·¥å
·
3. æ¾å°ä¸ä¼ æ§ä»¶çæ°éæ©å¨
4. éè¿ç¯å¢åé UPLOAD_INPUT_SELECTOR æ´æ°éæ©å¨
å½åéæ©å¨: input[type="file"][accept*="image"]
ç¤ºä¾ 2ï¼ä¸ä¼ è¶ æ¶
â æ¥éª¤ 2/5 失败: ä¸ä¼ å¾ç
é误: ä¸ä¼ è¶
æ¶
å¯è½åå :
1. ç½ç»è¿æ¥ä¸ç¨³å®
2. å¾çæä»¶è¿å¤§
3. å°çº¢ä¹¦æå¡å¨ååºæ
¢
è§£å³æ¹æ¡:
1. æ£æ¥ç½ç»è¿æ¥
2. ç¨åéè¯
3. æä½¿ç¨æå¨ä¸ä¼ æ¹å¼
DOM éæ©å¨é ç½®
å¯ä»¥éè¿ç¯å¢åéèªå®ä¹ DOM éæ©å¨ï¼å½å°çº¢ä¹¦å¹³å°æ´æ°é¡µé¢ç»ææ¶ï¼ï¼
# å¨è¿è¡èæ¬å设置ç¯å¢åé
export UPLOAD_INPUT_SELECTOR='input[type="file"][accept*="image"]'
export TITLE_INPUT_SELECTOR='.c-input_inner input[type="text"]'
export CONTENT_CONTAINER_SELECTOR='.ql-editor'
export PUBLISH_BUTTON_SELECTOR='.css-k405vo'
export IMAGE_ITEM_SELECTOR='.upload-list-item'
# ç¶åè¿è¡ä¸ä¼ èæ¬
python3 auto_upload_playwright.py --config config.json
æè å¨ Python èæ¬è°ç¨å设置ï¼
import os
os.environ['UPLOAD_INPUT_SELECTOR'] = 'input[type="file"]'
# ç¶åè°ç¨èæ¬
5.4 èªå¨ä¸ä¼ 失败åçå¤ç
éè¦ï¼åªæå½èªå¨ä¸ä¼ 失败æ¶ï¼ææ¾ç¤ºä»¥ä¸æå¨ä¸ä¼ æå¼ã
æ£æµå°ä»¥ä¸ä»»ä¸é误æ¶ï¼å¤å®ä¸ºèªå¨ä¸ä¼ 失败ï¼
- Playwright æªå®è£ ä¸å®è£ 失败
- Python ç¯å¢é®é¢
- DOM å ç´ æªæ¾å°ï¼å¹³å°æ´æ°äºé¡µé¢ç»æï¼
- ä¸ä¼ è¶ æ¶ï¼ç½ç»é®é¢ææå¡å¨ååºæ ¢ï¼
- ç¨æ·ç»å½è¶ æ¶
- ä»»ä½å¯¼è´ä¸ä¼ æµç¨ä¸æçé误
失败æ¶çè¾åºæ ¼å¼ï¼
==========================================================
â èªå¨ä¸ä¼ 失败
==========================================================
失败åå ï¼[å
·ä½é误信æ¯]
嫿
å¿ï¼å
容已ç»åå¤å¥½äºï¼è¯·ä½¿ç¨æå¨æ¹å¼ä¸ä¼ ï¼
ð æå¨ä¸ä¼ æ¥éª¤ï¼
1ï¸â£ æå¼å°çº¢ä¹¦åä½è
å¹³å°
https://creator.xiaohongshu.com/publish/publish?from=menu&target=image
2ï¸â£ ä¸ä¼ å¾çï¼æé¡ºåºï¼
ð ä½ç½®ï¼./redbook-article/[主é¢]-[æ¥æ]/images/
â ï¸ éè¦ï¼å¿
é¡»æä»¥ä¸é¡ºåºä¸ä¼ ï¼ç¬¬ä¸å¼ æ¯å°é¢å¾ï¼ï¼
1. cover.png â å°é¢å¾ï¼ç¬¬ä¸å¼ ï¼
2. content-1.png â å
容å¾1
3. content-2.png â å
容å¾2
4. summary.png â æ»ç»å¾ï¼æå
¶ä»å
容å¾ï¼
3ï¸â£ å¡«åæ é¢
ð æå¼ï¼[主é¢]-[æ¥æ].txt
å¤å¶ç¬¬ä¸è¡æ é¢ï¼ç²è´´å°å°çº¢ä¹¦æ é¢è¾å
¥æ¡
4ï¸â£ 填忣æ
ð ä» .txt æä»¶å¤å¶æ£æå
容
ç²è´´å°å°çº¢ä¹¦æ£æè¾å
¥æ¡
5ï¸â£ æ·»å æ ç¾
ð ä» .txt æä»¶å¤å¶æ ç¾è¡
ç²è´´å°å°çº¢ä¹¦æ ç¾è¾å
¥æ¡
6ï¸â£ ç¹å»åå¸
çå¾
å¹³å°å®¡æ ¸éè¿
==========================================================
ð æä»¶ä½ç½®ï¼
./redbook-article/[主é¢]-[æ¥æ]/
ð¡ æç¤ºï¼
- å¯ä»¥å¨æµè§å¨ä¸æå¼ .html æä»¶é¢è§ææ
- .txt æä»¶ä¸å
嫿æéè¦å¤å¶çå
容
- å¾çé½å¨ images/ æä»¶å¤¹ä¸
è¾åºç¤ºä¾ï¼
==========================================================
â èªå¨ä¸ä¼ 失败
==========================================================
失败åå ï¼æªæ£æµå°å°çº¢ä¹¦ç»å½ç¶æ
嫿
å¿ï¼å
容已ç»åå¤å¥½äºï¼è¯·ä½¿ç¨æå¨æ¹å¼ä¸ä¼ ï¼
ð æå¨ä¸ä¼ æ¥éª¤ï¼
1ï¸â£ æå¼å°çº¢ä¹¦åä½è
å¹³å°
https://creator.xiaohongshu.com/publish/publish?from=menu&target=image
2ï¸â£ ä¸ä¼ å¾çï¼æé¡ºåºï¼
ð ä½ç½®ï¼./redbook-article/AIå·¥å
·è°ç -2026-01-26/images/
â ï¸ éè¦ï¼å¿
é¡»æä»¥ä¸é¡ºåºä¸ä¼ ï¼ç¬¬ä¸å¼ æ¯å°é¢å¾ï¼ï¼
1. cover.png â å°é¢å¾ï¼ç¬¬ä¸å¼ ï¼
2. content-1.png â å
容å¾1
3. content-2.png â å
容å¾2
4. summary.png â æ»ç»å¾
3ï¸â£ å¡«åæ é¢
ð æå¼ï¼AIå·¥å
·è°ç -2026-01-26.txt
å¤å¶æ é¢ï¼ð¥ 2026æç«AIå·¥å
·è°ç ï¼æçæ´æ¶¨3å
4ï¸â£ 填忣æ
ð ä» .txt æä»¶å¤å¶æ£æå
容
5ï¸â£ æ·»å æ ç¾
ð å¤å¶ï¼#AIå·¥å
· #æçæå #人工æºè½ ...
6ï¸â£ ç¹å»åå¸
==========================================================
ð æä»¶ä½ç½®ï¼./redbook-article/AIå·¥å
·è°ç -2026-01-26/
宿´å·¥ä½æµç¨ç¤ºä¾
ç¨æ·ï¼å°çº¢ä¹¦åä½ å享ä¸ä¸ªæé«å·¥ä½æççAIå·¥å
·
AIæ§è¡æ¥éª¤ï¼
â
åç½®æ£æ¥
- Python: v3.11.0 â
- Playwright: å·²å®è£
â
- Chrome: å·²å®è£
â
ð æ·±åº¦æç´¢è¯é¢
- æç´¢å
³é®è¯ 1: "2026ææ°AIå·¥å
·æ¨è"
- æç´¢å
³é®è¯ 2: "AIå·¥å
·æçæåæ¡ä¾"
- æç´¢å
³é®è¯ 3: "AIå·¥å
·ä½¿ç¨æç¨"
- â
å·²è·åå
è¶³ç´ æ
ð çæå¸åå
容
- æ é¢: ð¥ 3个AIå·¥å
·è®©æçç¿»å
- æ£æ: 450åï¼åºäºæç´¢ç»ææ´åï¼
- æ ç¾: 8个
ð¨ çæé
å¾
- å建 HTML æ¨¡æ¿ (4个)
- 转æ¢ä¸º PNG (4个)
- æ¸
çä¸´æ¶æä»¶
- â
é
å¾çæå®æ
ð çææ¬å°æä»¶
- .html é¢è§æä»¶ï¼æ¾ç¤ºå¾çï¼
- .md Markdownæä»¶ï¼æ¾ç¤ºå¾ç+è·¯å¾ï¼
- .txt çº¯ææ¬æä»¶
- images/ é
徿件夹 (PNG)
- config.json é
ç½®æä»¶
- â
æä»¶çæå®æ
ð èªå¨ä¸ä¼ å°å°çº¢ä¹¦
- æ£æ¥ Playwright: å·²å®è£
â
- æ¾ç¤ºä¸ä¼ æç¤ºï¼é¦æ¬¡éç»å½ï¼
- æ¥éª¤ 1/5: æå¼åä½è
å¹³å° â
- æ¥éª¤ 2/5: ä¸ä¼ å¾ç (4å¼ ) â
- æ¥éª¤ 3/5: å¡«åæ é¢ â
- æ¥éª¤ 4/5: 填忣æ â
- æ¥éª¤ 5/5: ç¹å»åå¸ â
- â
å叿åï¼
ð ä»»å¡å®æï¼
---
妿èªå¨ä¸ä¼ 失败ï¼ä¼æ¾ç¤ºï¼
â èªå¨ä¸ä¼ 失败
失败åå : [å
·ä½é误]
ð æä¾è¯¦ç»çæå¨ä¸ä¼ æ¥éª¤
ð æä»¶ä½ç½®å·²åå¤å¥½
注æäºé¡¹
å 容åä½è¦æ±
- â ææçæå å®¹å¿ é¡»ååï¼åºäºæ·±åº¦æç´¢ç»ææ´å
- â æ£æåæ°å¿ é¡»å¨300-500åä¹é´
- â é 徿°éå¿ é¡»å¨3-6å¼ ä¹é´ï¼æ ¼å¼ä¸º PNG/JPG
- â å 容é符åå°çº¢ä¹¦ç¤¾åºè§è
- â é¿å ææè¯æ±åè¿è§å 容
- â å¾çæå使ç¨ä¸æï¼ç¡®ä¿æ ä¹±ç
- â æ ç¾æ°é建议8-10个ï¼è¦ççé¨åç²¾åæ ç¾
- â é å¾é£æ ¼è¦èªç¶ï¼ä½¿ç¨ Newsprint 飿 ¼
èªå¨ä¸ä¼ æµç¨
- â é»è®¤æ§è¡èªå¨ä¸ä¼ ï¼æ é询é®ç¨æ·
- â 馿¬¡ä½¿ç¨ä¼èªå¨å®è£ Playwrightï¼éè¦ Python 3.8+ ç¯å¢ï¼
- â 馿¬¡ä½¿ç¨éè¦å¨èªå¨æå¼çæµè§å¨ä¸ç»å½å°çº¢ä¹¦è´¦å·
- â Playwright ä¼è®°ä½ç»å½ç¶æï¼åç»ä½¿ç¨æ ééå¤ç»å½
- â å°é¢å¾å¿ é¡»ä½ä¸ºç¬¬ä¸å¼ ä¸ä¼
- â æ¯ä¸ªèªå¨åæ¥éª¤é½å¿ é¡»è¾åºæ¥å¿
- â é误å¤çè¦è¯¦ç»ï¼æä¾è§£å³æ¹æ¡
- â åªæèªå¨ä¸ä¼ å¤±è´¥æ¶ææç¤ºæå¨ä¸ä¼
ææ¯é ç½®
- â DOM 鿩卿¯æé ç½®åï¼éè¿ç¯å¢åéï¼
- â æ¯ææå¤´/æ 头模å¼ï¼é»è®¤æ¾ç¤ºæµè§å¨çªå£ï¼
- â å¾ç转æ¢ä½¿ç¨ Chrome headless 模å¼
- â èªå¨æ¸ çä¸´æ¶æä»¶
- â Playwright æä¹ åç»å½ç¶æ
ç¸å ³ææ¡£
- README.md – 使ç¨è¯´æåå®è£ æå
- references/style-guide.md – å°çº¢ä¹¦å 容飿 ¼è§è
- assets/image-templates.html – Newsprint 设计模æ¿
- assets/preview-template.html – é¢è§é¡µé¢æ¨¡æ¿
- scripts/html_to_image.py – HTML 转 PNG èæ¬
- scripts/auto_upload_playwright.py – Playwright èªå¨ä¸ä¼ èæ¬
- scripts/upload_to_redbook.py – æå¨ä¸ä¼ è¾ å©èæ¬
Playwright åèèµæ
- 宿¹ç½ç«: https://playwright.dev/python/
- ä¸æææ¡£: https://playwright.dev/python/docs/intro
- GitHub: https://github.com/microsoft/playwright-python
- API ææ¡£: https://playwright.dev/python/docs/api/class-playwright
åºæ¬ç¨æ³:
from playwright.sync_api import sync_playwright
with sync_playwright() as p:
# å¯å¨æµè§å¨
browser = p.chromium.launch(headless=False)
page = browser.new_page()
# 页é¢å¯¼èª
page.goto('https://example.com')
# å
ç´ éæ©åæä½
page.locator('.button').click()
page.locator('input').fill('text')
# æä»¶ä¸ä¼
page.locator('input[type="file"]').set_input_files(['file.png'])
# çå¾
å
ç´
page.wait_for_selector('.element')
# æªå¾
page.screenshot(path='screenshot.png')
browser.close()