CtrlK
BlogDocsLog inGet started
Tessl Logo

weibo-publish

通过 forked camoufox-cli 持久化 session weibo 在微博发布图文/视频内容。微博 API 对个人开发者不友好,浏览器方案更实用。

60

Quality

71%

Does it follow best practices?

Run evals on this skill

Adds up to 20 points to the overall score

View guide

SecuritybySnyk

Passed

No findings from the security scan

Fix and improve this skill with Tessl

tessl review fix ./crews/main/skills/weibo-publish/SKILL.md
SKILL.md
Quality
Evals
Security

微博发布

通过 camoufox-cli 持久化 session weibo(有且只有一个,fail-first 队列:同 session 已有命令在跑时新命令直接 fail)在微博上发布内容(文字、图片、视频)。微博 API 对个人开发者申请门槛高,浏览器自动化是更实用的方案。

主力后端 = target=camoufox。下方命令 / 示例只针对 target=camoufoxtarget=host / target=node:只按本 skill 的「流程 + 提示事项」走——何时有头 / 何时无头 / 频率限制 / 错误处理约定是后端无关的,照本 skill 执行。不要照搬 camoufox-cli ... 命令,用你当前后端自带的浏览器工具语义调用即可。


前置条件

  1. 持久化 session weibo 已登录(登录态存 session profile 里)。本 skill 与 login-manager 完全无关——自管探活 + 登录,不导出 cookie/UA 落中央存储
  2. 首次使用 / 登录态失效时,走自管有头手动登录流:
    • camoufox-cli --session weibo --persistent --headed --viewport 1920x1080 --json open "https://weibo.com"
    • --viewport 1920x1080:camoufox 默认按指纹给移动端窗口比例,二维码看不全;强制桌面 1920×1080
    • 告知用户「微博 浏览器已打开,请在窗口里手动登录,完成后告诉我」
    • 等用户回复后 snapshot 验登录态就位
    • 登录后close session——登录态落磁盘 profile,不留进程占内存;本 skill 下次 --session weibo --persistent 重起无头即恢复,用完再 close。

不导出 cookie/UA——登录态只在 session profile 里闭环,不落 ~/.openclaw/logins/。本 skill 不调用 cookies export / identity export


发布文字微博

1. 启持久化 session + 打开微博首页:
   camoufox-cli --session weibo --persistent --json open "https://weibo.com"
2. sleep 3 加载,snapshot 拿到输入框 ref
   - 输入框选择器:textarea.W_input 或 [node-type="textEl"] 或 textarea[placeholder*="有什么新鲜事"]
   - 如果找不到,open "https://weibo.com" 刷新后重试
3. click <ref> 聚焦输入框
4. camoufox-cli --session weibo --persistent --json type <ref> "微博内容"
   - 最长 2000 字符
5. snapshot 找发布按钮 ref:a[node-type="submit"] 或 button[action-type="post"] 或文本为"发布"的按钮
6. camoufox-cli --session weibo --persistent --json click <发布按钮-ref>
7. sleep 3,snapshot 确认发布成功(输入框清空或出现"发布成功"提示)

发布图文微博

1. 启 session + 打开首页(同文字微博步骤 1-2)
2. snapshot 拿到图片上传按钮 ref:a[node-type="uploadImg"] 或 .W_icon_pic 图标
3. camoufox-cli --session weibo --persistent --json upload <图片-input-ref> <image.jpg> [更多图片...]
   - forked cli upload 命令底层走 Playwright setInputFiles,无需 CDP setFileInput hack
   - 最多 9 张图片,单张不超过 5MB
4. sleep 等待上传完成(snapshot 看缩略图出现在编辑区)
5. 输入文字内容(同文字微博步骤 3-4)
6. 发布(同文字微博步骤 5-7)

发布视频微博

1. 启 session + 打开首页(同文字微博步骤 1-2)
2. snapshot 拿到视频上传入口 ref:a[node-type="uploadVideo"]
   或 open "https://weibo.com/p/103495:home"(视频发布页)
3. camoufox-cli --session weibo --persistent --json upload <视频-input-ref> <video.mp4>
   - 视频限制:mp4 格式,最长 15 分钟,不超过 2GB
4. sleep 等待上传完成(snapshot 看进度条到 100%)
5. 填写描述文字(type 命令)
6. 发布(click 发布按钮)

必做约束

  • 用完即 close 持久化 session weibo——登录态 + 指纹冻结在磁盘 profile,不留进程占内存;下次发布 --session weibo --persistent 重起无头即恢复。只在 session 卡死时 camoufox-cli --session weibo --json close teardown。
  • 同 session 已有命令在跑时,新命令 fail-first(返回 session weibo 正忙,请等待当前操作完成后再试)——读到这条文本就等当前操作完成再重试,不要盲试。
  • 每次发布间隔 60 秒以上,避免触发反垃圾。

Pitfalls

pitfall: css_module_hash_drift

  • 触发:用 CSS module hash 选择器(如 .publishBtn_1a2b3c
  • 症状:下次部署后选择器失效
  • workaround:用 node-type 属性或 placeholder 文本定位,不用 hash class

pitfall: input_box_collapsed

  • 触发:微博首页输入框默认折叠
  • 症状:输入框高度很小,无法直接输入
  • workaround:先 click 输入框使其展开,sleep 1 后再 type

pitfall: anti_spam_on_rapid_post

  • 触发:短时间内连续发布多条微博
  • 症状:出现验证码或"操作过于频繁"
  • workaround:每次发布间隔 60 秒以上

pitfall: weibo_url_shortener

  • 触发:微博内容中包含 URL
  • 症状:URL 被自动缩短为 t.cn 格式
  • workaround:这是正常行为,不影响发布

错误处理

情况处理
未登录 / 登录墙走前置条件的有头手动登录流,重试一次
输入框找不到刷新页面后重试,或用 placeholder 文本定位
图片上传失败检查文件大小(<5MB),重试一次
视频上传超时检查文件大小和网络,等待更长时间
验证码 / 频率限制等待 60 秒后重试
session 正忙(fail-first)等当前操作完成再重试,不要盲试

发布后

必须调用 published-track 技能记录本次发布。

Repository
TeamWiseFlow/xiaobei
Last updated
First committed

Is this your skill?

If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.