全部技能 / 内容创作 / baoyu-post-to-weibo
内容创作 · JimLiu/baoyu-skills

baoyu-post-to-weibo

Posts content to Weibo (微博). Supports regular posts with text, images, and videos, and headline articles (头条文章) with Markdown input via Chrome CDP. Use when user asks to "post to Weibo", "发微博", "发布微博", "publish to Weibo", "share on Weibo", "写微博", or "微博头条文章".

风险提醒:红色 · 谨慎使用AI 侦查报告
作者 JimLiuGitHub JimLiu/baoyu-skills ↗Stars 25926许可 MIT(仓库根 LICENSE,Copyright (c) 2026 Jim Liu;GitHub API spdx_id=MIT)commit 1567581c26
agent 宿主通常会约束 skill 执行权限;风险提醒为 AI 侦查观点,不构成质量或安全保证。第三方 skill 仅作拆解与展示,安装使用风险自负,版权归原作者。

1实现原理 · 为什么它能做到

实现路线是驱动本机真实 Chrome:找 Chrome 可执行文件 → 起带调试端口的实例(独立 profile)→ 等调试端口就绪 → 连 CDP WebSocket → attach 到目标页。

skills/baoyu-post-to-weibo/scripts/weibo-utils.ts
export async function launchChrome(url: string, profileDir: string, chromePathOverride?: string): Promise<number> {
注:不做 HTTP 层逆向、不构造私有 API 请求;一切操作都发生在真实浏览器页面里(这也是它能绕过平台反自动化检测的前提)。

反自动化检测绕过是本 skill 的显式设计:SKILL.md 首段就把它写成卖点,代码里则关闭 Chrome 的自动化特征标记。

skills/baoyu-post-to-weibo/scripts/weibo-utils.ts
extraArgs: ['--disable-blink-features=AutomationControlled', '--start-maximized'],
注:SKILL.md 原文:`Posts text, images, videos, and long-form articles to Weibo via real Chrome browser (bypasses anti-bot detection).`——技术性绕过平台自动化侦测,是本 skill 判红的主因。

内容注入的第一手段是『真实按键粘贴』而非合成事件,理由被明写在脚本用途里:网站能检测并忽略 CDP 合成事件。

skills/baoyu-post-to-weibo/scripts/paste-from-clipboard.ts
This bypasses CDP's synthetic events which websites can detect and ignore.
注:调用链:weibo-utils.ts 的 copyHtmlToClipboard/copyImageToClipboard 以 `spawnSync('npx', ['-y', 'bun', scriptPath, ...args])` 调起 copy-to-clipboard.ts,再用 pasteFromClipboard → paste-from-clipboard.ts 发真实 Cmd+V/Ctrl+V(macOS 走 osascript System Events,Linux 走 xdotool/ydotool,Windows 走 PowerShell SendKeys)。weibo-article.ts 里 `// Method 1: Copy HTML to system clipboard, then real paste keystroke` 而 CDP 合成事件只作为 fallback。

普通微博的文本输入用 CDP Input.insertText,失败回退 execCommand;媒体上传直接把文件路径塞给页面 file input,再按 blob:/data: 计数校验。

skills/baoyu-post-to-weibo/scripts/weibo-post.ts
await cdp.send('Input.insertText', { text }, { sessionId });
注:上传用 `DOM.setFileInputFiles` 指向 `#homeWrap input[type="file"]`;校验表达式统计 `#homeWrap img[src^="blob:"], #homeWrap img[src^="data:"], #homeWrap video` 的数量,最多 18 个文件(MAX_FILES = 18)。

头条文章走 card.weibo.com 的 ProseMirror 编辑器:填标题/导语 → 粘贴 HTML → 逐图『复制图片 + 真实粘贴键』替换占位符 → 校验剩余占位符与图片数。

skills/baoyu-post-to-weibo/scripts/weibo-article.ts
// Method 1: Copy HTML to system clipboard, then real paste keystroke
注:编辑器入口常量 `const WEIBO_ARTICLE_URL = 'https://card.weibo.com/article/v3/editor';`;图片替换循环里也是 copyImageToClipboard → pasteFromClipboard('Google Chrome', 5, 1000)。

平台字数限制被硬编码并自动处理:标题 32 字符、导语 44 字符,超长按标点边界截断或从正文重生成。

skills/baoyu-post-to-weibo/scripts/weibo-article.ts
const TITLE_MAX_LENGTH = 32;
注:同文件 `const SUMMARY_MAX_LENGTH = 44;`;超长导语用 parsed.shortSummary 重新生成,否则截断加省略号。

会接管/复用已在运行的调试 Chrome:按 profile 目录 + --remote-debugging-port 在进程列表里匹配,必要时只终止自己这套 profile 的实例。

skills/baoyu-post-to-weibo/scripts/weibo-utils.ts
if (!line.includes(profileDir) || !line.includes('--remote-debugging-port=')) continue;
注:killChromeByProfile 用 `spawnSync('ps', ['aux'])` 找进程再 `process.kill(Number(pid), 'SIGTERM')`;SKILL.md 就此写了一条 CRITICAL 纪律:`Only kill Chrome instances launched by CDP with the baoyu-skills profile directory.`(禁止 pkill 掉用户全部 Chrome)。

登录态来自持久 Chrome profile,首次需人工登录一次后长期复用;且脚本只负责把内容填进页面,发布由用户手动确认。

skills/baoyu-post-to-weibo/SKILL.md
All scripts only fill content into the browser, user must review and publish manually
注:SKILL.md 另一处:`First run: log in to Weibo manually (session saved)`——session 落在 profile 目录里的 cookie/存储,是典型的『复用已登录浏览器会话』模式(凭证面来源)。

2核心能力

01普通微博发布(文本 + 图片/视频,最多 18 个文件)
02头条文章发布(Markdown → HTML → ProseMirror 编辑器,支持 frontmatter title/summary/cover_image)
03标题/导语长度合规(32/44 字符)与超长自动截断或重生成
04图片占位符替换 + 发布前自检(剩余 WBIMGPH_ 占位符与预期图片数比对)
05跨平台剪贴板与按键注入(macOS swift/osascript、Linux wl-copy/xclip + xdotool/ydotool、Windows PowerShell)
06调试 Chrome 复用与按 profile 精准清理(不误杀用户日常 Chrome)
07复用已有登录态(EXTEND.md 可配默认 Chrome profile),免重复扫码

3外部依赖

类型依赖
network浏览器访问 weibo.com 与 card.weibo.com(发帖与头条文章编辑器)
network头条文章编辑器入口
cli本地 Chrome/Chromium(--remote-debugging-port + --user-data-dir,带 AutomationControlled 关闭参数)
cli粘贴按键注入工具(macOS osascript / Linux xdotool 或 ydotool / Windows powershell.exe)
cli剪贴板工具(macOS swift 临时脚本 / Linux wl-copy 或 xclip / Windows PowerShell)
clips(进程枚举,用于复用/清理调试 Chrome)
packagebaoyu-chrome-cdp(npm,仓库 packages/ 内共享包:CDP 连接、Chrome 查找与启动、按键/剪贴板基础件)
packagebaoyu-md(npm,仓库 packages/ 内共享包:Markdown → HTML,供头条文章使用)
clibun(内部以 npx -y bun 调起同目录辅助脚本)

4风险提醒 风险提醒:红色 · 谨慎使用

风险提醒:红色 · 谨慎使用
  • 反自动化检测绕过(判红主因) — 脚本关闭 Chrome 自动化特征标记并以 OS 级真实按键替代合成事件,目的就是让微博把自动化操作识别为真人操作。这可能违反平台条款、触发账号风控,后果由使用者承担;建议只在自有账号、自有内容、低频率使用。
  • 接管已有调试 Chrome 会继承其人机会话 — 启动时按 profile 复用已在运行的调试实例(含 ps aux 扫描),若该实例是用户平时登录微博/其他站点的同一 profile,则本次操作与用户的日常浏览会话混在一起,剪贴板与窗口焦点也会被脚本占用。
  • 系统级按键与剪贴板权限 — macOS 需要授予终端『辅助功能』权限(System Events 发按键),Linux 需要 xdotool/ydotool;获得该权限后脚本可向前台任意应用发按键。剪贴板在注入期间对同机其他进程可见。
  • 发布动作不可逆 — 脚本只填内容,但用户一旦点发布即在公开平台生效;头条文章的封面/图片替换若失败会留下占位符,脚本只打印告警由用户判断(三处 console.warn 提示需要人工复核)。
风险提醒:红色,谨慎使用。判红属『能力/策略级』,红线在本 skill 目录内且有文档自述:①【技术性反自动化检测绕过】SKILL.md 首段 `Posts text, images, videos, and long-form articles to Weibo via real Chrome browser (bypasses anti-bot detection).`;实现层 scripts/weibo-utils.ts 给 Chrome 传 `extraArgs: ['--disable-blink-features=AutomationControlled', '--start-maximized'],`(关闭自动化特征标记,与 notebooklm-skill 判红同一手法);scripts/paste-from-clipboard.ts 自述 `This bypasses CDP's synthetic events which websites can detect and ignore.`,且 weibo-article.ts 把它当第一手段(`// Method 1: Copy HTML to system clipboard, then real paste keystroke`),CDP 合成事件只作 fallback。②【凭据/会话面】复用持久化 Chrome profile 的微博登录会话(首次人工登录后长期保存),可接管已在运行的调试 Chrome;不读任何密钥文件。③【外部副作用】以你的账号在公开平台发帖/发头条文章(脚本只填内容、由用户确认发布);另会按 profile 精确 SIGTERM 结束自己启动的调试 Chrome。收尾:无 TLS 降级、无沙箱降级(Chrome 未带 --no-sandbox)、无私有 API 逆向、无客户端冒充;红线来自反自动化检测绕过本身。

5第二遍独立确认

  • [ok] 反自动化检测绕过(判红主因) — 三处证据互相印证:SKILL.md 'bypasses anti-bot detection';weibo-utils.ts `extraArgs: ['--disable-blink-features=AutomationControlled', '--start-maximized'],`(launchChrome 传给 launchChromeBase);paste-from-clipboard.ts 'This bypasses CDP's synthetic events which websites can detect and ignore.'
  • [ok] 真实按键是第一手段而非兜底 — weibo-article.ts 注释排序为 '// Method 1: Copy HTML to system clipboard, then real paste keystroke',失败后才走 DataTransfer paste 事件;图片替换循环直接 pasteFromClipboard('Google Chrome', 5, 1000)。
  • [ok] 凭证面确认(无密钥读取,靠 profile 会话) — 全目录 process.env/API_KEY/TOKEN/SECRET/.env 扫描零命中;SKILL.md 说明登录态由 Chrome profile 持久化(First run: log in to Weibo manually (session saved)),EXTEND.md 仅支持默认 profile 一项。
  • [ok] 外部端点仅微博自家域名 — grep https:// 命中 WEIBO_HOME_URL=https://weibo.com/ 与 WEIBO_ARTICLE_URL=https://card.weibo.com/article/v3/editor,另有一处仅作日志措辞的 'src: https://...';无第三方 API/CDN。
  • [ok] 平台限制与自检 — MAX_FILES=18、TITLE_MAX_LENGTH=32、SUMMARY_MAX_LENGTH=44 均在源码;SKILL.md 的 Post-Composition Check(剩余 WBIMGPH_ 占位符、预期 vs 实际图片数)与代码校验逻辑一致。
  • [ok] 进程清理不会误杀用户浏览器 — killChromeByProfile 只对同时包含 profileDir 与 '--remote-debugging-port=' 的行取 pid 并 SIGTERM;SKILL.md 用 CRITICAL 明确禁止 `pkill -f "Google Chrome"`。
  • [ok] 无其他安全降级 — grep no-sandbox / rejectUnauthorized / --insecure / NODE_TLS_REJECT / disable-web-security 零命中;Chrome 参数仅为调试端口、profile、AutomationControlled 与最大化窗口。
  • [ok] 元数据(license/stars/commit) — git HEAD=1567581c26ec29f4216c6e6835415bf30343b0e3;仓库根 LICENSE=MIT(Copyright (c) 2026 Jim Liu);GitHub API stars=25926、pushed_at=2026-09-10T15:13:43Z。

6结论

  • 用真实浏览器完成微博这种强登录、强前端校验的发布场景,避免自建 API 客户端带来的封号与维护风险(代价是必须本机跑 Chrome)。
  • 内容注入多级兜底 + 自检:insertText/execCommand、剪贴板真实按键、DataTransfer 事件;发布前比对占位符与图片数。
  • 把平台硬限制内建在流程里:18 附件、标题 32、导语 44,超长自动截断/重生成,用户不必先撞墙。
  • 操作安全边界写得明白:只填内容不点发布(用户复核),清理进程只用 profile 精确匹配并禁止全局 pkill。
  • 跨三平台可用:剪贴板与按键在 macOS/Linux/Windows 各有实现,且提供了 Chrome 调试端口不健康时的排错指引。
  • 适合:适合有微博账号、想把手写 Markdown 一键铺进头条文章编辑器(含封面与内文配图)的作者,或因平台限制不宜走 API 的日常发帖场景;也适合把该流程作为其他内容生产 skill 的最后一环(前提是接受其反检测手法与账号风险)。
    不适合:不适合不合规或不愿接受平台风控风险的场景(本 skill 明含反自动化检测绕过,判红);不适合无图形界面/无 Chrome 的服务器环境;不适合需要完全无人值守发布的流水线(脚本只填内容、需用户点发布);也不适合批量养号/营销刷量用途。
    安装 agent 直装可复制
    ① 本站镜像 更新 2026-09-15
    方式 A · 人下载镜像包下载 baoyu-post-to-weibo.tar.gz
    sha256: 5673e558aeace4cc…
    方式 B · JSON 格式安装指南,复制给 agent
    安装指南
    agent 读 JSON 指南后会自动从本站下载安装,无需更多说明。
    ② 上游 GitHub · 原始来源
    能访问 GitHub?直接去上游安装(实时版,可能已更新)GitHub 原始 ↗
    本页镜像锁定 commit 1567581c26;上游为实时仓库。
    来源信息 GitHub 原始
    作者 / 仓库JimLiu / JimLiu/baoyu-skills
    Stars25926
    最近推送2026-09-10
    本 skill commit1567581c26
    许可MIT(仓库根 LICENSE,Copyright (c) 2026 Jim Liu;GitHub API spdx_id=MIT)
    本站信息
    收录日期2026-09-06
    分类内容创作
    侦查报告AI 侦查 · 2 遍 · 2026-09-06
    本站镜像与 GitHub 原始是不同来源:本站锁定 commit 快照经 /r2 分发;GitHub 为实时上游,内容可能已更新。
    同分类邻近