将任意文件(PDF、Word、Excel、PPT、图片、音频、网页等)转换为 Markdown,再生成为精美的微信公众号文章并发布到草稿箱。组合 markitdown + md_to_wechat_html + publish_to_wechat 三阶段流水线。Use when the user wants to...
File to WeChat
功能概述
File to WeChat是一项面向实际任务的技能,主要用于将 任意格式的文件 (PDF、Word、Excel、PPT、图片、音频、网页等)一站式转换为精美的微信公众号文章,并发布到草稿箱;User-Facing Promise;
核心要点
- Accept requests like;
- "把这个 PDF 发到我的微信公众号";
- "帮我把这个 PPT 转成公众号文章";
使用与执行
"把这个 Excel 报表发布到微信";"把这张图片变成微信文章"。它将相关步骤、工具调用和结果整理方式集中到统一流程中,帮助使用者更快完成目标并减少重复操作。从功能定位来看,该技能强调把分散的操作要求整理成清晰、可复用的处理流程,使用户能够围绕既定目标快速准备输入、选择执行方式并获得结构化结果。实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;
结果检查与注意事项
若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;涉及批量任务时,还应保存进度,避免中断后重复操作。该技能适合用于一次性任务,也可以接入自动化工作流,与其他技能或上层代理配合完成更完整的业务链路;在组合使用时,应明确每一步的输入输出关系,并避免不同步骤之间出现参数冲突。
文件转微信
将任意格式的文件(PDF、Word、Excel、PPT、图片、音频、网页等)一站式转换为精美的微信公众号文章,并发布到草稿箱。
面向用户的承诺
支持如下请求形式:
- “把这个 PDF 发到我的微信公众号”
- “帮我把这个 PPT 转成公众号文章”
- “把这个 Excel 报表发布到微信”
- “把这张图片变成微信文章”
- “把这段音频转成公众号文章”
- “把这个网页内容发到我的公众号”
直接返回已发布的草稿(位于微信草稿箱中),而非仅提供方案或预览。
与 anything-to-wechat 的区别
| anything-to-wechat | file-to-wechat | |
|---|---|---|
| 输入类型 | DOCX、PDF、CSV、Markdown、HTML、URL | 25+ 种格式:PDF、DOCX、PPTX、XLSX、图片、音频、EPUB、HTML、YouTube、ZIP 等 |
| Markdown 转换步骤 | 直接读取文件 | 优先通过 MarkItDown(本地)或 Markdown Anything API(云端)将文件转为 Markdown |
| 适用场景 | 文档类与数据类文件 | 所有文件类型,包括幻灯片、电子表格、图片、音频等 |
当用户提供 anything-to-wechat 不原生支持的文件类型(如 PPTX、XLSX、图片、音频、EPUB、ZIP)时,请使用本技能。
首次配置
1. 安装 Python 依赖
python -m pip install markitdown markdown beautifulsoup4 requests
2. 安装配套技能
本技能依赖 anything-to-wechat 技能中的 publish_to_wechat.py。请通过 ClawHub 安装:
clawhub install anything-to-wechat
3. 配置微信凭证
你需要一个具备 API 权限的微信服务号或订阅号(需开通开发者权限)。
获取凭证步骤:
- 登录 https://mp.weixin.qq.com/
- 进入:设置与开发 → 基本配置
- 复制你的 AppID,并重置或查看 AppSecret
- 将你服务器的公网 IP 添加至 IP白名单
设置环境变量(推荐方式):
在 macOS / Linux 上 —— 将以下内容添加至 ~/.bashrc 或 ~/.zshrc:
export WECHAT_APP_ID="your_appid_here" export WECHAT_APP_SECRET="your_appsecret_here"
在 Windows 上 —— 使用 PowerShell 执行:
[Environment]::SetEnvironmentVariable("WECHAT_APP_ID", "your_appid_here", "User")
[Environment]::SetEnvironmentVariable("WECHAT_APP_SECRET", "your_appsecret_here", "User")
未设置环境变量? 发布脚本会在首次运行时交互式提示 —— 只需按提示粘贴 AppID 和 AppSecret 即可。
4. 验证配置
python -c "from markitdown import MarkItDown; print('markitdown OK')"
python -c "import markdown; print('markdown OK')"
前置依赖
| 依赖项 | 是否必需 | 用途 |
|---|---|---|
markitdown(pip) |
是 | 文件 → Markdown 转换(本地、免费) |
markdown(pip) |
是 | Markdown → HTML(由 md_to_wechat_html.py 调用) |
beautifulsoup4(pip) |
是 | HTML 处理 |
requests(pip) |
是 | 调用微信 API |
| anything-to-wechat 技能 | 是 | 提供 publish_to_wechat.py |
all-to-markdown 技能 |
可选 | 替代性文件 → Markdown 封装器 |
html-anything 技能 |
可选 | 更丰富的 HTML 设计(仅适用于 Approach B) |
markdown-anything 技能 |
可选 | 云端 Markdown API 回退方案 |
工作流程
阶段 1:收集输入
若用户尚未提供源文件,请使用 AskUserQuestion 主动询问:
Question: "请提供你想发布到微信公众号的文件" Options: - "提供文件路径" (PDF, DOCX, PPTX, XLSX, images, audio, etc.) - "粘贴 URL" (web page or YouTube video) - "选择文件夹" (batch convert)
若用户已提供文件路径或 URL,则跳过此步,直接进入下一阶段。
阶段 2:文件转 Markdown
重要:务必全程使用 UTF-8 编码。 Windows 控制台默认编码为 GBK,会导致中文乱码。请在 Python 中对所有文件 I/O 显式指定 encoding='utf-8',并在控制台输出前调用 sys.stdout.reconfigure(encoding='utf-8')。
首选方式:markitdown pip 包(免费、无需 API Key、始终可用)
python -c " import sys; sys.stdout.reconfigure(encoding='utf-8') from markitdown import MarkItDown md = MarkItDown() result = md.convert(r'') with open(r' /article.md', 'w', encoding='utf-8') as f: f.write(result.text_content) print('Done, length:', len(result.text_content)) "
备选方式:all-to-markdown 技能(如已安装)
bash "/scripts/run.sh" " " -o " /article.md"
回退方式:markdown-anything(云端 API,需 MDA_API_TOKEN)
MDA_API_TOKEN="" bash " /scripts/convert.sh" " " > " /article.md"
转换完成后:以 encoding='utf-8' 读取 Markdown 输出;检查其结构(标题层级、表格、图片、代码块等),用于指导后续 HTML 生成风格。
阶段 3:生成兼容微信的 HTML
两种实现方式,请根据内容复杂度选择:
方式 A:使用 md_to_wechat_html.py(快速、适合结构化文档)—— 推荐首选
python "/scripts/md_to_wechat_html.py" --input " /article.md" --output " /wechat_article.html" --title " "
该脚本将 Markdown 直接转换为适配微信的内联样式 HTML,并内置 Clockless 设计规范,无需额外 CSS 内联步骤。
方式 B:使用 html-anything(设计更丰富,适合复杂内容)
- 加载
html-anything技能。 - 将 Markdown 内容作为源输入。
- 遵循
html-anything工作流,并严格遵守微信兼容规则(仅允许内联样式、浅色背景、禁用 CSS 变量、最大宽度 680px、系统字体)。 - 再运行
anything-to-wechat提供的转换脚本:
python "/scripts/convert_for_wechat.py" --input " /wechat_article.html" --output " /wechat_article_final.html"
选择指南:
- PPTX、XLSX、数据密集型内容 → 方式 A(结构清晰、表格友好)
- 长篇议论文、研究报告、叙事性内容 → 方式 B(视觉表现力更强)
- 图片、音频转录文本 → 方式 A(布局简洁)
阶段 4:生成封面图
使用 ImageGen 工具,基于文章主题与核心内容生成提示词(prompt)。
- 保存为
wechat_cover.png至 workspace 目录。 - 尺寸要求:
1024x768(符合微信封面图 4:3 比例)。 - 确保视觉吸引力强、信息传达明确。
阶段 5:发布至微信草稿箱
重要:Windows 系统下,请使用 Python subprocess 传递环境变量。
set VAR=val && python ... 在 Windows CMD 中不可靠。
跨平台推荐方式:
python -c " import os, subprocess, sys os.environ['WECHAT_APP_ID'] = '' os.environ['WECHAT_APP_SECRET'] = ' ' result = subprocess.run([ sys.executable, r' /scripts/publish_to_wechat.py', '--file', r' /wechat_article.html', '--title', ' ', '--cover', r' /wechat_cover.png', '--digest', ' ' ], capture_output=True, text=True, encoding='utf-8') print(result.stdout) print(result.stderr) "
或已在系统中设置了环境变量:
python "/scripts/publish_to_wechat.py" --file " /wechat_article.html" --title " " --cover " /wechat_cover.png" --digest " "
凭证说明:publish_to_wechat.py 从 WECHAT_APP_ID / WECHAT_APP_SECRET 环境变量读取凭证。若未设置,脚本将交互式提示,用户只需粘贴 AppID 和 AppSecret 即可。
阶段 6:确认与交付
成功发布后,报告 Media ID 并附上微信公众平台链接:https://mp.weixin.qq.com/。
向用户明确告知:“文章已发送到你的微信公众号草稿箱,请登录微信公众平台审核后一键发布。”
微信 HTML 兼容性规范
与 anything-to-wechat 完全一致:
- 仅允许内联样式(禁止
标签) - 背景色为纯白(
#ffffff) - 禁止使用 CSS 变量
- 禁止
position: fixed/sticky - 仅使用系统字体
max-width: 680px- 总大小不超过 2MB
错误处理
| 错误类型 | 应对措施 |
|---|---|
markitdown 未安装 |
执行 python -m pip install markitdown |
all-to-markdown 未安装 |
直接使用 markitdown pip 包(主流程) |
markdown-anything 缺少 token |
改用 markitdown(免费)或向用户索取 MDA_API_TOKEN |
| MarkItDown 不支持该格式 | 尝试 markdown-anything 云端 API |
| 扫描版 PDF(无文本层) | 启用 markdown-anything 的 MDA_ENHANCED_AI=true 模式 |
| Markdown 内容超出微信限制 | 进行摘要压缩,控制在 5000 字以内 |
| 中文乱码(GBK 编码问题) | 添加 sys.stdout.reconfigure(encoding='utf-8'),并对所有文件 I/O 显式指定 encoding='utf-8' |
Windows 下 set VAR=val 失效 |
改用 Python subprocess + os.environ 传参 |
| 微信凭证缺失 | publish_to_wechat.py 会交互式提示 —— 用户粘贴 AppID/AppSecret 即可 |
| 服务器 IP 不在白名单中 | 从错误信息中提取当前 IP,引导用户前往 mp.weixin.qq.com 添加并重试 |
anything-to-wechat 技能缺失 |
执行安装命令:clawhub install anything-to-wechat |
支持的输入格式
| 类别 | 格式 |
|---|---|
| 文档 | PDF、DOCX、PPTX、EPUB、MSG |
| 数据 | XLSX、XLS、CSV、JSON、XML |
| 图片 | JPG、PNG、GIF、BMP、TIFF(支持 EXIF 元数据,可选 OCR) |
| 音频 | WAV、MP3(支持语音转文字) |
| 网页 | HTML 页面、YouTube URL(支持字幕提取) |
| 归档包 | ZIP(自动解压并逐个转换内部文件) |
脚本参考
| 脚本 | 来源 | 用途 |
|---|---|---|
markitdown(pip) |
Microsoft MarkItDown | 文件/URL → Markdown(本地、免费) |
scripts/md_to_wechat_html.py |
本技能 | Markdown → 微信兼容内联 HTML |
anything-to-wechat/scripts/convert_for_wechat.py |
anything-to-wechat 技能 | CSS 内联与微信适配清理 |
anything-to-wechat/scripts/publish_to_wechat.py |
anything-to-wechat 技能 | 上传至微信草稿箱 |
配置项
| 变量名 | 是否必需 | 说明 |
|---|---|---|
WECHAT_APP_ID |
是 | 微信公众号 AppID(若未设置,将交互式提示) |
WECHAT_APP_SECRET |
是 | 微信公众号 AppSecret(若未设置,将交互式提示) |
MDA_API_TOKEN |
否 | Markdown Anything API Token(仅在启用云端回退时需要) |
热门AI工具
相关专题
本专题介绍Gradle插件开发的基本流程,涵盖插件类编写、自定义任务注册、扩展参数设计和插件应用方法,帮助你理解插件如何组织构建逻辑,减少多个项目之间的重复配置。
0
2026.10.22
本专题介绍Gradle Wrapper的基本作用,涵盖文件组成、生成方法、版本配置和任务调用,帮助你理解项目如何使用指定的Gradle版本,减少不同开发环境带来的构建差异。
0
2026.10.22
本专题整理Golangci-lint常用Linters的用途与配置方法,覆盖错误处理、无效代码、安全、复杂度、命名和依赖检查,帮助项目合理选规则。
0
2026.10.22
本专题介绍Gradle Java项目构建方法,涵盖Java插件配置、依赖声明、源码编译、测试执行和打包检查,帮助你理解各阶段的任务关系,逐步完成项目构建。
0
2026.10.22
本专题汇总PHP常见时间戳漏洞,包括2038年溢出、时区漂移、时间戳伪造、重放攻击、时间盲注与日志审计失效等,并给出升级64位环境、使用 DateTimeImmutable、统一UTC、严格超时校验、预处理绑定、hash_equals 比对等修复方案,帮助开发者快速排查和加固时间相关代码。
0
2026.10.22
本专题聚焦Golangci-lint YAML配置文件,讲清运行参数、规则启停、目录排除、问题过滤及严重级别设置,便于团队统一检查标准。
0
2026.10.22
本专题讲解Golangci-lint的安装、初始化、基础命令和首次代码检查,覆盖本地环境、Docker及多平台用法,帮助Go开发者快速上手。
0
2026.10.22
PHP2Shell漏洞是什么,哪些PHP版本和运行环境会受到影响,服务器应该如何检测与修复?本专题提供版本自查脚本、Linux与Docker升级命令、PHP-FPM和Apache排查步骤,以及修复验证、临时缓解和应急响应方案。
0
2026.10.22
热门下载
相关下载
精品课程
共6课时 | 12.1万人学习
共79课时 | 161.5万人学习
共6课时 | 54.7万人学习
