Back to skills
extension
Category: OtherNo API key required

网页资料 → 公众号草稿箱

抓取网上资料(雪球/微博/网页等),整理为带层级结构的 Markdown,并通过 BrowserSkill 自动填入微信公众号图文编辑器、保存到草稿箱。全程保留标题/小标题/引用/列表/加粗格式,并自动去除会暴露“AI 抓取/自动生成”的可疑文案。

personAuthor: user_656c2e70hubcommunity

Web → 公众号草稿箱

把任意网上资料整理成带格式的微信公众号图文,存入草稿箱(不自动群发)。

前置条件

  • BrowserSkill 已安装并连接浏览器(bsk doctor 全绿;扩展需手动从 Chrome Web Store 装)。
  • 公众号后台 mp.weixin.qq.com 可访问,账号能扫码登录(登录步骤需用户本人完成)。

完整流程

1. 抓取资料

bsk session start --name <标识>      # 拿到 SESSION id(如 zmwo)
bsk session navigate --session <id> "<目标URL>"
bsk snapshot --session <id> > page.txt
bsk screenshot --session <id> --out page.png

避坑(见 references/bsk_notes.md):

  • 雪球等 SPA:navigate 常因 load 不触发而超时(exit 4),但页面已加载——超时后直接 snapshot 即可。
  • 全程复用同一 session:拿到 <id> 后,抓取、登录、填稿都用它,不要再 bsk session start 第二个。
  • 段永平正确雪球账号:大道无形我有型,ID 1247347556(勿混淆 1290568231 那位粉丝)。
  • PowerShell 中文乱码:bsk 输出 UTF-8,PowerShell 默认 GBK 解码会乱码。运行 bsk 前先 [Console]::OutputEncoding = [System.Text.Encoding]::UTF8,再 | Out-File -Encoding utf8 文件.txt

2. 整理 Markdown(由你完成)

把抓取内容整理成结构化 Markdown,并删除 AI 嫌疑文案

  • 保留层级:# 标题、> 引用、- 列表、**加粗**
  • 必须剔除:“数据来源:…经 BrowserSkill 抓取”“本文由 AI 整理”“抓取于…实时快照” 以及任何暴露“这是机器自动抓的/AI 写的”的句子。改成自然口吻(如“以下是今日的发言整理:”)。
  • 输出两份产物:
    1. 最终对外 Markdown(给用户留存/预览)。
    2. 正文的 HTML 片段(供注入),标签限定为 h3 / blockquote / ul>li / strong / p, 含 **加粗** 的地方用 <strong>。不要出现 <script>、内联 style

3. 登录公众号并清场

  • 复用步骤 1 的 session(不要新开),bsk session navigate --session <id> "https://mp.weixin.qq.com" 进入后台首页。
  • 提示用户扫码登录(这一步必须用户本人完成,你无法代填)。
  • 登录后确认:用 bsk snapshot 检查页面是否出现账号名(如「禾田吵」),确认登录态。
  • 进入编辑器:点左侧「图文消息 → 新建图文」,或 navigate 到编辑器 URL (形如 https://mp.weixin.qq.com/cgi-bin/appmsg?t=media/appmsg_edit&action=edit&type=10&lang=zh_CN&token=<token>token 从登录后页面 URL 的 token= 参数取得)。
  • 关闭弹窗:bsk evaluate --session <id> "$(cat scripts/close_popups.js)"(常见如「小店返佣」推广卡,点「稍后再说」)。

4. 填写标题 + 正文

标题框是「可见 contenteditable DIV + 隐藏 textarea」双 DOM,必须两者都写(见 references/prose_mirror_schema.md):

python scripts/fill_template.py scripts/fill_title.js "window.__TITLE__" "段永平今日发言(2026-07-09)" /tmp/fill_title_filled.js
bsk evaluate --session <id> "$(cat /tmp/fill_title_filled.js)"

正文用公众号 ProseMirror 视图程序化构建(保留层级格式):

# 把第 2 步的 HTML 片段写到 body.html(UTF-8),再用 @file: 交给 fill_template.py 安全注入
python scripts/fill_template.py scripts/build_body.js "window.__BODY_HTML__" "@file:body.html" _build_body_filled.js
bsk evaluate --session <id> "$(cat _build_body_filled.js)"

输出文件 _build_body_filled.js 放在当前工作目录即可(bsk 只读 $(cat ...) 的内容,不读路径)。 严禁用 $(cat body.html) 直接当参数——shell 会把长 HTML 拆成多词破坏注入。 fill_template.pyjson.dumps 生成合法 JS 字符串,自动转义引号/换行。

5. 校验 + 存草稿

bsk evaluate --session <id> "$(cat scripts/verify_body.js)" > verify.json
# 解析 verify.json:检查 counts.heading/blockquote/list 非零,hasTrace 必须为 false
bsk evaluate --session <id> "document.querySelectorAll('button') 中文本为'保存为草稿'的.click()"

存草稿后向用户确认:

  • 封面图:公众号图文发文必须配封面。当前版本封面菜单常只有「从正文选/从图片库选/扫码上传/AI 配图」, 「文字封面」入口未必存在;图片库多已下线;bsk 无法自动上传本地文件到封面的 input[type=file]。 → 请用户手动上传一张图,或选用 AI 配图;之后才能「发表」。
  • 原创:声明原创需公众号已完成微信实名认证;未实名则声明入口会卡住。不声明可直接存草稿/发表。

完成后 bsk session stop <id> 关闭 Agent Window。

关键脚本

| 脚本 | 作用 | 占位符 | |------|------|--------| | scripts/fill_template.py | 通用注入器:把字符串安全替换进模板 JS 的占位符 | 参数传入 | | scripts/build_body.js | 公众号正文 ProseMirror 程序化构建(HTML→富文本) | window.__BODY_HTML__ | | scripts/fill_title.js | 标题双 DOM 写入(可见 DIV + 隐藏 textarea) | window.__TITLE__ | | scripts/close_popups.js | 隐藏所有 modal/mask,关闭 AI 配图等弹窗 | 无 | | scripts/verify_body.js | 校验结构(heading/blockquote/list 计数)+ AI 痕迹检测 | 无 |

深度参考

  • 公众号 ProseMirror schema 规则、双 DOM 标题、加粗 mark:references/prose_mirror_schema.md
  • BrowserSkill 安装/命令/中文乱码/evaluate 传参:references/bsk_notes.md

调用约定(必看)

  • 所有 bsk evaluate 的长 JS 都先写进 .js 文件,再用 "$(cat file.js)" 整体传入, 避免 PowerShell/Shell 对 $、反引号、空格的转义破坏。
  • 注入本地 HTML/标题时一律用 scripts/fill_template.py,不要手工拼接字符串。
  • 文件编码全程 UTF-8;中文内容直接写在 JS 文件里无需额外编码。