baoyu-post-to-x实战:明确浏览器模式与最终授权的发帖流程
baoyu-post-to-x 不只是把一句话塞进发帖框。它还规定了浏览器控制路线、Markdown 长文转换、图片装配与公开提交的授权边界。“请准备发帖”不等于“现在点击 Post 或 Publish”。最终提交必须获得当前会话中明确的用户确认。 本文基于固定 commit 的源码核对,案例为操作示例,非付费或账号实测;本次写作不安装、不登录、不上传、不发布。
场景与边界
技能覆盖普通文字配图、视频、带评论的引用帖和 Markdown 格式的 X Articles。普通帖 CDP 脚本支持最多四张图片;视频和引用帖有独立入口;Markdown 文件默认选择 X Article,而不是自动拆成线程。需要线程、翻译或重新改写内容时,应另行提出,不要假定技能已经提供某个不存在的参数。
该版本文档要求 X Articles 具备 Premium 权益,普通帖和视频也列有不同账号级别的长度限制。这些是固定版本的说明,不是对当前订阅档位和平台政策的永久保证。执行前以账号实际编辑器能力为准,不因入口不可见而自动购买、升级或绕过限制。
先选浏览器模式,而不是先跑脚本
在 Codex 中有三种不同路线,不能混用名称:
- 用户明确要求 Codex Chrome 插件、Chrome Extension 或
@chrome,就采用该插件对应的浏览器能力,不能先偷偷尝试 Computer Use。 - 用户明确要求 Chrome Computer Use,就用可见 Chrome 的桌面交互。切换插件、CDP 或其他方式前必须说明阻塞并征得同意。
- 用户明确要求 CDP/script,或允许的首选模式不可用,才走脚本后备路线。没有明确偏好时,源码优先可用的 Computer Use。
源码所述 chrome:Chrome 是特定 Codex 环境的能力名,不代表任意 Agent 都安装了它。执行环境没有对应工具时应如实说明,而不是杜撰调用。X 工作流也不应换成应用内置 Browser 冒充真实 Chrome。模式选择影响的是会话、权限和操作方式,不影响“最终公开提交必须确认”的规则。
前置依赖与按需安装
准备有权限的 X 账号、Google Chrome,以及所选模式对应的浏览器能力。首次登录由用户手动完成。CDP 和本地 Markdown 预处理需要 Bun,或可用 npx -y bun 的 Node.js 环境;系统剪贴板和粘贴权限也需要正常。
只安装本技能到 Codex:
1 | npx skills add jimliu/baoyu-skills --skill baoyu-post-to-x --agent codex |
Claude Code 用户将 --agent codex 换成 --agent claude-code,但不能据此假定它也具备 Codex Chrome 插件。安装器通常拉取当前仓库版本,严格复现本文需对照文末固定 commit。运行时与技能分开准备;源码支持的 Bun 安装命令是:
1 | npm install -g bun |
已有 Bun 则不再安装,也可直接用 npx -y bun。技能的预检脚本 check-paste-permissions.ts 可检查 Chrome、profile 隔离、剪贴板和辅助功能,执行前说明它会检查的系统权限,不要自动授予新权限。
输入、输出与配置
普通帖输入文字与本地图片,视频输入文字与视频文件,引用帖输入目标帖子 URL 及评论,Article 输入 Markdown 和可选封面。文章 frontmatter 支持 title、cover_image;转换器输出 JSON 中包含 title、coverImage、contentImages,其中每张图有 placeholder 和 localPath。这份映射是正文图片逐张装配的依据。
默认结果是浏览器编辑器或预览页,而非已公开内容。只有在最终授权后完成提交并确认平台实际状态,才能报告发布结果;脚本日志里的一句成功不能替代账号、正文和公开页面的核验。
偏好依次查找项目 .baoyu-skills/baoyu-post-to-x/EXTEND.md、XDG 配置目录对应位置、用户 ~/.baoyu-skills/baoyu-post-to-x/EXTEND.md。SKILL.md 明确的偏好范围是默认 Chrome profile,不应凭空添加自动提交开关。CDP 普通帖、视频和引用脚本支持 --profile;Chrome 插件与 Computer Use 使用用户已有会话,不应强行启动另一套 CDP profile。Chrome 路径可通过 X_BROWSER_CHROME_PATH 指定。
可复制的自然语言 Agent 请求
1 | 请使用 baoyu-post-to-x 帮我准备一条普通帖子,采用我明确指定的浏览器控制模式。正文保持原样,附上两张本地图片;先核对当前账号与图片顺序。只装入编辑器并等待上传完成,不点击 Post,不公开提交。完成后展示待发内容和媒体清单,向我请求最终确认。 |
长文可以这样约束:
1 | 请把 ./posts/review/article.md 准备为 X Article。使用 Codex Chrome 插件;若插件不可用,先说明问题,不要私自切换到 CDP。转换后保留图片映射,通过 Insert → Media 上传每一张正文图,清理 XIMGPH_ 占位符,打开 Preview 检查。不要使用 --submit,也不要点击 Publish,直到我在本次会话明确确认最终发布。 |
操作案例:含两张本地图的技术文章
先确认账号有 Article 编辑入口及使用模式。若用户指定插件,先检查插件连接;若指定 Computer Use,只操作可见 Chrome。Markdown 预处理可以使用源码已核实的命令,${BUN_X} 替换为 bun 或 npx -y bun,{baseDir} 替换为技能目录。下面的 /tmp 路径是源码的类 Unix 示例,Windows 应换成真实存在且可写的绝对路径:
1 | ${BUN_X} {baseDir}/scripts/md-to-html.ts article.md --save-html /tmp/x-article-body.html > /tmp/x-article.json |
读取 JSON 确认标题、封面和两张图片的映射,再在 https://x.com/compose/articles 创建或打开草稿。填标题、准备富 HTML 并通过真实粘贴键粘入正文:
1 | ${BUN_X} {baseDir}/scripts/copy-to-clipboard.ts html --file /tmp/x-article-body.html |
文章中的 XIMGPH_1 等是待替换位置,不能当正文发布。按照映射顺序定位占位符,打开工具栏 Insert → Media,点击带有 Add photos or video 标签的图标按钮,再通过文件选择器上传。不要把拖拽提示区或隐藏 input 当成已成功选择文件。等待图片块出现后,如果占位符仍在,精确选中并删除;不要误删邻近段落。正文图片在插件与 Computer Use 路线应走工具栏上传,不依赖图片剪贴板粘贴。
最后打开 Preview 检查标题、正文、链接、封面及两张图,报告“已准备,未发布”。当用户明确确认这篇文章、这个账号和当前版本可以公开发布后,才允许执行最终点击。若内容随后发生实质修改,应重新让用户确认最终版本。
CDP 后备路线的安全使用
仅当模式选择允许时,普通帖的入口如下:
1 | ${BUN_X} {baseDir}/scripts/x-browser.ts "这是一条待审阅的更新说明。" --image ./images/update.png |
Article 的默认预览入口为:
1 | ${BUN_X} {baseDir}/scripts/x-article.ts article.md |
x-article.ts 的源码确实支持 --submit,并且默认 submit = false。这个参数会进入最终发布分支,不能为了“跑完流程”默认加上。也不能把公众号贴图中同名参数的“保存草稿”语义搬到 X 上。对于手动浏览器流程,点击 Post/Publish 与使用提交参数具有相同的公开影响,都需要明确授权。
验收清单
- 浏览器模式与用户要求一致,未静默降级或换会话。
- 当前账号与预期一致,账号权益满足编辑器需求。
- 正文、图片、引用 URL 和媒体顺序全部确认。
- 文章 JSON 的图片映射与页面内容一致,
XIMGPH_残留为零。 - 上传和视频处理完成,不能只看文件选择器已经关闭。
- Preview 中没有重复段落、空白图或失效链接。
- 默认停留于准备/预览状态,报告明确写“未发布”。
- 如需公开提交,已获得当前会话对最终内容的明确确认,并在提交后核验实际结果。
排错
插件上传提示 Not allowed:根据源码指引,在 Chrome 扩展详情检查是否允许访问文件 URL;这是用户权限选择,不应自动扩大权限。native pipe is closed:轻量检查重试一次,仍失败则检查扩展和连接;不要持续发送操作,也不要无提示改用 CDP。剪贴板文字不等于富文本:应检查编辑器实际内容;读取某个浏览器封装的剪贴板值不能证明系统剪贴板已正确写入。图片选择不可靠:停止并报告具体哪张图失败,不要跳过质量门槛。CDP 端口冲突:只排查任务相关调试实例,避免关闭所有 Chrome 工作窗口。文章排版有变化:X 不等同于 Markdown 渲染器,代码块等格式可能转换,需以预览确认。提交结果不明:先检查账号主页和草稿状态,不立即重发,防止重复公开内容。
相关技能与固定 commit 来源
需要整理文字可参考格式化 Markdown,图片减重见图片压缩,跨平台版本见微博发布流程与公众号草稿。
核对来源为固定 commit 1567581c26ec29f4216c6e6835415bf30343b0e3 的 SKILL.md、Articles 参考和x-article.ts。安装选项另见 skills 安装器说明。





