{"slug":"jianshuo-wjs-publishing-wechat-4311f6","title":"\u5fae\u4fe1\u516c\u4f17\u53f7\u5199\u4f5c\u4e0e\u8349\u7a3f\u53d1\u5e03","description":"\u9762\u5411\u5fae\u4fe1\u516c\u4f17\u53f7\u7684\u5199\u4f5c\u53d1\u5e03\u6d41\u7a0b\uff1a\u4ee5STYLE.md\u4e3a\u98ce\u683c\u6743\u5a01\uff0c\u505a\u8f7b\u6da6\u8272\u3001\u9690\u79c1\u626b\u63cf\u3001\u6807\u9898\u5019\u9009\u3001\u9898\u56fe\u4e0e\u89e3\u91ca\u56fe\u751f\u6210\uff0c\u5e76\u7528\u811a\u672c\u8f6c\u6362HTML\u3001\u4e0a\u4f20\u8349\u7a3f\u3002\u4f9d\u8d56md2wechat\u3001\u56fe\u50cf\u751f\u6210skill\u4e0e\u516c\u4f17\u53f7\u540e\u53f0\u767d\u540d\u5355\uff0c\u9700\u7528\u6237\u81ea\u5907\u8d26\u53f7\u4e0e\u51ed\u636e\u3002","category":"\u53d1\u5e03\u4e0e\u8fd0\u8425","tags":["jianshuo","\u5efa\u7855","\u53d1\u5e03\u4e0e\u8fd0\u8425"],"author":"\u5efa\u7855 \u00b7 jianshuo","source_url":"https://github.com/jianshuo/claude-skills/blob/d36bc423286a34eb32adc604121e5c7714b08740/wjs-publishing-wechat/SKILL.md","license":"MIT","status":"published","verification":"source_reviewed","verification_notes":"\u5df2\u6838\u5bf9\u539f\u59cb\u4ed3\u5e93\u3001\u56fa\u5b9a\u63d0\u4ea4\u3001\u8bb8\u53ef\u3001\u6280\u80fd\u6b63\u6587\u4e0e\u5305\u7ed3\u6784\uff0c\u5e76\u8865\u5145\u4e2d\u6587\u6267\u884c\u9a8c\u6536\u8bf4\u660e\uff1b\u672a\u8fd0\u884c\u5305\u5185\u811a\u672c\u3002","revision":"eb60eceacb3842768644dbfb31ca1c5f","created_at":"2026-11-02T14:47:08+00:00","updated_at":"2026-11-02T14:47:08+00:00","source_repo":"jianshuo/claude-skills","source_path":"wjs-publishing-wechat/SKILL.md","source_commit":"d36bc423286a34eb32adc604121e5c7714b08740","source_updated_at":"2026-11-02T14:46:04+00:00","stars":0,"proxy_score":null,"score":null,"grade":null,"dimensions":{},"evaluation":{},"installs":0,"platforms":[],"formats":[],"category_slug":"publishing","category_name":"\u53d1\u5e03\u4e0e\u8fd0\u8425","quality":{"review_type":"text_and_package_review","readiness":"requires_setup","reviewed_at":"2026-11-02T14:46:04+00:00","review_summary":"\u5199\u4f5c\u5230\u8349\u7a3f\u4e0a\u4f20\u7684\u6d41\u7a0b\u5b8c\u6574\uff0c\u98ce\u683c\u4e0e\u9690\u79c1\u5173\u5361\u660e\u786e\uff0c\u4f46\u9700\u914d\u7f6emd2wechat\u3001\u56fe\u50cf\u751f\u6210skill\u3001\u516c\u4f17\u53f7\u767d\u540d\u5355\u4e0e\u51ed\u636e\u540e\u624d\u80fd\u6267\u884c\uff1b\u811a\u672c\u672a\u5b9e\u9645\u8fd0\u884c\u9a8c\u8bc1\uff0c\u56fa\u5b9a\u8def\u5f84\u9700\u6309\u5b89\u88c5\u4f4d\u7f6e\u8c03\u6574\u3002","cost_notes":"\u56fe\u50cf\u751f\u6210\u7ecfgpt-image-2-skill\u7684codex provider\uff0c\u53ef\u80fd\u4ea7\u751f\u5916\u90e8\u670d\u52a1\u8d39\u7528\uff0c\u9700\u7528\u6237\u81ea\u884c\u786e\u8ba4\uff1b\u516c\u4f17\u53f7API\u672c\u8eab\u4e0d\u62a5\u4ef7\u3002","source_sha256":"ad281833a9ad4dfe22b1963b9cb92df2679b4fa5088992a70be0596e2e70bfa1","prerequisites":["md2wechat CLI\u5e76\u914d\u7f6eWECHAT_APPID\u4e0eWECHAT_SECRET","\u5f53\u524d\u516c\u7f51IP\u5728\u516c\u4f17\u53f7\u540e\u53f0\u767d\u540d\u5355","gpt-image-2-skill\u53ca~/.codex/auth.json\u7528\u4e8e\u914d\u56fe\u751f\u6210","Python 3\u4e0ebash","\u53ef\u9009\uff1a\u5df2\u767b\u5f55\u6d4f\u89c8\u5668\u4f1a\u8bdd\u6216WECHAT_MP_COOKIE/TOKEN/FAKEID\u7528\u4e8e\u56de\u586bpermalink","\u53ef\u9009\uff1agit\u4ed3\u5e93\u7528\u4e8e\u81ea\u52a8commit/push"],"checks":["article.md\u4e2dillustration.png\u5df2\u88ab\u5f15\u7528\uff0ccontent.html\u4e2dmmbiz\u56fe\u7247\u6570\u4e0e\u6b63\u6587\u56fe\u7247\u6570\u4e00\u81f4\u4e14\u65e0\u6b8b\u7559\u672c\u5730img-\u8def\u5f84","meta.json\u5b57\u6bb5\u9f50\u5168\uff0c\u6807\u9898\u4e3a\u7528\u6237\u5728Step 5.5\u786e\u8ba4\u7684\u7248\u672c","\u9690\u79c1\u626b\u63cf\u5df2\u6267\u884c\u5e76\u5217\u51fa\u547d\u4e2d\u9879\u6216\u660e\u786e\u65e0\u547d\u4e2d","cover.png\u4e3a900\u00d7383\uff0c\u89e3\u91ca\u56fe\u6bd4\u4f8b\u7531\u5185\u5bb9\u51b3\u5b9a\u4e14\u65e0\u5f15\u5bfc\u8bed","\u8349\u7a3f\u5728\u516c\u4f17\u53f7\u540e\u53f0\u53ef\u89c1\uff0cerrcode\u672a\u51fa\u73b040164/45004\u7b49\u5df2\u77e5\u9519\u8bef"],"limitations":["\u811a\u672c\u672a\u5728\u672c\u6b21\u5ba1\u9605\u4e2d\u8fd0\u884c\uff0c\u4e0a\u4f20\u4e0e\u914d\u56fe\u884c\u4e3a\u4ee5\u6e90\u7801\u548c\u6587\u6863\u4e3a\u51c6","\u4f9d\u8d56\u516c\u4f17\u53f7\u540e\u53f0\u767d\u540d\u5355\u4e0e\u51ed\u636e\uff0c\u73af\u5883\u4e0d\u6ee1\u8db3\u65f6\u65e0\u6cd5\u5b8c\u6210\u4e0a\u4f20","permalink\u56de\u586b\u4f9d\u8d56\u7f51\u9875session\uff0ccookie\u6570\u5c0f\u65f6\u8fc7\u671f\uff0c\u9700\u5076\u5c14\u7ef4\u62a4","\u81ea\u52a8\u6253\u5f00\u8349\u7a3f\u7f16\u8f91\u9875\u4f9d\u8d56\u5df2\u767b\u5f55\u6d4f\u89c8\u5668\uff0c\u672a\u767b\u5f55\u65f6\u56de\u9000\u9996\u9875"],"issues":["SKILL.md\u4e2d\u591a\u5904\u4f7f\u7528~/.claude/skills/\u56fa\u5b9a\u8def\u5f84\uff0c\u7528\u6237\u5b89\u88c5\u4f4d\u7f6e\u4e0d\u540c\u65f6\u9700\u81ea\u884c\u8c03\u6574","\u4ecb\u7ecdskill\u7c7b\u6587\u7ae0\u672b\u5c3e\u7684\u5b89\u88c5\u65b9\u6cd5\u6a21\u677f\u542b\u7279\u5b9a\u4ed3\u5e93\u4e0e\u4f5c\u8005\u4fe1\u606f\uff0c\u901a\u7528\u573a\u666f\u9700\u66ff\u6362","fetch-comments\u4e0emass-send\u7b49\u811a\u672c\u5728SKILL.md\u4e3b\u6d41\u7a0b\u4e2d\u672a\u8bf4\u660e\u4f7f\u7528\u6761\u4ef6\uff0c\u5b58\u5728\u6587\u6863\u4e0e\u811a\u672c\u8303\u56f4\u4e0d\u5b8c\u5168\u5bf9\u5e94\u7684\u60c5\u51b5\uff0c\u5f85\u6838\u5b9e"],"missing_files":[]},"quality_url":"https://shiliuai.cn/api/v2/skills/jianshuo-wjs-publishing-wechat-4311f6/files/SHILIU-QUALITY.md","usage_guide":{"task":"\u628a\u96f6\u6563\u601d\u8def\u6216\u8349\u7a3f\u6da6\u8272\u6210\u516c\u4f17\u53f7\u6587\u7ae0\uff0c\u751f\u6210\u914d\u56fe\uff0c\u4ea7\u51fa\u6587\u7ae0\u6587\u4ef6\u5305\u5e76\u4e0a\u4f20\u4e3a\u516c\u4f17\u53f7\u8349\u7a3f","inputs":"\u7528\u6237\u539f\u59cb\u8349\u7a3f\u6216\u601d\u8def\uff1bSTYLE.md\u98ce\u683c\u6587\u4ef6\uff1bmeta.json\u6240\u9700\u6807\u9898\u3001\u6458\u8981\u3001\u4f5c\u8005\u3001\u65e5\u671f\u3001slug\uff1bmd2wechat CLI\u53caWECHAT_APPID/WECHAT_SECRET\uff1b\u516c\u4f17\u53f7\u540e\u53f0IP\u767d\u540d\u5355\uff1b\u53ef\u9009\u672c\u5730\u622a\u56fe\uff1b\u53ef\u9009\u4f1a\u8bdd\u51ed\u636e\u7528\u4e8e\u56de\u586bpermalink","outputs":"articles/YYYY-MM-DD-{slug}/\u76ee\u5f55\uff0c\u542barticle.md\u3001cover.png\uff08900\u00d7383\uff09\u3001illustration.png\u3001meta.json\u3001original.md\uff1bcontent.html\u4e0edraft.json\uff1b\u516c\u4f17\u53f7\u8349\u7a3f\u7bb1\u4e2d\u7684\u8349\u7a3f\uff1b\u9690\u79c1\u626b\u63cf\u4e0e\u6539\u52a8\u6e05\u5355\uff1b\u6807\u9898\u5019\u9009\u53ca\u7528\u6237\u9009\u5b9a\u7ed3\u679c","example_input":"\u6211\u6709\u4e00\u6bb5\u5173\u4e8e\u8fdc\u7a0b\u529e\u516c\u7684\u96f6\u6563\u7b14\u8bb0\uff0c\u8bf7\u6309STYLE.md\u6da6\u8272\u6210\u516c\u4f17\u53f7\u6587\u7ae0\uff0c\u5148\u505a\u9690\u79c1\u626b\u63cf\uff0c\u7ed9\u6807\u9898\u5019\u9009\u548c\u6458\u8981\uff0c\u751f\u6210\u9898\u56fe\u548c\u89e3\u91ca\u56fe\uff0c\u6253\u5305\u540e\u7b49\u6211\u9009\u6807\u9898\u518d\u4e0a\u4f20\u8349\u7a3f\u3002","example_output":"\u793a\u610f\uff1aarticles/2026-05-09-yuancheng/\u4e0b\u751f\u6210article.md\u3001cover.png\u3001illustration.png\u3001meta.json\u3001original.md\uff1b\u8f93\u51fa\u9690\u79c1\u626b\u63cf\u7ed3\u679c\u4e0e\u6539\u52a8\u6e05\u5355\uff1b\u5217\u51faA\u539f\u6807\u9898\u4e0eB/C/D\u5019\u9009\uff1b\u7528\u6237\u9009\u5b9a\u540e\u66f4\u65b0meta.json\u5e76\u8fd0\u884cupload-draft.sh\uff0c\u8349\u7a3f\u51fa\u73b0\u5728\u540e\u53f0\u3002\u5b9e\u9645\u7ed3\u679c\u4ee5\u8fd0\u884c\u73af\u5883\u4e3a\u51c6\u3002"},"read_url":"https://shiliuai.cn/api/v2/skills/jianshuo-wjs-publishing-wechat-4311f6","skill_url":"https://shiliuai.cn/api/v2/skills/jianshuo-wjs-publishing-wechat-4311f6/files/SKILL.md","download_url":"https://shiliuai.cn/api/v2/skills/jianshuo-wjs-publishing-wechat-4311f6/download","install_url":"https://shiliuai.cn/api/v2/skills/jianshuo-wjs-publishing-wechat-4311f6/install","files":[{"path":"LICENSE","bytes":1070,"url":"https://shiliuai.cn/api/v2/skills/jianshuo-wjs-publishing-wechat-4311f6/files/LICENSE"},{"path":"README.md","bytes":4851,"url":"https://shiliuai.cn/api/v2/skills/jianshuo-wjs-publishing-wechat-4311f6/files/README.md"},{"path":"SHILIU-QUALITY.md","bytes":2186,"url":"https://shiliuai.cn/api/v2/skills/jianshuo-wjs-publishing-wechat-4311f6/files/SHILIU-QUALITY.md"},{"path":"SKILL.md","bytes":14590,"url":"https://shiliuai.cn/api/v2/skills/jianshuo-wjs-publishing-wechat-4311f6/files/SKILL.md"},{"path":"STYLE.md","bytes":11068,"url":"https://shiliuai.cn/api/v2/skills/jianshuo-wjs-publishing-wechat-4311f6/files/STYLE.md"},{"path":"prompts/cover-prompt.md","bytes":21109,"url":"https://shiliuai.cn/api/v2/skills/jianshuo-wjs-publishing-wechat-4311f6/files/prompts/cover-prompt.md"},{"path":"prompts/illustration-prompt.md","bytes":2873,"url":"https://shiliuai.cn/api/v2/skills/jianshuo-wjs-publishing-wechat-4311f6/files/prompts/illustration-prompt.md"},{"path":"scripts/backfill-permalinks.py","bytes":9558,"url":"https://shiliuai.cn/api/v2/skills/jianshuo-wjs-publishing-wechat-4311f6/files/scripts/backfill-permalinks.py"},{"path":"scripts/build-recent-articles.py","bytes":5586,"url":"https://shiliuai.cn/api/v2/skills/jianshuo-wjs-publishing-wechat-4311f6/files/scripts/build-recent-articles.py"},{"path":"scripts/fetch-comments-by-cookie.sh","bytes":12503,"url":"https://shiliuai.cn/api/v2/skills/jianshuo-wjs-publishing-wechat-4311f6/files/scripts/fetch-comments-by-cookie.sh"},{"path":"scripts/fetch-comments-via-gstack.sh","bytes":11097,"url":"https://shiliuai.cn/api/v2/skills/jianshuo-wjs-publishing-wechat-4311f6/files/scripts/fetch-comments-via-gstack.sh"},{"path":"scripts/fetch-comments.sh","bytes":5510,"url":"https://shiliuai.cn/api/v2/skills/jianshuo-wjs-publishing-wechat-4311f6/files/scripts/fetch-comments.sh"},{"path":"scripts/gen-cover-ai.sh","bytes":3925,"url":"https://shiliuai.cn/api/v2/skills/jianshuo-wjs-publishing-wechat-4311f6/files/scripts/gen-cover-ai.sh"},{"path":"scripts/gen-illustration.sh","bytes":3087,"url":"https://shiliuai.cn/api/v2/skills/jianshuo-wjs-publishing-wechat-4311f6/files/scripts/gen-illustration.sh"},{"path":"scripts/mass-send.sh","bytes":7338,"url":"https://shiliuai.cn/api/v2/skills/jianshuo-wjs-publishing-wechat-4311f6/files/scripts/mass-send.sh"},{"path":"scripts/open-draft-edit.sh","bytes":5455,"url":"https://shiliuai.cn/api/v2/skills/jianshuo-wjs-publishing-wechat-4311f6/files/scripts/open-draft-edit.sh"},{"path":"scripts/pangu.py","bytes":3005,"url":"https://shiliuai.cn/api/v2/skills/jianshuo-wjs-publishing-wechat-4311f6/files/scripts/pangu.py"},{"path":"scripts/update-draft-via-api.py","bytes":3974,"url":"https://shiliuai.cn/api/v2/skills/jianshuo-wjs-publishing-wechat-4311f6/files/scripts/update-draft-via-api.py"},{"path":"scripts/upload-draft.sh","bytes":19836,"url":"https://shiliuai.cn/api/v2/skills/jianshuo-wjs-publishing-wechat-4311f6/files/scripts/upload-draft.sh"},{"path":"shiliu-quality.json","bytes":2096,"url":"https://shiliuai.cn/api/v2/skills/jianshuo-wjs-publishing-wechat-4311f6/files/shiliu-quality.json"},{"path":"shiliu-source.json","bytes":273,"url":"https://shiliuai.cn/api/v2/skills/jianshuo-wjs-publishing-wechat-4311f6/files/shiliu-source.json"},{"path":"usage.json","bytes":1206,"url":"https://shiliuai.cn/api/v2/skills/jianshuo-wjs-publishing-wechat-4311f6/files/usage.json"}],"content":"---\nname: wjs-publishing-wechat\ndescription: \u5f53\u7528\u6237\u60f3\u5199\u6216\u53d1\u5e03\u5fae\u4fe1\u516c\u4f17\u53f7\u6587\u7ae0\u65f6\u4f7f\u7528\u2014\u2014\u4ed6\u4eec\u7ed9\u51fa\u96f6\u6563\u601d\u8def\u3001\u8349\u7a3f\u6216\u7b14\u8bb0\uff0c\u8bf7\u4f60\u6da6\u8272\u3001\u751f\u6210\u9898\u56fe\u548c\u89e3\u91ca\u56fe\uff0c\u6216\u51c6\u5907\u4e0a\u4f20\u5230 mp.weixin.qq.com\u3002\u89e6\u53d1\u8bcd\uff1a\"\u5199\u4e00\u7bc7\u5fae\u4fe1\u6587\u7ae0\"\u3001\"\u516c\u4f17\u53f7\"\u3001\"\u6da6\u8272\"\u3001\"\u9898\u56fe\"\u3001\"\u53d1\u516c\u4f17\u53f7\"\u3001\"/wjs-publishing-wechat\"\u3002\n---\n\n# wjs-publishing-wechat\n\n\u5e2e\u7528\u6237\u5199\u5fae\u4fe1\u516c\u4f17\u53f7\u6587\u7ae0\u3002**\u8f7b\u6da6\u8272\uff0c\u4e0d\u91cd\u5199\u3002** \u81ea\u52a8\u751f\u6210\u9898\u56fe\u548c\u89e3\u91ca\u56fe\uff0c\u4e00\u884c\u547d\u4ee4\u63a8\u8349\u7a3f\u3002\n\n## \u26a0\ufe0f \u98ce\u683c\u552f\u4e00\u6743\u5a01\uff1aSTYLE.md\uff08\u5199\u4f5c / \u6da6\u8272\u524d\u5fc5\u8bfb\uff09\n\n**\u5199\u6216\u6da6\u8272\u6bcf\u4e00\u7bc7\u6587\u7ae0\u524d\uff0c\u5148\u8bfb\u540c\u76ee\u5f55\u7684 [`STYLE.md`](./STYLE.md)\uff0c\u5e76\u4e25\u683c\u9075\u5faa\u3002** \u90a3\u662f\u738b\u5efa\u7855\u672c\u4eba\u7ef4\u62a4\u7684\u98ce\u683c\u5b9a\u4e49\u6587\u4ef6\u2014\u2014\u8bed\u6c14 DNA\u3001\u957f\u5ea6\u3001\u52a0\u7c97\u3001\u6392\u7248\u3001\u7ea2\u7ebf\u6e05\u5355\u5168\u5728\u90a3\u91cc\u3002\u672c SKILL.md \u53ea\u7ba1**\u673a\u5236\u4e0e\u5de5\u4f5c\u6d41**\uff08\u811a\u672c\u3001\u914d\u56fe\u3001HTML \u8f6c\u6362\u3001\u53d1\u5e03\uff09\u3002\n\n\u98ce\u683c\u4e0a STYLE.md \u4e0e\u672c\u6587\u4ef6\u51b2\u7a81\u65f6\uff0c**\u4ee5 STYLE.md \u4e3a\u51c6**\u3002\u8981\u8c03\u98ce\u683c = \u6539 STYLE.md\uff0c\u4e0d\u5728\u8fd9\u91cc\u6539\u3001\u66f4\u4e0d\u5728\u8349\u7a3f\u91cc\u6539\u3002\n\n\u4e0b\u9762\u53ea\u4fdd\u7559\u673a\u5236\u76f8\u5173\u7684\u5199\u4f5c\u7ea6\u675f\uff1a\n\n- **\u5b57\u6570**\uff08STYLE.md \u5b9a\u9884\u7b97\uff0c\u8fd9\u91cc\u7ed9\u8ba1\u6570\u547d\u4ee4\uff09\uff1a\n\n```bash\npython3 -c \"import re; t=open('article.md').read(); t=re.sub(r'\\!\\[.*?\\]\\(.*?\\)','',t); print(len(re.findall(r'[\u4e00-\u9fff]',t)) + len(re.findall(r'[A-Za-z]+',t)))\"\n```\n\n- **\u52a0\u7c97\u52a0\u7ea2\u7684\u673a\u5236**\uff1a`upload-draft.sh` \u628a `**...**` \u6e32\u67d3\u6210\u7ea2\u8272\u7c97\u4f53\uff08\u7528\u6cd5\u89c1 STYLE.md\u300c\u52a0\u7c97\u52a0\u7ea2\u300d\uff09\u3002\n- **\u76d8\u53e4\u4e4b\u767d\u7684\u673a\u5236**\uff1a`upload-draft.sh` \u81ea\u52a8\u8dd1 `scripts/pangu.py`\uff0cClaude \u4e0d\u7528\u624b\u52a8\u52a0\u7a7a\u683c\u3002\n- **\u547d\u4ee4 / \u4ee3\u7801\u72ec\u7acb\u6210\u6bb5\u7684\u5199\u6cd5**\uff08\u89c4\u5219\u89c1 STYLE.md\uff0c\u8fd9\u91cc\u7ed9\u53ef\u590d\u5236\u7684\u6837\u5f0f\uff09\uff1a\n  - **\u9996\u9009**\u2014\u2014\u6de1\u5e95\u8272\u4ee3\u7801\u5757\uff08raw HTML \u5757\uff0c\u6574\u6bb5\u4e00\u884c\uff0c\u5185\u90e8\u4e0d\u80fd\u6709\u7a7a\u884c\uff09\uff1a\n    ```\n    <section style=\"background:#f6f8fa;border-radius:6px;padding:14px 16px;overflow-x:auto;font-family:Menlo,Consolas,monospace;font-size:14px;line-height:1.8;color:#24292e;\">npm install -g xxx<br>xxx run</section>\n    ```\n  - \u6216 fenced ```` ```bash ```` \u5757\uff0c\u811a\u672c\u8f6c\u6210\u72ec\u7acb `<p><code>\u2026</code></p>`\u3002\n\n## \u4ecb\u7ecd skill \u7684\u6587\u7ae0\uff1a\u672b\u5c3e\u5fc5\u987b\u9644\u5b89\u88c5\u65b9\u6cd5\n\n**\u89e6\u53d1\u6761\u4ef6**\uff1a\u8fd9\u7bc7\u5728\u4ecb\u7ecd / \u63a8\u8350\u67d0\u4e2a\u5177\u4f53\u7684 Claude Code skill\u3002\n\n**\u524d\u7f6e \u2014 \u786e\u8ba4 skill \u5df2\u53d1\u5e03**\uff1a\u738b\u5efa\u7855\u81ea\u5df1\u7684 `wjs-*` skill \u7531 `~/.claude/skills-publish-hook.sh` \u81ea\u52a8 push \u5230 [github.com/jianshuo/claude-skills](https://github.com/jianshuo/claude-skills)\uff0c\u7528 `gh api repos/jianshuo/claude-skills/contents/<skill-name>` \u786e\u8ba4\u3002\u522b\u4eba\u7684 skill \u5148\u786e\u8ba4\u5728\u516c\u5f00 git repo \u91cc\u3002\n\n**\u672b\u5c3e\u9644\u4e0b\u9762\u8fd9\u6bb5**\uff08`<SKILL_NAME>` \u66ff\u6362\u6210\u5b9e\u9645\u540d\uff09\uff1a\n\n```markdown\n## \u5b89\u88c5\u65b9\u6cd5\n\n\u4e0d\u7528\u590d\u5236\u547d\u4ee4\u3002\u6253\u5f00\u4f60\u7528\u7684 AI agent\u2014\u2014Claude Code\u3001Codex\u3001Kimi Code\u3001OpenClaw \u90fd\u53ef\u4ee5\uff0c\u5bf9\u5b83\u8bf4\u4e00\u53e5\uff1a\n\n> \u5b89\u88c5 https://github.com/jianshuo/claude-skills/blob/main/<SKILL_NAME>/SKILL.md\n\n\u5b83\u4f1a\u81ea\u5df1 fetch\u3001\u653e\u5230 skill \u76ee\u5f55\u91cc\u3001\u63d0\u793a\u4f60\u91cd\u542f\u5bf9\u8bdd\u3002\n\n\u7528 Hermes \u7684\u8bdd\u76f4\u63a5\u547d\u4ee4\u884c\uff1a\n\n\\`\\`\\`bash\nhermes skills install https://github.com/jianshuo/claude-skills/blob/main/<SKILL_NAME>/SKILL.md\n\\`\\`\\`\n\n\u88c5\u5b8c\u4e4b\u540e\uff0c\u5bf9 agent \u8bf4\u4e00\u53e5\u300c<\u4e00\u53e5\u6700\u81ea\u7136\u7684\u89e6\u53d1\u8bed\uff0c\u7d27\u6263\u8fd9\u4e2a skill \u7684\u5165\u53e3>\u300d\uff0c\u5c31\u80fd\u7528\u3002\n```\n\n\u89c4\u5219\uff1a\n1. \u8fd9\u6bb5**\u4e0d\u8ba1\u5165** 800\u20131000 \u5b57\u9884\u7b97\n2. URL \u7528 `github.com/<owner>/<repo>/blob/main/<path>`\u2014\u2014\u6d4f\u89c8\u5668\u80fd\u76f4\u63a5\u770b\uff0cLLM agent \u4e5f\u80fd\u4ece blob URL \u62bd markdown\n3. Hermes \u5355\u72ec\u5217**\u547d\u4ee4\u884c**\uff0c\u56e0\u4e3a\u5b83\u662f registry CLI \u800c\u975e chat agent\n4. \u6700\u540e\u90a3\u53e5\u89e6\u53d1\u8bed\u6309\u5f53\u524d skill \u5b9e\u9645\u5165\u53e3\u5199\uff0c**\u4e0d\u8981\u6f0f**\n5. \u901a\u5e38\u653e\u6700\u540e\uff1b\u6709 `## \u540e\u6ce8` \u5219\u653e\u540e\u6ce8\u4e4b\u524d\n\n## \u5de5\u4f5c\u6d41\n\n### Step 0: \u63a5\u6536\u8f93\u5165\n\n\u8f93\u5165\u5f62\u5f0f\uff1a\u5b8c\u6574\u8349\u7a3f / \u6563\u4e71\u601d\u8def / \u957f\u6bb5\u6ca1\u5206\u6bb5 / \u8bed\u97f3\u8f6c\u5199\uff08\u53ef\u80fd\u6709\u9519\u5b57\uff09\u3002\u592a\u6563\u5c31**\u95ee\u4e00\u4e2a\u95ee\u9898**\uff1a\"\u60f3\u5199\u4e00\u7bc7\u6587\u7ae0\uff0c\u8fd8\u662f\u51e0\u4e2a\u72ec\u7acb\u60f3\u6cd5\uff1f\"\u2014\u2014\u53ea\u95ee\u8fd9\u4e00\u6b21\u3002\n\n### Step 1: \u8f7b\u6da6\u8272\n\n- \u4fee\u9519\u5b57\uff08\"\u7684\u5f97\u5730\"\u3001\u540c\u97f3\u5b57\u3001\"\u6211\u6211\"\u91cd\u590d\u5b57\uff09\n- \u6bcf 1\u20133 \u53e5\u4e00\u6bb5\n- \u62d7\u53e3\u5904\u505a\u6700\u5c0f\u6539\u52a8\uff1b\u6539\u5b8c\u8bed\u6c14\u53d8\u4e86\u5b81\u53ef\u4e0d\u6539\n- \u6807\u70b9\uff1a\u4e2d\u6587\u5168\u89d2\uff0c\u82f1\u6587 / \u6570\u5b57\u95f4\u7a7a\u683c\n- \u4fdd\u7559\u539f\u672c\u5f00\u5934\u548c\u7ed3\u5c3e\n\n### Step 1.5: \u9690\u79c1\u626b\u63cf\uff08\u5b9a\u7a3f\u524d\u786c\u5173\u5361\uff09\n\n**\u89e6\u53d1**\uff1a\u6da6\u8272\u5b8c\u3001\u6587\u5b57\u5373\u5c06\u5b9a\u7a3f\u4e4b\u524d\uff0c\u6bcf\u7bc7\u90fd\u8fc7\u3002**\u9010\u53e5\u626b\u4e2a\u4eba\u9690\u79c1\u4fe1\u606f**\u2014\u2014\u5177\u4f53\u4eba\u540d\u3001\u9910\u5385 / \u5e97\u94fa / \u573a\u6240\u540d\u3001\u7cbe\u786e\u5730\u70b9 / \u4f4f\u5740\u3001\u7535\u8bdd / \u90ae\u7bb1 / \u5fae\u4fe1\u53f7\u7b49\u2014\u2014\u8fd9\u4e9b**\u4e0d\u80fd\u8fdb\u6700\u7ec8\u53d1\u5e03\u7248**\uff0c\u6cdb\u5316\u66ff\u6362\u6216\u5220\u9664\u3002\u5224\u5b9a\u8fb9\u754c\u3001\u66ff\u6362\u793a\u4f8b\u3001\u57ce\u5e02\u7ea7\u5730\u540d\u7167\u7559\u7b49\u7ec6\u5219\u89c1 [`STYLE.md`\u300c10. \u9690\u79c1\u7ea2\u7ebf\u300d](./STYLE.md)\u3002\n\n\u547d\u4e2d\u7684\u9879\u5e76\u8fdb\u4ea4\u4ed8\u6539\u52a8\u6e05\u5355\uff08\u6807\u300c\u9690\u79c1\u300d\uff09\uff1b\u4e00\u5904\u90fd\u6ca1\u6709\u4e5f\u8bf4\u4e00\u53e5\u300c\u9690\u79c1\u626b\u63cf\uff1a\u65e0\u300d\u3002\u62ff\u4e0d\u51c6\u7684\u5217\u51fa\u6765\u95ee\u7528\u6237\uff0c\u4e0d\u64c5\u81ea\u5220\u6709\u610f\u4e3a\u4e4b\u7684\u7ec6\u8282\u3002\n\n### Step 2: \u6807\u9898\u5019\u9009\n\n\u7ed9 **3 \u4e2a\u5019\u9009**\uff1aA) \u76f4\u767d\u578b\uff1bB) \u6545\u4e8b\u578b\uff1bC) \u539f\u6587\u91cc\u6700\u6709\u5473\u9053\u7684\u4e00\u53e5\u3002\u4e0d\u505a\u6807\u9898\u515a\u3001\u5938\u5f20\u3001\"\u9707\u60ca\"\u3001\"\u5fc5\u770b\"\u3002\n\n### Step 3: \u6458\u8981\uff0850\u201380 \u5b57\uff09\n\n**\u52fe\u4f4f\u8bfb\u8005\u3001\u6fc0\u53d1\u70b9\u51fb**\u2014\u2014\u7528\u300c\u597d\u5947\u7f3a\u53e3\u300d\uff1a\u629b\u51fa\u6587\u7ae0\u91cc\u6700\u53cd\u76f4\u89c9 / \u6700\u6709\u5f20\u529b\u7684\u90a3\u4e2a\u70b9\uff08\u7ed3\u8bba\u3001\u4ee3\u4ef7\u3001\u8f6c\u6298\u3001\u6570\u5b57\uff09\uff0c\u4f46**\u7559\u4e00\u624b**\uff0c\u628a\u7b54\u6848\u7559\u5728\u6b63\u6587\uff0c\u8ba9\u4eba\u975e\u70b9\u8fdb\u6765\u4e0d\u53ef\u3002\u4ecd\u662f\u738b\u5efa\u7855\u8bed\u6c14\uff08\u5177\u4f53\u3001\u8bda\u6073\u3001\u8bdd\u8bf4\u4e00\u534a\u7684\u514b\u5236\uff09\uff0c\u94a9\u5b50\u6765\u81ea\u771f\u4e1c\u897f\u4e0d\u662f\u5f62\u5bb9\u8bcd\uff1b**\u7edd\u4e0d**\u6807\u9898\u515a\u3001\u5938\u5f20\u3001\u8425\u9500\u8154\u3002\u4e0d\u662f\u7b2c\u4e00\u6bb5\u7684\u590d\u5236\u3002\u89c4\u5219\u4e0e\u4f8b\u5b50\u89c1 STYLE.md\u300c6. \u6807\u9898\u4e0e\u6458\u8981\u300d\u3002\n\n### Step 4: \u914d\u56fe\uff08\u6bcf\u7bc7\u4e24\u5f20\uff0c\u81ea\u52a8\u751f\u6210\u4e0d\u95ee\u7528\u6237\uff09\n\n- **\u9898\u56fe cover.png** \u2014 **\u4e25\u683c 2.35:1**\uff08900\u00d7383\uff09\uff0c\u5f3a\u5b57\u4f53\u3001\u5f3a\u6784\u56fe\u3001\u6587\u5b57\u4e3b\u5bfc\n- **\u89e3\u91ca\u56fe illustration.png** \u2014 **\u6bd4\u4f8b\u7531\u5185\u5bb9\u51b3\u5b9a**\uff08\u6a21\u578b\u81ea\u9009\uff09\uff0c\u6241\u5e73\u5361\u901a\u3001\u6709\u6807\u7b7e\u548c\u6d41\u7a0b\n\n```bash\n~/.claude/skills/wjs-publishing-wechat/scripts/gen-cover-ai.sh <article-folder> [\"\u76ee\u6807\u5b57\u8bcd\"]\n~/.claude/skills/wjs-publishing-wechat/scripts/gen-illustration.sh <article-folder>\n```\n\n- \u4e0d\u4f20\u7b2c\u4e8c\u53c2\u6570\u65f6\u4ece `meta.json` \u53d6 `title`\uff1b\u5efa\u8bae\u6311\u6838\u5fc3\u6982\u5ff5\u5b57\u8bcd\uff081\u20134 \u5b57\uff09\n- \u5185\u90e8\u8d70 `gpt-image-2-skill` \u7684 `--provider codex`\uff0c\u9700\u8981 `~/.codex/auth.json`\n- \u9898\u56fe\u81ea\u52a8\u88c1\u5230 900\u00d7383\uff1b\u89e3\u91ca\u56fe\u4e0d\u88c1\n\n**\u89e3\u91ca\u56fe\u5fc5\u987b\u5728 markdown \u91cc\u88ab\u5f15\u7528**\u2014\u2014`article.md` \u8981\u6709 `![](./illustration.png)` \u4e00\u884c\uff0c\u5426\u5219\u8349\u7a3f\u91cc\u770b\u4e0d\u5230\u3002\n\n**\u26a0\ufe0f \u6b63\u6587\u91cc\u9664 `cover.png` / `illustration.png` \u5916\u7684\u56fe\u4e0d\u4f1a\u81ea\u52a8\u4e0a CDN\u3002** \u7528\u6237\u7ed9\u7684\u672c\u5730\u622a\u56fe\uff08\u5982 `img-xxx.png`\uff09\u6bcf\u5f20\u5148 `md2wechat upload_image img-xxx.png --json` \u62ff `data.wechat_url`\uff0c\u518d\u66ff\u6362 `article.md` \u91cc\u7684\u672c\u5730\u8def\u5f84\u3002\u9a8c\u8bc1\uff1a`grep -c mmbiz content.html` = \u6b63\u6587\u56fe\u7247\u6570\uff0c`grep -c 'img-' content.html` = 0\u3002\n\n\u9ed8\u8ba4\u63d2\u5165\u4f4d\u7f6e\uff1a**\u6b63\u6587\u6700\u540e\u843d\u70b9\u4e4b\u540e**\uff08\u6709 `## \u540e\u6ce8` \u653e\u540e\u6ce8\u524d\uff1b\u6709 `## \u5b89\u88c5\u65b9\u6cd5` \u653e\u5b89\u88c5\u65b9\u6cd5\u524d\uff09\u3002\n\n**\u7edd\u4e0d\u7ed9\u89e3\u91ca\u56fe\u5199\u5f15\u5bfc\u8bed**\u2014\u2014\u4e0d\u5199\u300c\u6574\u4ef6\u4e8b\u753b\u8d77\u6765\u662f\u8fd9\u6837\u300d\u300c\u5982\u56fe\u6240\u793a\u300d\u4e4b\u7c7b\uff0c\u56fe\u81ea\u5df1\u8bf4\u8bdd\u3002\u8be6\u89c1 [[no-illustration-caption]]\u3002\n\n> \u5b89\u5168\u7f51\uff1a`illustration.png` \u5b58\u5728\u4f46 `article.md` \u6ca1\u5f15\u7528\u65f6\uff0c`upload-draft.sh` \u81ea\u52a8\u63d2\u5165\u5e76\u6539\u5199\uff0c\u5e42\u7b49\u3002\n\n### Step 5: \u8f93\u51fa\u6587\u4ef6\u5305\n\n\u5728\u5de5\u4f5c\u76ee\u5f55\uff08\u9ed8\u8ba4 `~/wechat-publish/articles/`\uff09\u521b\u5efa\uff1a\n\n```\narticles/2026-05-09-{slug}/\n\u251c\u2500\u2500 article.md           # \u6da6\u8272\u540e\u7684 markdown\n\u251c\u2500\u2500 cover.png            # \u9898\u56fe 900\u00d7383\n\u251c\u2500\u2500 illustration.png     # \u89e3\u91ca\u56fe\n\u251c\u2500\u2500 meta.json            # { title, summary, author, date, slug }\n\u2514\u2500\u2500 original.md          # \u7528\u6237\u539f\u59cb\u8f93\u5165\n```\n\n`{slug}`\uff1a\u62fc\u97f3\u9996\u5b57\u6bcd + \u5173\u952e\u8bcd\uff0c30 \u5b57\u7b26\u5185\u3002\n\n### Step 5.5: \u53d1\u5e03\u524d\u9009\u6807\u9898\uff08\u786c\u5173\u5361\uff0c\u5fc5\u987b\u7b49\u7528\u6237\u56de\u590d\uff09\n\n**\u89e6\u53d1**\uff1a\u6587\u4ef6\u5305\u5c31\u7eea\u3001\u5373\u5c06\u8dd1 `upload-draft.sh` \u4e4b\u524d\u3002**\u8fd9\u4e00\u6b65\u4e0d\u53ef\u8df3\u8fc7\u3001\u4e0d\u80fd\u81ea\u4f5c\u4e3b\u5f20\u9009**\u2014\u2014\u5fc5\u987b\u505c\u4e0b\u6765\uff0c\u628a\u6807\u9898\u9009\u9879\u53d1\u7ed9\u7528\u6237\u3001\u7b49\u7528\u6237\u56de\u4e00\u4e2a\u5b57\u6bcd\u518d\u7ee7\u7eed\u3002\n\n\u7ed9 **4 \u4e2a\u5019\u9009**\uff0c\u6392\u7248\u6210\u4e00\u76ee\u4e86\u7136\u7684\u5217\u8868\uff1a\n\n- **A) \u539f\u6807\u9898**\u2014\u2014\u5373 `meta.json` \u91cc\u73b0\u6709\u7684 `title`\uff0c\u539f\u6837\u5217\u51fa\uff08\u8ba9\u7528\u6237\u77e5\u9053\u300c\u4e0d\u6539\u300d\u957f\u4ec0\u4e48\u6837\uff09\n- **B / C / D) \u66f4\u6709\u51b2\u51fb\u529b\u7684\u4e09\u4e2a**\u2014\u2014\u6bd4\u539f\u6807\u9898\u66f4\u6293\u4eba\u3001\u5f20\u529b\u66f4\u8db3\uff0c\u4f46\u4ecd\u5b88\u738b\u5efa\u7855\u7ea2\u7ebf\uff1a**\u4e0d\u6807\u9898\u515a\u3001\u4e0d\u5938\u5f20\u3001\u4e0d\u300c\u9707\u60ca / \u5fc5\u770b / \u98a0\u8986\u300d\u3001\u4e0d\u8425\u9500\u8154**\u3002\u51b2\u51fb\u529b\u6765\u81ea\u771f\u4e1c\u897f\uff08\u53cd\u76f4\u89c9\u7684\u7ed3\u8bba\u3001\u5177\u4f53\u7684\u6570\u5b57\u3001\u5c16\u9510\u7684\u5bf9\u6bd4\u3001\u8bdd\u8bf4\u4e00\u534a\u7684\u94a9\u5b50\uff09\uff0c\u4e0d\u662f\u5f62\u5bb9\u8bcd\u5806\u780c\u3002\n\n\u53d1\u5b8c\u5019\u9009\u540e\u8bf4\u4e00\u53e5\uff1a\u300c\u56de A \u7528\u539f\u6807\u9898\uff0c\u6216 B/C/D \u9009\u65b0\u7684\uff0c\u4e5f\u53ef\u4ee5\u81ea\u5df1\u7ed9\u4e00\u4e2a\u3002\u300d\u7136\u540e**\u505c**\u3002\n\n\u7528\u6237\u9009\u5b9a\u540e\uff1a\n1. \u82e5\u9009 B/C/D \u6216\u81ea\u62df \u2192 \u7528 `python3` \u628a `meta.json` \u7684 `title` \u6539\u6210\u9009\u4e2d\u7684\u90a3\u6761\uff08`cover.png` \u5df2\u751f\u6210\uff0c\u4e0d\u5fc5\u56e0\u6807\u9898\u53d8\u5316\u91cd\u753b\u9898\u56fe\uff0c\u9664\u975e\u7528\u6237\u8981\u6c42\uff09\n2. \u9009 A \u6216\u6ca1\u56de \u2192 \u6807\u9898\u4e0d\u52a8\n3. \u518d\u7ee7\u7eed Step 6 \u53d1\u5e03\n\n### Step 6: \u53d1\u5e03\uff08`upload-draft.sh`\uff09\n\n```bash\n~/.claude/skills/wjs-publishing-wechat/scripts/upload-draft.sh <workspace>/articles/YYYY-MM-DD-{slug}\n```\n\n\u811a\u672c\u505a\u7684\u4e8b\uff1a\n\n1. \u8dd1 `pangu.py` \u52a0\u76d8\u53e4\u4e4b\u767d\n2. `md2wechat upload_image cover.png` \u2192 \u62ff `thumb_media_id`\n3. `illustration.png` \u5b58\u5728\u4f46\u6ca1\u5f15\u7528\u65f6\u81ea\u52a8\u63d2\u5165\u5e76 upload \u62ff CDN URL\uff08\u5e42\u7b49\u5b89\u5168\u7f51\uff09\n4. **\u6ce8\u5165\u300c\u6700\u8fd1\u6587\u7ae0\u300d\u94fe\u63a5\u5217\u8868**\uff08`build-recent-articles.py`\uff0c\u9ed8\u8ba4\u5f00\uff0c\u89c1\u4e0b\u8282\uff09\n5. \u4ece `article.md` \u751f\u6210 `content.html`\uff08\u8f6c\u6362\u89c4\u5219\u89c1\u4e0b\uff09\n6. \u88c5 `draft.json`\uff0c\u8c03 `create_draft` \u6216\uff08`publish.json` \u6709 `draft_media_id` \u65f6\uff09`draft/update` \u539f\u5730\u66f4\u65b0\n7. \u81ea\u52a8\u6253\u5f00\u8349\u7a3f\uff1amacOS \u8d70 `scripts/open-draft-edit.sh`\u2014\u2014\u8bfb\u5df2\u767b\u5f55\u6d4f\u89c8\u5668\u7684 session token\u3001\u6309\u6807\u9898\u67e5\u51fa `appmsgid`\u3001**\u76f4\u8fbe\u8fd9\u4e00\u7bc7\u7684\u7f16\u8f91\u9875**\uff08\u6ca1\u767b\u5f55\u5219\u56de\u9000\u5f00\u9996\u9875\uff09\uff1bLinux \u5f00 `mp.weixin.qq.com` \u9996\u9875\u3002`WECHAT_PUBLISH_NO_OPEN=1` \u5173\u6389\n8. \u81ea\u52a8 `git add / commit / push` \u6587\u7ae0\u76ee\u5f55\u5230 origin\n\n### \u6587\u672b\u300c\u6700\u8fd1\u6587\u7ae0\u300d\u5217\u8868\uff08\u81ea\u52a8\uff09\n\n\u6bcf\u6b21\u53d1\u5e03\uff0c`upload-draft.sh` \u4f1a\u5728\u6587\u672b\u81ea\u52a8\u6302\u4e00\u4e2a**\u6700\u8fd1\u5df2\u53d1\u5e03\u6587\u7ae0**\u7684\u94fe\u63a5\u5217\u8868\uff08\u9ed8\u8ba4 5 \u7bc7\uff09\uff0c\u7528\u5fae\u4fe1\u7f16\u8f91\u5668\u539f\u751f\u7684\u6587\u7ae0\u8d85\u94fe\u63a5\u683c\u5f0f\uff08`mp_article_text_link` + `data-linktype=\"2\"`\uff0c\u540c\u8d26\u53f7 `/s/` \u94fe\u63a5\u624d\u70b9\u5f97\u52a8\uff09\u3002\n\n\u673a\u5236 = **\u672c\u5730\u8d26\u672c + \u79bb\u7ebf\u6e32\u67d3**\uff0c\u53d1\u5e03\u6b65\u9aa4\u96f6\u7f51\u7edc\u3001\u786e\u5b9a\u6027\u3001\u79bb\u7ebf\u53ef\u8dd1\uff1a\n\n- **\u8d26\u672c**\uff1a\u6bcf\u7bc7 `publish.json` \u91cc\u7684 `permalink`\uff08`https://mp.weixin.qq.com/s/\u2026`\uff09+ `published_at`\u3002\n- **\u6e32\u67d3**\uff1a`build-recent-articles.py <article-folder>` \u626b\u540c\u7ea7 `*/publish.json` \u91cc\u6709 `permalink` \u7684\u6587\u7ae0\uff0c\u6309 `published_at` \u5012\u5e8f\u53d6\u6700\u8fd1 N \u7bc7\uff08\u6392\u9664\u672c\u7bc7\uff09\uff0c\u5728 `article.md` \u7684 `<!--RECENT_ARTICLES_START/END-->` \u6807\u8bb0\u533a\u5185**\u5e42\u7b49\u91cd\u5199**\u4e00\u4e2a raw-HTML \u5757\uff08`content.html` \u6784\u5efa\u5668\u539f\u6837\u900f\u4f20\uff0c\u5fae\u4fe1\u5ffd\u7565\u6ce8\u91ca\uff09\u3002\u8d26\u672c\u4e3a\u7a7a\u5c31\u4e0d\u6302\uff0c\u4ece\u4e0d\u62a5\u9519\u3001\u4ece\u4e0d\u963b\u65ad\u53d1\u5e03\u3002\n- \u5355\u72ec\u8dd1/\u9884\u89c8\uff1a`build-recent-articles.py <folder> --print`\uff08\u53ea\u6253\u5370\u4e0d\u5199\uff09\uff1b`--count N` \u6539\u6570\u91cf\u3002\n- \u5173\u6389\uff1a`WECHAT_PUBLISH_NO_RECENT=1`\uff1b\u6539\u6570\u91cf\uff1a`WECHAT_RECENT_COUNT=8`\u3002\n\n**\u8d26\u672c\u600e\u4e48\u6765 \u2014 `backfill-permalinks.py`\uff08\u5076\u5c14\u8dd1\u4e00\u6b21\uff09**\uff1a`permalink` \u53ea\u6709\u6587\u7ae0\u6b63\u5f0f\u53d1\u5e03\u540e\u3001\u4ece\u516c\u4f17\u53f7\u540e\u53f0\u624d\u62ff\u5f97\u5230\uff08\u8349\u7a3f\u2192\u53d1\u5e03\u662f\u624b\u52a8\u70b9\u7684\uff0c\u4e0d\u56de\u6d41\uff09\u3002\u8fd9\u4e2a\u811a\u672c\u8c03\u7f51\u9875\u540e\u53f0 `appmsgpublish`\uff08\u5df2\u53d1\u5e03\u5217\u8868\uff09\u62c9\u5168\u8d26\u53f7\uff0c**\u6309\u6807\u9898\u7cbe\u786e\u5339\u914d**\u628a `permalink`/`published_at` \u5199\u56de\u5404 `publish.json`\u3002\u53ea\u7cbe\u786e\u5339\u914d\u2014\u2014\u53d1\u5e03\u6807\u9898\u5e38\u548c `meta.title` \u4e0d\u4e00\u6837\uff0c\u6a21\u7cca\u5339\u914d\u4f1a\u5199\u9519\u94fe\u63a5\uff0c\u5bf9\u4e0d\u4e0a\u7684\u4f1a\u5217\u51fa\u6765\u7559\u4f60\u624b\u52a8\u5904\u7406\u3002\n\n```bash\n~/.claude/skills/wjs-publishing-wechat/scripts/backfill-permalinks.py [articles\u6839\u76ee\u5f55] [--dry-run]\n```\n\n\u9274\u6743\u8d70**\u7f51\u9875 session**\uff08\u4e0d\u662f\u53d1\u5e03 API \u7684 access_token\uff09\uff0ccookie \u51e0\u5c0f\u65f6\u8fc7\u671f\uff0c\u6240\u4ee5\u662f\u300c\u5076\u5c14\u7ef4\u62a4\u300d\u4e0d\u662f\u6bcf\u6b21\u53d1\u5e03\u90fd\u8dd1\u3002\u4e09\u4e2a\u503c\u4efb\u9009\u5176\u4e00\u7ed9\uff1a\u2460 \u73af\u5883\u53d8\u91cf `WECHAT_MP_COOKIE` / `WECHAT_MP_TOKEN` / `WECHAT_MP_FAKEID`\uff1b\u2461 \u4f1a\u8bdd\u6587\u4ef6\uff08\u9ed8\u8ba4 `~/.config/wjs-wechat/mp-session.env`\uff0c\u91cc\u9762 `export` \u540c\u540d\u4e09\u4e2a\u53d8\u91cf\uff09\u3002\u6293\u6cd5\uff1a\u767b\u5f55 mp.weixin.qq.com \u2192 \u5185\u5bb9\u7ba1\u7406 \u2192 \u5df2\u53d1\u5e03 \u2192 DevTools Network \u627e `appmsgpublish` \u8bf7\u6c42 \u2192 Copy as cURL\uff0c`token`/`fakeid` \u5728 URL \u91cc\uff0c`Cookie` \u5728\u8bf7\u6c42\u5934\u3002\n\n> `upload-draft.sh` \u53d1\u5e03\u65f6\u82e5\u68c0\u6d4b\u5230\u4e0a\u8ff0\u51ed\u636e/\u4f1a\u8bdd\u6587\u4ef6\uff0c\u4f1a**\u5148\u5c3d\u529b\u5237\u65b0\u8d26\u672c**\u518d\u6ce8\u5165\uff08\u975e\u81f4\u547d\uff0c\u8fc7\u671f\u5c31\u8df3\u8fc7\uff09\uff1b\u6ca1\u914d\u5c31\u76f4\u63a5\u7528\u73b0\u6709\u672c\u5730\u8d26\u672c\u3002\u914d\u597d\u4f1a\u8bdd\u6587\u4ef6\u540e\uff0c\u53d1\u5e03\u5373\u300c\u81ea\u52a8\u56de\u586b + \u81ea\u52a8\u6302\u6700\u8fd1\u6587\u7ae0\u300d\u4e00\u6b65\u5230\u4f4d\u3002\n\n**article.md \u5199\u4f5c\u7ea6\u675f**\uff08\u5f71\u54cd Claude \u600e\u4e48\u5199\uff1b\u5176\u4ed6 HTML \u7ec6\u8282\u811a\u672c\u81ea\u7406\uff09\uff1a\n\n- \u652f\u6301 `<p>` / `<h2>` / `<h3>` / `<img>` / `<strong>` / `<em>` / `<code>` / `<ul>` / `<ol>` / `<li>` / pipe table\n- **Raw HTML \u5757\u900f\u4f20**\uff1a\u4ee5 `<` \u5f00\u5934\u7684\u5757\u539f\u6837\u8f93\u51fa\uff0c\u6574\u6bb5\u5fc5\u987b\u662f\u4e00\u4e2a\u5757\uff0c**\u5185\u90e8\u4e0d\u80fd\u6709\u7a7a\u884c**\n- **\u6bb5\u5185\u591a\u884c \u2192 `<br>` \u5206\u884c**\uff08\u7528\u4e8e\u6392\u6bd4 / \u5e76\u5217\u77ed\u53e5\uff09\uff1a**\u786c\u89c4\u5219\uff1a\u884c\u5c3e\u7edd\u4e0d\u80fd\u662f\u9017\u53f7\u300c\uff0c\u300d**\uff0c\u5206\u884c\u8fb9\u754c\u53ea\u80fd\u843d\u5728\u53e5\u672b\u6807\u70b9\uff08\u3002\uff1f\uff01\uff09\u4e4b\u540e\n\n**\u73af\u5883\u53d8\u91cf**\uff1a\n- `WECHAT_PUBLISH_FORCE_NEW=1` \u2014 \u5f3a\u5236\u5efa\u65b0\u8349\u7a3f\uff08\u4e0d\u590d\u7528 `draft_media_id`\uff09\n- `WECHAT_PUBLISH_NO_OPEN=1` \u2014 \u4e0d\u81ea\u52a8\u6253\u5f00\u6d4f\u89c8\u5668\n- `WECHAT_PUBLISH_NO_PUSH=1` \u2014 \u4e0d\u81ea\u52a8 push\n- `WECHAT_PUBLISH_NO_RECENT=1` \u2014 \u4e0d\u6ce8\u5165\u6587\u672b\u300c\u6700\u8fd1\u6587\u7ae0\u300d\u5217\u8868\n- `WECHAT_RECENT_COUNT=N` \u2014 \u300c\u6700\u8fd1\u6587\u7ae0\u300d\u5217\u51fa\u51e0\u7bc7\uff08\u9ed8\u8ba4 5\uff09\n- `WECHAT_MP_COOKIE` / `WECHAT_MP_TOKEN` / `WECHAT_MP_FAKEID` \u6216 `WECHAT_MP_SESSION`\uff08\u4f1a\u8bdd\u6587\u4ef6\u8def\u5f84\uff0c\u9ed8\u8ba4 `~/.config/wjs-wechat/mp-session.env`\uff09\u2014 \u914d\u4e0a\u5219\u53d1\u5e03\u65f6\u81ea\u52a8\u5237\u65b0 permalink \u8d26\u672c\n\n**\u524d\u7f6e\u4f9d\u8d56**\uff1a\n- `md2wechat` CLI \u88c5\u597d\u4e14 `WECHAT_APPID` + `WECHAT_SECRET` \u914d\u597d\uff08`md2wechat config show`\uff09\n- **\u5f53\u524d\u516c\u7f51 IP \u5728\u516c\u4f17\u53f7\u540e\u53f0\u767d\u540d\u5355**\uff1amp.weixin.qq.com \u2192 \u8bbe\u7f6e\u4e0e\u5f00\u53d1 \u2192 \u57fa\u672c\u914d\u7f6e \u2192 IP \u767d\u540d\u5355\u3002\u6f0f\u6389\u4f1a `errcode=40164`\n\n**\u5e38\u89c1 errcode**\uff1a`40164` IP \u4e0d\u5728\u767d\u540d\u5355 \uff5c `45004` `summary` \u4e3a\u7a7a / \u592a\u77ed \uff5c `40007` \u8001 `draft_media_id` \u88ab\u5220\uff08\u811a\u672c\u81ea\u52a8 fallback \u5efa\u65b0\uff09\u3002\n\n\u6210\u529f\u540e\u5230\u8349\u7a3f\u7bb1 \u2192 \u624b\u673a\u9884\u89c8 \u2192 \u53d1\u5e03\u3002\n\n## \u6da6\u8272\u542f\u53d1 / \u5206\u6bb5 / \u7ea2\u7ebf / \u6539\u52a8\u6e05\u5355\n\n**\u5168\u90e8\u79fb\u5230 [`STYLE.md`](./STYLE.md)**\u2014\u2014\u9519\u5b57\u6a21\u5f0f\u3001\u5206\u6bb5\u89c4\u5219\u3001\u7ea2\u7ebf\u6e05\u5355\u3001\u4ea4\u4ed8\u524d\u5148\u7ed9\u6539\u52a8\u6e05\u5355\uff0c\u90fd\u5728\u90a3\u91cc\u3002\u6da6\u8272\u524d\u8bfb STYLE.md\uff0c\u6309\u5b83\u6267\u884c\u3002\n\n\u4f9d\u8d56\u5916\u90e8 skill\uff1a`gpt-image-2-skill`\uff08cover/illustration \u751f\u6210\uff09+ `/md2wechat`\uff08upload + draft\uff09\u3002\n\n## \u5b8c\u6210\u6807\u51c6\n\n- [ ] `articles/YYYY-MM-DD-{slug}/` \u6587\u4ef6\u5939\u5b58\u5728\n- [ ] \u542b article.md\u3001cover.png\u3001illustration.png\u3001meta.json\u3001original.md\n- [ ] meta.json \u5b57\u6bb5\u9f50\u5168\n- [ ] **\u5b9a\u7a3f\u524d\u5df2\u505a\u9690\u79c1\u626b\u63cf**\uff08Step 1.5\uff09\u2014\u2014\u4eba\u540d / \u9910\u5385 / \u5730\u70b9\u7b49\u4e2a\u4eba\u9690\u79c1\u4fe1\u606f\u5df2\u6cdb\u5316\u6216\u5220\u9664\uff0c\u547d\u4e2d\u9879\u8fdb\u4e86\u6539\u52a8\u6e05\u5355\n- [ ] **\u53d1\u5e03\u524d\u5df2\u7ed9 A\uff08\u539f\u6807\u9898\uff09+ 3 \u4e2a\u66f4\u6709\u51b2\u51fb\u529b\u7684\u5019\u9009\uff0c\u5e76\u6309\u7528\u6237\u9009\u62e9\u5b9a\u6807\u9898**\uff08Step 5.5\uff09\n- [ ] \u8349\u7a3f\u5728 mp.weixin.qq.com \u540e\u53f0\u53ef\u89c1\n- [ ] \u7528\u6237\u6ca1\u8bf4\"\u518d\u6539\u6539\"\n","usage":"\u8bfb\u53d6 SKILL.md\uff0c\u5e76\u6309\u9700\u8bfb\u53d6\u914d\u5957\u6587\u4ef6\uff1b\u4e0b\u8f7d ZIP \u83b7\u53d6\u5b8c\u6574\u5305\u3002\u6280\u80fd\u662f\u4efb\u52a1\u65b9\u6cd5\uff0c\u4e0d\u6388\u4e88\u65b0\u589e\u8d26\u6237\u3001\u4ed8\u8d39\u6216\u7cfb\u7edf\u6743\u9650\u3002"}
