skill-md-publish-wechat-feishu
New将本地图文 Markdown 从图片重命名开始,顺序完成正文图片公网化、微信公众号草稿创建、以及基于同一批公网图片链接的飞书云文档导入。适用于输入为单个 MD 文件且同级 attachments 子文件夹内已存在正文引用图片的场景。
Overview
Skill MD Publish WeChat Feishu
Goal
把一个本地图文 Markdown 文档及其同级 attachments/ 图片目录,按固定流程处理为:
- 已创建的微信公众号草稿
- 已导入的飞书云文档
本技能从“图片引用重命名”开始,不负责原始文稿整理,也不负责公众号文风改写。
Required Inputs
加载本技能时,AI 必须确认以下输入:
- MD 文档路径:必填,单个待处理 Markdown 绝对路径
- 图片目录:默认自动识别 MD 同级
attachments/,若不存在再回退Attachments/ - 公众号封面图:满足以下任一条件
- MD 元数据中已有封面图标记且文件存在 - 用户显式提供 --cover-image - 目录中已有可复用的 *.wechat.cover.json
- 公众号发布凭证:
- WECHAT_APP_ID - WECHAT_APP_SECRET
- ServiceHub 远程代理凭证(推荐远程模式):
- SERVICETUBER_BASE_URL - SERVICETUBER_USERNAME - SERVICETUBER_PASSTOKEN
- 飞书配置:
- FEISHU_APP_ID - FEISHU_APP_SECRET - 可选 FEISHU_FOLDER_TOKEN - 可选 FEISHU_REDIRECT_URI - 可选 FEISHU_USER_TOKEN_CACHE
凭证读取优先级:
- 命令行参数
- 环境变量 / 技能根目录
.env - 技能根目录
data/credentials.json
Workflow
第 1 步:校验输入与图片目录
- 确认输入是单个 Markdown 文件。
- 优先寻找
<MD同级>\attachments;如果不存在,再寻找<MD同级>\Attachments。 - 若两者都不存在,直接停止并提示用户补齐图片目录。
第 2 步:重命名正文图片并同步引用
调用:
python scripts/rename_image_references.py "<MD路径>"规则:
- 仅处理正文中真实图片引用。
- 自动备份原 MD 和原图片目录。
- 重命名后同步更新 MD 中的图片引用。
细节见:references/step-2-rename-image-references.md
第 3 步:将正文图片替换为公网 URL
默认先走微信公众号图片上传,生成:
attachments/wechat.image-map.json或兼容目录下同名文件原文件名-图片替换.md
调用:
python scripts/wechat_replace_md_images.py "<MD路径>" --remote-service-url "<ServiceHub地址>"若命中远程上传 413,先压缩正文图,再重试:
python scripts/compress_md_attachments.py "<原图片目录>" "<压缩图片目录>" --markdown-file "<原MD>" --output-md "<临时压缩图MD>"细节见:references/step-3-replace-images-with-public-urls.md
第 4 步:先创建微信公众号草稿
公众号链路必须在飞书链路之前完成。原因:
- 公网图片 URL 先由公众号图片上传步骤产出并缓存
- 公众号草稿使用同一份公网图文 MD
- 飞书链路复用这份已经稳定下来的公网图文 MD
调用顺序:
python scripts/wechat_upload_images.py "<图片替换MD>" --cover-only --cover-image "<封面图>"
python scripts/wechat_preprocess_html.py "<图片替换MD>" --image-manifest "<cover.json>"
python scripts/wechat_upload_draft.py "<wechat.json>" --remote-service-url "<ServiceHub地址>"细节见:references/step-4-2-publish-to-wechat-draft.md
第 5 步:再导入飞书云文档
飞书链路输入必须是已经完成正文图片替换的公网图文 MD。
优先一步完成:
python scripts/feishu_publish_replaced_md.py "<图片替换MD>" --auth-mode user如果没有飞书用户授权缓存,先执行:
python scripts/feishu_oauth_login.py这一步允许交互式浏览器授权。
细节见:references/step-4-1-publish-to-feishu.md
第 6 步:优先使用总控脚本
如果没有特殊排障需求,优先直接调用总控脚本:
python scripts/publish_local_md.py "<MD路径>" --cover-image "<封面图>"它会按固定顺序串联:
- 图片重命名
- 正文图片公网化
- 公众号草稿创建
- 飞书云文档导入
Decision Rules
- •只处理单个 MD 文件;不要对整个目录批量扫描后自行推断目标。
- •默认图片目录是
attachments/;仅为兼容旧材料才接受Attachments/。 - •正文图片公网化必须先于公众号草稿和飞书导入。
- •公众号草稿必须先于飞书导入。
- •缺少封面图时,不要默认把正文第一张图当封面;应优先读取元数据或要求用户显式提供。
- •飞书授权允许交互式浏览器登录;公众号 / ServiceHub 凭证不应走交互式登录。
- •若用户只想排障,可单独运行
scripts/下的分步骤脚本;否则优先总控脚本。
Output Requirements
执行完成后,必须向用户返回:
- 重命名后的正式 MD 路径
- 公网图文 MD 路径:
*-图片替换.md - 公众号产物:
- *.wechat.cover.json - *.wechat.html - *.wechat.preview.html - *.wechat.json - 草稿 media_id
- 飞书产物:
- *.feishu.json - *.feishu.upload.result.json - 最终飞书文档 URL
Validation
执行后检查:
- MD 同级存在
attachments/或兼容目录,且图片引用已同步更新 *-图片替换.md中不再包含本地图片路径- 公众号草稿创建成功并返回
media_id - 飞书导入结果 JSON 中存在最终文档 URL
- 若走压缩分支,正式输出仍然是
*-图片替换.md,压缩版 MD 仅作为中间文件
Fallback
- •如果正文图片上传报
413,执行压缩图流程后重试。 - •如果公众号接口报
40164 invalid ip,改用 ServiceHub 远程代理模式。 - •如果飞书缺少
user_access_token,执行scripts/feishu_oauth_login.py。 - •如果封面图缺失,停止并要求用户提供
--cover-image或补齐 MD 元数据。 - •如果用户只需要飞书或只需要公众号,说明这不属于本技能的默认完成态;如需局部执行,应显式说明在排障模式下拆步跑脚本。
Examples
- •
/skill-md-publish-wechat-feishu E:\BaiduSyncdisk\WorkSpace\社交媒体\图文笔记\20260615_某主题.md - •
/skill-md-publish-wechat-feishu E:\...\20260615_某主题.md --cover-image E:\...\cover.png
Install & Usage
mkdir -p .claude/skillsmkdir -p .claude/skills && curl -o .claude/skills/skill-md-publish-wechat-feishu.md https://raw.githubusercontent.com/JasonCai2024/skill-md-publish-wechat-feishu/main/SKILL.md/skill-md-publish-wechat-feishuFrequently Asked Questions
What is skill-md-publish-wechat-feishu?
将本地图文 Markdown 从图片重命名开始,顺序完成正文图片公网化、微信公众号草稿创建、以及基于同一批公网图片链接的飞书云文档导入。适用于输入为单个 MD 文件且同级 attachments 子文件夹内已存在正文引用图片的场景。
How to install skill-md-publish-wechat-feishu?
To install skill-md-publish-wechat-feishu, create the .claude/skills directory in your project, then run the curl command to download the skill file. Once installed, invoke it in Claude Code with /skill-md-publish-wechat-feishu.
What is skill-md-publish-wechat-feishu best for?
skill-md-publish-wechat-feishu is a community categorized under Documentation. Created by JasonCai2024.