ADR-0035:发布适配器 — Markdown 一次填入 vs 原生编辑器逐块
- 状态:已接受(2026-08-29)
- 相关:platform-post-recipes(路径卡 · 单一真相源)、x-article-playbook(WYSIWYG 逐块范本)、growth-post-paths
背景
同一篇精品稿(例 docs/growth-content/2026-08-29-seo-essay.{en,zh}.md)要发到 13 个平台,2026-08-29 一天内把四类失败都踩了一遍:
| 失败 | 平台 | 根因 |
|---|---|---|
md 字面量 ** / 空行被吞 / duplicate | Reddit Fancy Pants | 往富文本 contenteditable 灌 Markdown 源码 |
| 编辑器有字、公网空 | 开源中国(pre.textContent) | 写了 DOM 但没触发编辑器状态机,提交时取的是内部 model |
| 编辑器有字、公网仅标签 | 知乎专栏(Draft.js beforeinput paste) | 同上;Draft.js 的 EditorState 不认 DOM 涂改 |
| 全文字号异常 | X Article | 整篇当 Heading 灌进去,未按 block 映射 |
| 长文 save error | Medium(type_text 手填) | 逐字打字触发过多自动保存,超出编辑器承受 |
成功的只有两种形态:
- 一次 native setter 写进真正的 Markdown 输入框(Dev.to
#article_body_markdown、Hashnode Markdown tab、掘金、CSDNeditor.csdn.net/md、OSChina swap→可见textarea) - 按 block 走平台原生编辑能力 + Preview