工具概述
这是一个开源工具,用于将飞书文档一键转换为微信公众号草稿。它解决了飞书内容迁移到公众号时的三个核心问题:图片自动处理、格式完整保留和排版风格统一。
项目地址:GitHub - draco-skills-collection/feishu-doc-to-wechat-draft

核心功能
工具主要解决以下问题:
- 图片自动处理:飞书文档中的图片自动下载并上传到微信素材库,替换为微信 CDN 链接
- 格式完整保留:表格、引用块、代码块、分割线等格式正确转换为 HTML
- 排版风格统一:内置 Doocs 风格渲染方案,与 md-editor 编辑器预览效果一致
适用场景
该工具适合以下使用场景:
- 团队协作:在飞书文档中多人协作编辑,定稿后直接发布到公众号
- 内容迁移:将飞书知识库内容快速同步到公众号
- 格式保持:需要保留原文的表格、代码、层级结构
苏米注:对于纯文字内容,直接复制粘贴可能更简单;但对于有固定栏目、需要统一视觉风格的内容团队,这个工具能显著节省排版时间。
前置准备
使用前需要准备以下三项:
1. 飞书 CLI 工具
npm install -g @larksuiteoapi/lark-cli
lark-cli login
登录一次后,工具即可访问你有权限的飞书文档。
2. 微信公众号凭证
登录微信公众平台,在「开发」-「基本配置」中获取:
- AppID
- AppSecret(只显示一次,需妥善保存)
同时将服务器 IP 添加到「IP 白名单」,否则调用接口会报错。
3. 封面图的 media_id
微信要求每篇文章必须有封面图。获取方法有三种:
方法一:微信公众平台后台(推荐)
- 登录微信公众平台
- 左侧菜单 →「内容与互动」→「素材库」
- 点击「图片」标签页 →「添加」上传封面图
- 上传成功后,用浏览器开发者工具(F12)查看网络请求
- 找到 add_material 或 add_news 接口的返回数据,其中包含 media_id
方法二:微信在线调试工具
- 访问微信公众平台接口调试工具(mp.weixin.qq.com/debug)
- 接口类型选择「素材管理」→「新增永久素材」
- 输入 AppID 和 AppSecret 获取 access_token
- 上传图片文件,执行后返回 media_id
方法三:使用代码上传
import requests
access_token = "你的 access_token"
url = f"https://api.weixin.qq.com/cgi-bin/material/add_material?access_token={access_token}&type=thumb"
with open("cover.jpg", "rb") as f:
files = {"media": ("cover.jpg", f, "image/jpeg")}
response = requests.post(url, files=files)
media_id = response.json()["media_id"]
print(f"封面图 media_id: {media_id}")
安装和使用
安装步骤
git clone https://github.com/dracohu2025-cloud/draco-skills-collection.git
cd draco-skills-collection/feishu-doc-to-wechat-draft
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
配置环境变量
export WECHAT_APP_ID="你的 AppID"
export WECHAT_APP_SECRET="你的 AppSecret"
生成预览(推荐先预览再发布)
python3 scripts/run.py render-preview-feishu-doc-default \
--doc "https://your-domain.feishu.cn/docx/DocID" \
--output /tmp/preview.html
在浏览器中打开 preview.html 确认效果无误。
发布到公众号草稿箱
python3 scripts/run.py publish-feishu-doc-default \
--doc "https://your-domain.feishu.cn/docx/DocID" \
--thumb-media-id "你的封面图 media_id" \
--author "作者名"
执行成功后返回 draft_media_id,登录公众号后台,在「草稿箱」中即可查看文章。
样式配置
关于 Doocs 样式
工具的排版样式参考了 Doocs/md 项目,一款开源的微信 Markdown 编辑器。
- 项目地址:github.com/doocs/md
- 开源协议:WTFPL —— 可随意使用,建议保留版权声明
Doocs/md 是一款高度简洁的微信 Markdown 编辑器,支持 Markdown 语法、自定义主题样式、内容管理等特性。本工具提取并实现了其 CSS 渲染逻辑,确保在命令行环境下也能获得一致的排版效果。
可调参数
工具支持丰富的样式参数配置:
| 参数类别 | 可选项 |
|---|---|
| 主题风格 | grace(优雅)、simple(简洁)、default(默认) |
| 字号 | 14px、15px、16px |
| 代码主题 | github、one-dark、vitesse 等多种高亮方案 |
| 标题样式 | 实心背景块、左侧边框、下划线等 |
| 排版细节 | 两端对齐、首行缩进、Mac 风格代码块 |
完整样式配置示例
style:
# === 基础样式 ===
profile: doocs # 渲染方案:default | doocs | classic | minimal
theme: grace # 主题:default | grace(优雅) | simple(简洁)
primary_color: "#FA5151" # 主题主色,影响标题、强调色
font_family: "-apple-system,BlinkMacSystemFont,HelveticaNeue,PingFangSC,MicrosoftYaHei"
font_size: 14 # 正文字号:14 | 15 | 16
line_height: 1.75 # 行高倍数
# === 排版控制 ===
justify: false # 段落两端对齐:true | false(建议关闭,左对齐更易读)
indent_first_line: false # 首行缩进:true | false
# === 标题样式 ===
heading_style: solid # 标题整体风格:solid | left-bar | underline | minimal
heading_styles:
h1: default # H1 样式:default | color-only | border-bottom | border-left | custom
h2: default
h3: default
h4: default
h5: default
h6: default
# === 代码块样式 ===
code_theme: github # 代码高亮主题
mac_code_block: true # Mac 风格代码块(红黄绿三个圆点):true | false
code_line_numbers: false # 显示代码行号:true | false
# === 其他元素 ===
hr_style: dash # 分隔线样式:dash(虚线) | star(星号) | underscore(下划线)
caption_mode: hidden # 图片题注显示:title-first | alt-first | title-only | alt-only | hidden
footnote_links: false # 外链转底部脚注:true | false
保存为 my-style.yaml,然后通过 --style-config 参数使用:
python3 scripts/run.py publish-feishu-doc-default \
--doc "https://your-domain.feishu.cn/docx/DocID" \
--thumb-media-id "你的 media_id" \
--style-config my-style.yaml
命令行快速设置
如果只需调整几个参数,可直接在命令行指定:
python3 scripts/run.py publish-feishu-doc-default \
--doc "https://your-domain.feishu.cn/docx/DocID" \
--thumb-media-id "你的 media_id" \
--profile doocs \
--theme grace \
--font-size 14 \
--line-height 1.75 \
--mac-code-block \
--no-justify \
--heading-style solid
技术实现
工具的工作流程分为四步:
- 获取文档:用 lark-cli 下载飞书文档内容和图片
- 格式转换:将飞书格式标准化为 Markdown
- HTML 渲染:按 Doocs 风格生成微信兼容的 HTML
- 发布草稿:图片上传素材库,调用微信 API 创建草稿
苏米注:核心逻辑用 Python 实现,不依赖复杂框架,便于二次开发和定制。
局限性和注意事项
使用过程中需注意以下几点:
- 图片大小限制:微信要求图片不超过 10MB。工具会自动压缩过大图片,但建议在飞书中控制好图片尺寸
- 格式兼容性:飞书的高级功能(如嵌入视频、复杂表格合并单元格)可能无法完美转换,建议发布前预览检查
- 权限问题:确保运行环境能访问飞书文档,且服务器 IP 已添加到微信白名单
总结
这个工具将「飞书写内容 → 公众号发布」的流程自动化,省去手动处理图片和调整格式的时间。对于内容团队,可以在飞书中完成协作编辑和审核流程,定稿后一键发布,保持格式统一。
代码开源,免费使用。如果有从飞书同步内容到公众号的需求,值得尝试。
致谢
Doocs/md - 样式渲染参考了该项目的 CSS 设计,一款优秀的开源微信 Markdown 编辑器