Coding

content-formatter

Try it

统一内容排版引擎,支持29平台排版规则,4层排版策略(L0无需转换/L1通用HTML/L2平台专属/L3纯文本)。触发:内容排版/格式转换/平台适配

What it does

统一内容排版引擎,支持29平台排版规则,4层排版策略(L0无需转换/L1通用HTML/L2平台专属/L3纯文本)。触发:内容排版/格式转换/平台适配

The skill document

核心功能: 本技能提供/平台适配等能力。

content-formatter 统一内容排版引擎

整合 base.py 的 _ensure_content_formatformat_converter.pycontent_platform_adapter.py_adapt_content_format 三处分散排版入口,统一为单一排版引擎,支持 29 平台排版规则。

使用场景

  • 内容发布前排版适配: 将 Markdown 原始内容转换为目标平台所需的格式(HTML/Markdown/纯文本)
  • 多平台批量发布: 一次输入,按各平台规则分别输出对应格式
  • 格式降级兜底: 当平台专属排版器不可用时,自动降级到通用 HTML 转换
  • 统一排版入口: 消除三处分散排版逻辑(base.py/format_converter.py/content_platform_adapter.py),所有排版经由本引擎统一处理

4层排版策略

层级说明适用平台处理方式
L0无需转换Markdown 原生平台(掘金/CSDN/思否等)保持 Markdown 原文输出
L1通用 HTML大多数 HTML 平台(搜狐/大鱼/网易等)Markdown→HTML + 默认内联 CSS
L2平台专属微信公众号/知乎/百家号/微博调用 format_converter 专属样式,失败降级 L1
L3纯文本Twitter/X 等短文本平台去除 Markdown 标记 + 字符截断

工作流

  1. 接收内容和平台参数
    • 输入: --content(Markdown 原始内容) --platform(目标平台) --format(可选,目标格式)
    • 支持 --content-file 从文件读取内容(替代 --content)
  2. 查询平台排版规则
    • platform_styles.json 加载平台配置(format/layer/style/inline_css/features/max_length)
    • 未知平台默认使用 L1 通用 HTML 排版
  3. 执行排版转换
    • L0: 保持 Markdown 原文,不转换
    • L1: 调用 _basic_md_to_html 进行通用 Markdown→HTML 转换(可选内联 CSS)
    • L2: 调用 _format_via_converter 调用 format_converter.py 专属排版器,失败则降级 L1
    • L3: 调用 _strip_markdown 去除 Markdown 标记,按 max_length 截断
  4. 返回格式化内容
    • 输出 JSON: {success, data:{html, markdown, text, format_used, layer}, error}

输入格式

python skills/content-formatter/scripts/format_engine.py \
  --content "# 标题\n\n正文内容" \
  --platform wechat_official \
  --format html

参数说明:

  • --content(必填): 原始内容(Markdown 格式)
  • --platform(必填): 目标平台名称(如 juejin/wechat_official/zhihu/x_twitter 等)
  • --format(可选): 目标格式(html/markdown/text),留空则按平台配置自动判断
  • --content-file(可选): 内容文件路径,替代 --content(适合长文本)

输出格式

{
  "success": true,
  "data": {
    "html": "标题正文内容",
    "markdown": "# 标题\n\n正文内容",
    "text": "标题\n\n正文内容",
    "format_used": "html",
    "layer": "L1"
  },
  "error": null
}

字段说明:

  • html: HTML 格式内容(L0/L3 平台为空字符串)
  • markdown: Markdown 原文(L3 平台为转换后的纯文本)
  • text: 纯文本内容(仅 L3 平台有值)
  • format_used: 实际使用的格式(html/markdown/text)
  • layer: 实际使用的排版层级(L0/L1/L2/L1(fallback))

异常处理

异常场景处理方式降级层级
未知平台使用默认 L1 通用 HTML 排版L1
L2 专属排版器不可用(format_converter.py 不存在)降级到 L1 通用 HTMLL1(fallback)
L2 专属排版器调用失败(超时/返回错误)降级到 L1 通用 HTMLL1(fallback)
markdown 库未安装使用简单正则替换进行基础转换L1(基础)
排版引擎内部异常返回 {success:false, error:..., code:...}

所有异常均通过 try/except 捕获,排版失败时返回结构化 JSON 错误信息,不抛出未捕获异常。

示例

示例1: Markdown 平台(掘金) - L0 无需转换

python skills/content-formatter/scripts/format_engine.py \
  --content "# 测试标题" \
  --platform juejin

输出:

{"success": true, "data": {"html": "", "markdown": "# 测试标题", "text": "", "format_used": "markdown", "layer": "L0"}, "error": null}

示例2: 微信公众号 - L2 平台专属排版

python skills/content-formatter/scripts/format_engine.py \
  --content "# 测试标题" \
  --platform wechat_official

输出:

{"success": true, "data": {"html": "测试标题", "markdown": "# 测试标题", "text": "", "format_used": "html", "layer": "L2"}, "error": null}

示例3: Twitter/X - L3 纯文本截断

python skills/content-formatter/scripts/format_engine.py \
  --content "# 标题\n\n这是一段很长的正文内容..." \
  --platform x_twitter

输出:

{"success": true, "data": {"html": "", "markdown": "标题\n\n这是一段很长的正文内容...", "text": "标题 这是一段很长的正文内容...", "format_used": "text", "layer": "L3"}, "error": null}

集成说明

