微信公众号发文采用 MD 编辑器整合方案,通过微信官方 __MP_Editor_JSAPI__ API 实现内容填充,确保格式完整保留。
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ SyncCaster │ │ MD 编辑器 │ │ 微信公众号 │
│ 插件 │────▶│ (预览排版) │────▶│ 编辑器 │
└─────────────────┘ └─────────────────┘ └─────────────────┘
│ │ │
1. 保存文章到 2. 用户预览 3. 自动填充
Chrome Storage 调整排版 标题+正文
mp_editor_set_content API 设置正文获取编辑器状态。
window.__MP_Editor_JSAPI__.invoke({
apiName: 'mp_editor_get_isready',
sucCb: (res) => {
// res = { isReady: true, isNew: true }
// isReady: 编辑器是否初始化完毕
// isNew: 是否为新编辑器(只有 isNew=true 时才能调用 set_content/insert_html)
},
errCb: (err) => console.error(err)
});
设置全文内容(需要 isNew=true)。
window.__MP_Editor_JSAPI__.invoke({
apiName: 'mp_editor_set_content',
apiParam: {
content: '<div>富文本内容</div>'
},
sucCb: (res) => console.log('设置成功', res),
errCb: (err) => console.error('设置失败', err)
});
插入内容(需要 isNew=true)。
window.__MP_Editor_JSAPI__.invoke({
apiName: 'mp_editor_insert_html',
apiParam: {
html: '<div>要插入的内容</div>',
isSelect: false // 是否选中插入的内容
},
sucCb: (res) => console.log('插入成功', res),
errCb: (err) => console.error('插入失败', err)
});
当官方 API 不可用时,按以下顺序尝试:
.ProseMirror 元素innerHTML#ueditor_0 iframeiframe.contentDocument.body.innerHTML[contenteditable="true"]innerHTMLmd/apps/web/src/entrypoints/injected.ts - 注入脚本,调用官方 APImd/apps/web/src/entrypoints/appmsg.content.ts - Content Script,转发消息md/apps/web/src/utils/wechat-publish.ts - 发布工具函数md/apps/web/src/components/editor/editor-header/index.vue - 发布按钮packages/adapters/src/wechat.ts - 微信适配器isNew=true 时才能调用 mp_editor_set_content 和 mp_editor_insert_html