# md-2-platform **Repository Path**: cd20/md-2-platform ## Basic Information - **Project Name**: md-2-platform - **Description**: 将 Markdown 文档发布到多个内容平台 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-04-13 - **Last Updated**: 2025-08-28 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # markdown-to-wechat > Markdown 一键发布微信公众号/飞书,支持图片智能处理、草稿管理、格式校验、AI 元数据补全等。 --- ## 项目简介 本项目旨在实现 Markdown 文档到微信公众号(WeChat Official Account)等平台的自动化发布,支持图片、元数据、草稿管理、内容格式校验等功能,提升内容生产与分发效率,简化内容创作与分发流程。 **主要目标:** - 支持 Markdown 文档一键发布到微信公众号 - 支持图片自动上传、路径智能处理 - 支持草稿、发布、格式校验、图片去重等多种命令 - 支持与飞书(Feishu)等下游平台集成 - 提供灵活的配置和命令行工具,适应多种内容生产场景 --- ## 安装与环境设置 ### 系统要求 - Python 3.12 或更高版本 - Poetry 包管理器 ### 安装步骤 ```bash git clone https://github.com/qiaoliang/markdown-to-wechat.git cd markdown-to-wechat poetry install poetry shell ``` ### 环境变量配置 - 单公众号: ```bash export WECHAT_APP_ID=your_app_id export WECHAT_APP_SECRET=your_app_secret ``` - 多公众号: ```bash export CD20_POST_APP_ID=your_app_id export CD20_POST_APP_SECRET=your_app_secret export BLOG_SITE_APP_ID=another_app_id export BLOG_SITE_APP_SECRET=another_app_secret ``` --- ## 配置文件 创建 YAML 配置文件(如 `config.yaml`): ```yaml # 文章的目标平台 domain: type: wechat # 发布到哪个平台 name: CD20 # 发布到哪个帐号(用于读取 App_id 和 App_secret # 文章相关的属性 articledir: ~/my-articles # 本地 markdown 文件所在的位置 web_downloaded_dir: ./assets/web-downloads # md 文件中的图片下载后的保存位置 jsondir: ./history_json # 发布后历史数据文件的保存位置(数据文件是 .json 格式) templatedir: ./templates # 本账号下文章 markdown 转 html 所有的样式模板 # 数据库的属性 db: type: sqlite3 # 所使用的数据库类型 storefile: ~/my-articles/cache.dbst3 # 对应的数据库存储文件 verfile: ~/my-articles/cache_db.version # 当前数据库结构的版本号文件 ``` **主要字段说明:** | 字段 | 说明 | 示例 | |------|------|------| | `domain.name` | 公众号域名标识 | CD20 | | `articledir` | Markdown 文档存放目录 | ~/my-articles | | `web_downloaded_dir` | 网络图片下载目录 | ./assets/web-downloads | | `json_dir` | wx 历史发布数据的存放目录 | ./json | | `templatedir` | HTML 模板目录 | ./templates | | `db.storefile` | SQLite 缓存数据库文件路径 | ~/cache.dbst3 | | `db.verfile` | 数据库版本文件路径 | ~/cache_db.version | > 旧版 staticdir 配置已废弃,建议迁移到 web_downloaded_dir。 --- ## 用法示例 ### 发布文章 ```bash mdpost -c config.yaml -a publish # 或省略 action(默认为 publish) mdpost -c config.yaml ``` ### 格式检查 ```bash mdpost -c config.yaml -a check # 检查最近 7 天修改的文件 mdpost -c config.yaml -a checkall # 检查所有文件 ``` ### 图片管理 ```bash mdpost -c config.yaml -a imglist # 获取图片列表 mdpost -c config.yaml -a rm_dup # 删除重复图片 ``` ### 文章管理 ```bash mdpost -c config.yaml -a draft # 列出草稿文章 mdpost -c config.yaml -a nodraft # 列出已发布文章 ``` ### 飞书集成 ```bash mdpost -c config.yaml -a up_article_info # 更新文章信息到飞书 mdpost -c config.yaml -a save_to_feishu # 保存最新发布的文章到飞书 ``` --- ## 主要特性 - Markdown 解析与格式校验 - 图片本地与远程处理、缓存与去重 - 微信公众号内容发布、草稿管理 - 配置化多公众号、多平台支持 - CLI 命令行工具,支持批量操作 - 支持与飞书表单集成 - AI 自动补全元数据(标题、描述、标签等) - SQLite3 本地缓存,自动迁移 --- ## 目录结构 ``` markdown-to-wechat/ ├── mdtool/ # 主代码目录 │ ├── cli.py # CLI 入口 │ ├── config_reader.py # 配置加载与管理 │ ├── markdown_document.py # Markdown 文档处理 │ ├── image_processor.py # 图片处理主逻辑 │ ├── wx_client.py # 微信公众号 API 封装 │ ├── wx_cache.py # 图片/文章缓存 │ ├── publish/ # 发布相关模块 │ ├── commands/ # 命令分发与实现 │ ├── entity/ # 数据模型 │ ├── image/ # 图片引用与处理 │ ├── body/ # 正文处理 │ ├── front_matter/ # front matter 解析 │ ├── db_schema/ # 数据库迁移脚本 │ ├── assets/ # 静态资源与模板 │ └── ... ├── tests/ # 测试目录 ├── docs/ # 项目文档 ├── config.yaml # 配置文件示例 ├── pyproject.toml # 依赖与构建配置 └── README.md # 项目说明 ``` --- ## 外部依赖与下游服务 | 服务名称 | 用途 | 主要接口/依赖 | |------------------|------------------------------|--------------------------------------| | 微信公众号平台 | 文章与图片上传、草稿管理 | WxClient.upload_article_draft, WxClient.upload_image | | 飞书平台 | 文章信息同步 | FeishuClient | | SQLite3 | 本地缓存与去重 | db_Set, db_migrator | | OpenRouter | 内容摘要与元数据生成 | openrouter_service.py | | 网络(HTTP) | 远程图片下载、API调用 | requests, urllib | ```mermaid graph TD CLI --> ConfigReader CLI --> AtCommander AtCommander --> WxPublisher WxPublisher --> WxClient WxPublisher --> WxCache WxPublisher --> ImageProcessor ImageProcessor --> WxClient CLI --> FeishuClient CLI --> db_Set WxClient -->|API| 微信公众号平台 FeishuClient -->|API| 飞书平台 db_Set -->|SQL| SQLite3 openrouter_service.py -->|API| OpenRouter ImageProcessor -->|HTTP| 网络 ``` --- ## 常见问题与故障排除 详见 [docs/how_to_use.md](docs/how_to_use.md) 的"常见问题和故障排除"章节。 --- ## 支持与反馈 - 查看 [docs/how_to_use.md](docs/how_to_use.md) - 提交 Issue 到 [GitHub 仓库](https://github.com/qiaoliang/markdown-to-wechat) - 微信公众号/飞书相关问题请参考官方文档 --- > 如需了解详细开发文档、领域模型、接口说明等,请参见 docs/ 目录下的各类文档。