// 微信公众号编辑器自动填充脚本 // 用法: node fill_wechat_editor.js // 连接: chrome://inspect 或通过 agent-browser 转发 const fs = require('fs'); const http = require('http'); const [, , markdownFile, imagesDir] = process.argv; if (!markdownFile || !imagesDir) { console.error('用法: node fill_wechat_editor.js '); process.exit(1); } const title = fs.readFileSync(markdownFile, 'utf8').split('\n')[0].replace(/^#\s+/, ''); const body = fs.readFileSync(markdownFile, 'utf8') .split('\n') .slice(1) .join('\n') .replace(/\n\n+/g, '\n\n'); const coverImg = `${imagesDir}/05-封面图.png`; // 微信公众号编辑器核心:获取 contenteditable 区域 const FILL_SCRIPT = ` (function() { // 1. 查找标题输入框 const titleInput = document.querySelector('.rich_media_title input[type="text"], input[placeholder*="标题"], [data-role="title"]'); if (!titleInput) return { error: '未找到标题输入框' }; // 2. 查找正文编辑器(多个可能) const editors = [ document.querySelector('.rich_media_content [contenteditable="true"]'), document.querySelector('[data-role="editor"]'), document.querySelector('.editor'), document.querySelector('#js_content'), document.querySelector('.weui-desktop-editor__editable') ].filter(el => el); if (editors.length === 0) return { error: '未找到正文编辑器' }; // 3. 填充标题 titleInput.focus(); titleInput.value = ''; titleInput.dispatchEvent(new Event('input', { bubbles: true })); // 4. 填充正文 const editor = editors[0]; editor.focus(); editor.innerHTML = ''; // 按段落分割,生成带换行的HTML const paragraphs = \`${body}\`.split('\\n\\n').map(p => `

${p.replace(/\\n/g, '
')}

`).join(''); editor.innerHTML = paragraphs; // 5. 上传封面图(如果有) if (${fs.existsSync(coverImg)}) { // 查找图片上传按钮 const imgBtn = document.querySelector('[data-role="image"], .weui-desktop-editor__tool-img, button[title*="图片"]'); if (imgBtn) { imgBtn.click(); // 等待文件选择器 setTimeout(() => { const fileInput = document.querySelector('input[type="file"]'); if (fileInput) { // 创建 DataTransfer 模拟文件选择 const file = new File([''], '${coverImg.split('/').pop()}', { type: 'image/png' }); const dt = new DataTransfer(); dt.items.add(file); fileInput.files = dt.files; fileInput.dispatchEvent(new Event('change', { bubbles: true })); } }, 500); } } return { success: true, title: \`${title}\` }; })(); `; console.log('等待连接...'); console.log('请在 VNC 中打开编辑器后,运行:'); console.log(' agent-browser --cdp 9222 eval \'' + FILL_SCRIPT.replace(/\n/g, ' ') + '\'');