# video-publish > 使用 Peekaboo + Ollama 自动发布视频到国内平台(抖音、视频号、快手、B站)。当用户说"发布视频"、"上传到抖音"、"视频分发"、"多平台发布"时触发。 - Author: zhengwr - Repository: z1w2r3/auto-Browser - Version: 20260209231804 - Stars: 0 - Forks: 0 - Last Updated: 2026-02-09 - Source: https://github.com/z1w2r3/auto-Browser - Web: https://mule.run/skillshub/@@z1w2r3/auto-Browser~video-publish:20260209231804 --- --- name: video-publish description: 使用 Peekaboo + Ollama 自动发布视频到国内平台(抖音、视频号、快手、B站)。当用户说"发布视频"、"上传到抖音"、"视频分发"、"多平台发布"时触发。 metadata: {"openclaw":{"requires":{"bins":["peekaboo","ollama"]},"os":["darwin"],"emoji":"📹"}} --- # 视频自动发布技能 使用 Peekaboo(macOS 原生辅助功能)+ Ollama(本地视觉模型)自动将视频发布到国内主流社交媒体平台。 ## 为什么用 Peekaboo + Ollama - **拟人化**: Peekaboo 使用 macOS 原生辅助功能/ScreenCaptureKit,操作行为更像真人,避免自动化指纹被平台检测 - **省 token**: Ollama 本地视觉分析(页面状态判断、上传进度检测),不消耗云端 API 额度 - **系统级**: Peekaboo 能处理 macOS 文件对话框、窗口管理等浏览器工具无法触及的操作 ## 支持平台 | 平台 | 标识符 | 登录方式 | 创作者中心 | 状态 | |------|--------|---------|-----------|------| | 抖音 | `douyin` | 抖音 APP 扫码 | creator.douyin.com | ✅ 已实现 | | 视频号 | `wechat` | 微信扫码 | channels.weixin.qq.com | 🔜 计划中 | | 快手 | `kuaishou` | 快手 APP 扫码 | cp.kuaishou.com | 🔜 计划中 | | 哔哩哔哩 | `bilibili` | B站 APP 扫码 | member.bilibili.com | 🔜 计划中 | ## 环境前置条件 1. macOS(需要 Peekaboo 辅助功能权限 + 屏幕录制权限) 2. Peekaboo CLI 已安装(`brew install steipete/tap/peekaboo` 或从源码安装) 3. Ollama 已安装并运行,已拉取 `qwen2.5vl:3b` 模型 4. Google Chrome 已安装 首次使用运行环境检查: ```bash bash scripts/setup_env.sh ``` ## 核心操作范式:See-Think-Act 循环 所有操作遵循统一模式。**铁律:每次点击网页元素前,必须走完整的 See→Think(Ollama)→Act 流程获取坐标,绝不手动估算坐标。** Ollama 定位一直很准,手动估算经常错得离谱(弹窗实际占满整个窗口宽度,肉眼看截图缩略图会严重低估坐标)。 ### See(Peekaboo 感知) ```bash peekaboo see --app "Google Chrome" --json # 返回: screenshot_raw 路径 + snapshot_id + UI 元素列表 # 注意: UI 元素只包含浏览器 chrome 和原生对话框,不包含网页 DOM ``` ### Think(Ollama 理解) ```bash # 页面状态判断 python scripts/vision.py analyze --image /path/to/screenshot.png --task "login_check" # 返回: {"state": "need_login", "qr_found": true, ...} # 网页元素定位(返回像素坐标) python scripts/vision.py analyze --image /path/to/screenshot.png --task find_element \ --prompt "找到'上传视频'按钮中心像素坐标,返回JSON: {\"x\": 数字, \"y\": 数字}" # 返回: {"x": 672, "y": 625} ``` ### Act(执行操作) ```bash # 网页元素: Peekaboo 坐标点击 # 重要: --coords 是屏幕绝对坐标 = Ollama截图坐标 + 窗口位置偏移 # 先获取窗口位置: # osascript -e 'tell application "System Events" to tell process "Google Chrome" to return position of window 1' # 返回如: 154, 39 # 屏幕坐标 = (672+154, 625+39) = (826, 664) peekaboo click --coords "826,664" --app "Google Chrome" # 文件对话框: 用 osascript(比 Peekaboo 更稳定,不会超时卡死) echo -n "/路径/文件.mp4" | pbcopy # 路径放剪贴板(keystroke 不支持中文) osascript -e ' tell application "System Events" tell process "Google Chrome" keystroke "g" using {command down, shift down} -- 前往文件夹 delay 1.5 keystroke "v" using {command down} -- 粘贴路径 delay 0.5 key code 36 -- 回车前往 delay 2 key code 36 -- 回车打开 end tell end tell ' # 检测/关闭对话框 osascript -e 'tell application "System Events" to tell process "Google Chrome" to return exists sheet 1 of window 1' osascript -e 'tell application "System Events" to tell process "Google Chrome" to click button "取消" of sheet 1 of window 1' ``` ## 工作流 执行流程请参阅 [WORKFLOW.md](./WORKFLOW.md)。 ## 各平台字数限制 | 平台 | 标题限制 | 标签格式 | 备注 | |------|----------|---------|------| | 抖音 | ≤30字 | 行内 `#话题` | 标题和话题在同一 contenteditable div | | B站 | ≤80字 | 独立标签 | 需选择分区 | | 视频号 | 6-16字 | 行内 `#话题` | 短标题必填 | | 快手 | 无独立标题 | 行内 `#话题` | 描述开头要抓人 | ## 使用示例 ### 单平台发布 ``` 用户: 把 ~/Videos/test.mp4 发布到抖音,标题"AI编程实测",标签:AI、编程 ``` ### 多平台分发 ``` 用户: 把 ~/Videos/test.mp4 分发到抖音和B站,标题"AI编程实测" ``` ## 文件存储 ``` data/ ├── profiles/ # Chrome Profile(按平台/账号隔离,保持登录态) ├── screenshots/ # 截图缓存(See 步骤产出) └── state/ # 发布状态(支持中断恢复) ```