# 媒体采购网发布 Skill — Meiticaigou Publisher > 通过真实 Chrome 发布媒体采购网文章:动态整理素材、逐张上传原图、保留图文顺序、核验 UEditor 正文,并遵守用户授权阶段。 ## Install Save the content below to `.claude/skills/` or append to your `CLAUDE.md`: --- name: meiticaigou-publisher description: "Publish changing user-provided articles on meiticaigou.com (媒体采购网/广告采购网) through one canonical Chrome MCP workflow. Use when the current task supplies PPTX, DOCX, pasted text, image folders, or mixed material and Codex must build a fresh content plan, extract original images, fill the logged-in UEditor draft, upload every image strictly one at a time, preserve the current article's order and formatting, verify the live DOM, and stop at the user-authorized stage." --- # 媒体采购网发布 使用一条最优主路径:把本次素材规范化为动态内容计划,再通过 Chrome MCP 完成编辑、上传、排版和核验。仅在主路径确实受阻时启用同一真实 Chrome 的备用控制逻辑。 ## 铁律 1. 内容完全来自本次素材和用户指示。不得复用旧标题、正文、图片、媒体或图文结构。 2. 不硬编码品牌、段落数、图片数、文件名或顺序。 3. 始终使用用户日常登录的同一个真实 Chrome。主路径使用 Chrome MCP;备用路径只允许 Computer Use 控制该 Chrome,不使用扩展或临时浏览器。 4. 不使用系统剪贴板,不进入源码粘贴模式,不使用网站“一键自动排版”。 5. 只上传原始图片;每张远端校验完成后再上传下一张。 6. 不猜选媒体,不越过用户授权的保存、下一步、付款或发布阶段。 7. Chrome MCP 不可用或关键控件无法操作时,按“备用逻辑”降级;不要无理由提前切换。 ## 唯一执行路径 ### 1. 生成本次 `content_plan` 无论输入是 PPTX、DOCX、粘贴文本、图片目录或混合素材,都先转换成同一结构: ```json { "title": "本次标题", "items": [ {"type": "text", "text": "第一段"}, {"type": "image", "path": "/absolute/path/image.png"}, {"type": "text", "text": "下一段"} ], "format": {} } ``` 保留当前素材的全部内容和用户指定顺序,不自动改写、删减或截断。标题或图文顺序确实无法判断时再询问。 若输入为 PPTX,先无损提取全部元素和原图: ```bash python3 scripts/extract_ppt_content.py \ "/absolute/path/current.pptx" \ --output-dir "/absolute/path/current-assets" ``` 根据 manifest、幻灯片布局和当前指示生成 `content_plan`。manifest 只提供本次素材证据,不直接充当发布模板。 开始浏览器操作前确认:标题明确、所有正文已纳入、每张图片的绝对路径和自然尺寸已记录、顺序正确、没有上一篇残留。 ### 2. 连接真实 Chrome 1. 调用 Chrome MCP `list_pages`。 2. 选择已登录的 `meiticaigou.com` 页面。 3. 调用 `take_snapshot` 获取当前 UID。 4. 若连接、登录态或目标页面异常,立即报告,不降级到其他控制工具。 ### 3. 打开空白稿 1. 从当前页面侧栏“广告发布”的真实 `href` 读取空白稿 URL,不硬编码账号参数。 2. 仅在用户确认上一篇已提交或无需保留后导航到空白稿。 3. 重新 `take_snapshot`,确认标题框、内容编辑器以及底部操作按钮存在。 ### 4. 填标题并清空编辑器 1. 用 Chrome MCP `fill` 写入 `content_plan.title`。 2. 找出边界框非零的可见 `.edui-editor` 和其中尺寸最大的主内容 iframe,不依赖数字 ID。 3. 把平台默认提示替换为空段落并触发 `input`。 4. 确认默认说明和上一篇内容均已清除。 ### 5. 严格逐张上传原图 按 `content_plan.items` 中图片首次出现的顺序处理: 1. 用最新快照定位当前 UEditor 图片上传文件输入 UID。 2. 调用一次 Chrome MCP `upload_file`。 3. 轮询主 iframe,直到对应 `` 同时满足: - `alt` 与当前本地文件名一致; - `src` 不含 `spacer.gif`; - `naturalWidth`、`naturalHeight` 与本地原图一致。 4. 只有三项全部通过才开始下一张。 不要只等待图片数量增加。若多个节点变成最后一张,清空全部错误图片并从第一张重新严格串行上传。 ### 6. 按本次计划重建正文 1. 收集上传成功的远端 `` 节点,并按文件名建立映射。 2. 清空主 iframe。 3. 严格遍历 `content_plan.items`:文本创建文本节点,图片移动对应远端节点;不得重排或遗漏。 4. 优先落实用户格式;未指定时使用: - 正文:`text-indent:2em; text-align:justify; line-height:1.85; margin:0 0 18px 0;` - 图片段落:`text-align:center; margin:18px 0 24px 0;` - 图片:`max-width:100%; height:auto; display:inline-block;` 5. 触发 `input`,滚动到正文开头,保持可视编辑模式。 具体 Chrome MCP/UEditor 代码见 [references/site-playbook.md](references/site-playbook.md)。 ### 7. 全量核验 通过 Chrome MCP 读取实时 DOM,并逐项对照本次 `content_plan`: - 标题完全一致; - 每个文本项内容和顺序一致; - 每张图片的文件名、顺序、远端 URL、自然尺寸一致; - 默认提示、占位图和上一篇内容均不存在; - 用户格式已经落实; - 源码模式关闭; - 页面仍处于用户授权阶段。 截取可视编辑器画面并把页面停在文章开头。向用户报告本次实际标题、正文长度、图片数量、尺寸校验和当前阶段。 ### 8. 停在授权边界 默认停在排版核验完成处,不点击“预览”“保存”“下一步”,不选择媒体。用户明确要求继续时,只执行其授权的阶段;媒体不明确时先询问,最终提交或付款前遵守当次环境的确认要求。 ## 备用逻辑 仅在 Chrome MCP 经过重新选页、重新快照和一次安全重试后仍失败,或 UEditor 关键控件没有可操作 DOM/UID 时启用: 1. 明确记录触发备用逻辑的原因。 2. 使用 Computer Use 控制当前已经登录的同一个 Chrome 窗口;不打开新配置、不安装扩展。 3. 继续使用同一个 `content_plan`、原图列表和严格串行上传条件,不改变内容或顺序。 4. 优先使用可访问元素,只有元素不可用时才依据最新截图进行坐标操作。 5. 不使用系统剪贴板;文本通过安全输入,图片通过文件选择器逐张上传。 6. 受阻步骤完成后立即尝试返回 Chrome MCP 做 DOM 与自然尺寸核验。 7. Chrome MCP 始终无法恢复时,用 Computer Use 完成可视核验,并把无法验证的 DOM/远端尺寸项目明确报告为未验证,不能假装通过。 ## 资源 - `scripts/extract_ppt_content.py`:PPTX 全量文本、位置和原始图片无损提取。 - `references/site-playbook.md`:上述唯一 Chrome MCP 路径所需的 DOM 脚本。 --- Source: https://tokrepo.com/en/workflows/skill-meiticaigou-publisher-f42604ed Author: henuwangkai