本引擎被 mcps/multi-publisher-mcp/publishers/base.py_ensure_content_format 方法调用,作为统一排版入口。调用方式为 subprocess 子进程调用,失败时降级到 base.py 内置的 format_converter 路径(P1-5 已有逻辑)。

29 平台清单

L0(Markdown 原生,9个): juejin, csdn, segmentfault, cnblogs, 51cto, oschina, yuque, imooc, jianshu, woshipm, bilibili_col L1(通用 HTML,13个): toutiao, douban, sohu, dayu, netease, yidian, smzdm, xueqiu, eastmoney, douyin_img, sohufocus, wordpress, typecho L2(平台专属,4个): wechat_official, zhihu, baijiahao, weibo L3(纯文本,1个): x_twitter

wenyan CSS 主题说明

wenyan CSS 主题已随 wenyan-mcp 归档,如需使用从 mcps/wenyan-mcp/ 源码提取。 R6复核修复(BUG-FAKE-121+): wenyan-mcp已归档,list_themes不再可用(如需CSS主题,执行npm pack @wenyan-md/mcp提取dist/themes/*.css)

wenyan-mcp(@wenyan-md/mcp, Node 运行时)的 CSS 主题文件内联在 npm 包源码中,本地 mcps/wenyan-mcp/ 目录仅保留 mcp.json(工具声明: render_markdown/list_themes/register_theme/delete_theme/publish_draft)和 .env.example,不含独立 .css 文件。

如需获取 wenyan 内置主题 CSS:

  1. 执行 npm pack @wenyan-md/mcp 解包后提取 dist/themes/*.css
  2. 或调用 wenyan-mcp 的 list_themes 工具在线获取主题列表
  3. 提取后将 CSS 放置到 skills/content-formatter/assets/themes/ 目录(当前不存在,需创建)

Related skills

公众号(WeChat Official Account)排版工具:将文章转换成可一键复制、直接粘贴进公众号编辑器并保留全部样式的 HTML。内置音乐卡片、歌词引用块、高亮块、金句块、互动引导等组件,默认暖色调配色,特别适合歌曲/音乐/怀旧/生活方式类内容;其他类型也可用,但配色与组件通常需微调。WeChat MP Formatter: turns articles into self-contained HTML that keeps all styling when pasted into the MP editor. Ships music cards, lyric quote blocks, highlight boxes, key-sentence blocks and interactive prompts with a warm-tone palette tuned for songs/music/nostalgia/lifestyle; other topics work too but may need palette/component tweaks.

3 installs

面向个人用户的 Markdown 格式化工具,将纯文本或已有 Markdown 转换为结构清晰、易读的格式。核心能力: - 自动识别纯文本与 Markdown 内容类型 - 生成 frontmatter(标题、摘要、描述) - 优化标题层级、加粗关键结论、列表化平行内容 - 中英文混排间距自动修正 适用场景: - 个人博客文章格式整理 - 技术笔记结构优化 - 文档可读性提升 差异化: - 免费版提供单文件格式化能力 - 仅调整格式与修正明显错别字,不改动内容 - 支持交互式标题选择 触发关...

1 installs

自媒体文章排版生成技能。当用户要求生成、创建、排版微信公众号文章或今日头条文章,或需要公众号/头条美化格式、编辑器兼容HTML时触发。支持微信公众号(23种风格配色:7种通用+8种节日+4种季节+4种主题,默认Linear冷工程蓝紫,全内联CSS)和今日头条(纯语义HTML,ProseMirror兼容)双平台自动选择。可根据用户要求、节日/季节/主题关键词或内容自动匹配平台和风格。支持标题、正文、列表、引用、提示框、数据卡片、对比栏、代码块、表格、进度条、信息卡片、键值列表等全套排版组件;宽表/长内容可自动改用信息卡片或键值列表展示。

2 installs

公众号排版工具。用户提供任意格式的文章内容(草稿、纯文字、已有 Markdown 均可), AI 自动识别结构、添加排版标记,生成专业公众号 HTML。 Use when: 用户说"帮我排版"、"转成公众号格式"、"生成 HTML";用户上传文章内容或文件 NOT for: 纯文本渲染;用户只想预览已有 HTML

23 installs1 stars

公文格式转换 — 将 Markdown 转换为符合 GB/T 9704-2012 党政机关公文格式的 Word 文件。可选能力:远程图片下载(仅 http/https/data:image,可通过 download_images=False 关闭)。Do NOT:不做文体识别、不添加红头/版记/落款、不做内容审核。

7 installs1 stars

内容生成+发布统一编排器,15条管道文件(12 PL-*+3 E2E-*):VIDEO/VIDEO-BATCH/IMAGE/AUDIO/LIPSYNC/COMIC/COMIC-BATCH/ARTICLE-BATCH/NOVEL-BATCH/PRODUCT/HOTSPOT/NEWPROD+E2E-VIDEO/E2E-IMAGE/E2E-DAILY+3内置虚拟路由(PL-NOVEL连载/PL-DRAMA短剧/PL-UPLOAD上传)。平台注册表自动路由+代理自动注入+多租户感知(tenant_id→风格/人设/素材/平台隔离)+素材→闲鱼商品(PL-PRODUCT)+热点→商品(PL-HOTSPOT)+小说连载(PL-NOVEL/PL-NOVEL-BATCH)+短剧生成(PL-DRAMA内置)。触发:生成内容/发布内容/一条龙/日常运营/素材转商品/热点选品/热点上架/小说连载/短剧生成/上传内容生成 不触发:纯闲鱼运营/纯客服回复/数据分析查询

4 installs