Files
MediaCrawler/mac-agent-os-main/02_skills/matrix/SKILL.md
T
butubb 2112c1a870
Deploy VitePress site to Pages / build (push) Canceled after 0s
Deploy VitePress site to Pages / Deploy (push) Canceled after 0s
feat(monitor): 抖音 Web 接口客户端 —— 绕开爬虫子进程,直接发 HTTP
移植自 mac-agent-os 的 mediacrawler_adapter:不起子进程、不开页面,用浏览器里那份
登录态直接调抖音 Web 接口。产物键名照抄 store/douyin,所以 ingest 那条链路一个字不用改。

**目前能用的(真环境实测,非推断)**:

    profile/other : 200, 7075 字节  —— 博主主页指标(粉丝/获赞/作品数/昵称)
    aweme/detail  : 200, 45425 字节 —— 单条作品详情(含点赞/评论/收藏/分享)

**目前不能用的:作品列表 `aweme/post`。** 两个互相独立的原因:
  1. 这个接口被抖音单独升级成了真校验:不带 x-tt-argus 回 403「Uifid Not Found」,
     带上 dummy 值回 200 + **空 body**。也就是说「头在不在」骗得过,「真校验」过不了。
     同一套头打 profile/other 和 aweme/detail 都是通的 —— 抖音是挑着接口加保护的,
     挑中的恰好是「批量拉作品列表」这个最敏感的动作。
  2. 改走页面截获也不行:CDP 浏览器打开博主主页会落到「验证码中间页」(当天大量探测的
     代价,过几小时要重测)。

  所以现在的边界是:**已知作品的指标刷新能做,自动发现新作品做不了**。

**排查中控住变量后得到的两条事实**(都写进注释了):
  · `Accept` / `Accept-Language` / `Referer` 才是主页接口能返回真数据的原因 —— 只有
    UA+client hints+Cookie 时是 200 但仅 121 字节的空壳,补上这三个头变 7074 字节。
    (我先前猜的 sec-ch-ua 不是关键。)
  · 因此 UA 与 client hints 必须**成套地取自同一个浏览器**,所以 BrowserIdentity 一次
    从 CDP 取齐 cookie + UA + hints,而不是各自写死。

「200 + 空 body 必须当场报错」也是刻意写死的:放过去它会在下游变成「这个博主没作品」,
把一次失败伪装成一条正常结果 —— 爬虫那条路正是这么栽的,还被翻译成「账号被封」。

测试 +11:cookie 解析、请求头成套性(含 uifid 缺失/回退)、产物键名与 store 对齐、
以及 _get 的三条失败路径(空 body / 403 带网关原话 / 正常返回)。
2026-10-10 17:12:25 +08:00

227 lines
7.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
name: matrix
version: 1.0.0
description: 多平台社交账号矩阵养号——蓝图调度、账号切换、任务状态查询、蓝图管理
triggers:
- 矩阵
- 养号
- 抖音养号
- 执行蓝图
- 切换账号
- 账号状态
- matrix
- 查看蓝图
- 添加蓝图
- 任务调度
---
# Matrix 矩阵养号技能
## 概述
通过 Chrome CDP 和 Camoufox(Firefox 内核)控制浏览器,自动执行多平台社交账号日常养号任务。
支持抖音(已完成)、小红书/知乎(框架就绪,待登录账号)。
**工具位置**: `~/workbuddy-agent-os/agent-sync/05_tools/07_matrix/`
**本地数据**: `~/workbuddy-agent-os/agent-local/tools/matrix/`
---
## 触发词与对应动作
| 触发词 | 动作 |
|--------|------|
| `账号状态` / `查看账号` | 列出所有账号及登录状态 |
| `执行蓝图 <蓝图名> <账号>` | 执行指定蓝图 |
| `查看蓝图` | 列出所有可用蓝图及说明 |
| `切换账号 <账号ID>` | 切换 Chrome Profile 到指定账号 |
| `启动调度` | 启动定时任务调度器 |
| `任务状态` | 查看最近任务执行记录 |
| `matrix 安装` | 在新机运行 install.sh |
---
## 核心能力
### 1. 账号管理
- 多账号隔离(每个账号独立 Chrome Profile)
- 账号状态查询(登录态检查,Cookie 主方案 + DOM 备选)
- 登录检测原子化模块:`auth_manager.py`
- `check_login_by_cookie()` — Cookie 检测(主方案,不依赖 UI)
- `check_login_by_dom()` — DOM 检测(备选,需移动端视口)
- `get_login_status()` — 多维综合检测
- `export_cookies()` / `inject_cookies()` — Cookie 导出/注入
- `wait_for_login()` — 等待用户手动登录(轮询)
- 双方案切换:Profile 切换(稳定)/ Cookie 注入(实验性)
- **`switch_account.py` 切换后自动导出 Cookie 到 `data/cookies/{id}_cookies.json`**
### 2. 蓝图执行
| 蓝图 | 说明 | 步骤数 | 状态 |
|------|------|--------|------|
| `douyin_browse_v2` | 推荐页浏览 + 随机点赞/收藏 | 11步 | ✅ 活跃 |
| `douyin_search_browse` | 搜索关键词 → 浏览结果 → 点赞 | 7步 | ✅ 活跃 |
| `douyin_comment_interact` | 浏览推荐 → 打开评论区 → 发评论 | 8步 | ✅ 活跃 |
### 3. 原子操作库(抖音,18个)
`goto_home` / `wait_watch` / `like` / `collect` / `follow` / `comment` /
`search` / `open_comments` / `close_comments` / `scroll_feed` 等
### 4. 定时调度
通过 `task_scheduler.py` 设定各账号的执行频率,后台持续运行。
---
## 常用命令
```bash
TOOL=~/workbuddy-agent-os/agent-sync/05_tools/07_matrix
# 查看所有账号
python $TOOL/scripts/switch_account.py --list
# 查看当前活跃账号(含 Cookie 检测)
python $TOOL/scripts/switch_account.py --status
# 切换到指定账号(Profile 方式)+ 自动导出 Cookie
python $TOOL/scripts/switch_account.py --method profile --target douyin_01 --port 9222
# 独立登录检测(auth_manager 原子化模块)
python $TOOL/scripts/auth_manager.py 9222 # 检测端口 9222 的登录状态
python $TOOL/scripts/auth_manager.py 9223 # 检测端口 9223
# 启动 Camoufox + Cookie 注入(正确方式)
python $TOOL/scripts/yanghao_runner.py --account douyin_camo01 --blueprint douyin_browse_v2 --browser camoufox
# 执行蓝图
python $TOOL/scripts/task_engine.py --blueprint douyin_browse_v2 --account douyin_01
# 后台定时调度
python $TOOL/scripts/task_scheduler.py
# 手动启动 Chrome
bash $TOOL/scripts/launch_chrome.sh douyin_01 9222
```
---
## 执行流程
```
用户触发(对话 or 定时)
↓
task_scheduler.py(定时调度)
↓
switch_account.py(切换 Chrome Profile / Cookie 注入)
↓
task_engine.py(加载蓝图 JSON → 逐步执行)
↓
douyin_ops.py(原子操作:点赞/评论/浏览...)
↓
cdp_connector.py / camoufox_manager.py(浏览器 CDP 控制)
↓
写入 data/matrix.db(任务记录)+ logs/(执行日志)
```
---
## 账号配置文件
位置:`~/workbuddy-agent-os/agent-local/tools/matrix/config/accounts.yaml`
```yaml
accounts:
- id: douyin_01
platform: douyin
browser: chrome
profile_dir: douyin_01 # 对应 profiles/ 下的目录名
status: active
```
---
## 蓝图文件格式(供新增参考)
位置:`~/workbuddy-agent-os/agent-sync/05_tools/07_matrix/blueprints/`
```json
{
"name": "蓝图唯一ID",
"description": "蓝图说明",
"platform": "douyin",
"steps": [
{"step": 1, "op": "goto_home", "args": {}},
{"step": 2, "op": "wait_watch", "args": {"seconds": 8}},
{"step": 3, "op": "like", "args": {"probability": 0.3}}
]
}
```
---
## 标准化文档
| 文档 | 用途 |
|------|------|
| `docs/SYSTEM_ARCHITECTURE.md` | **系统架构设计** — 模块关系、链路、原子操作清单(必读) |
| `docs/ACCOUNT_LOGIN_SOP.md` | **账号登录 SOP** — 标准化操作流程 |
| `docs/FULL_TEST_REPORT.md` | **全面测试报告** — ✅/❌ 全部标注,含时间戳 |
**所有操作请先查阅架构文档和 SOP,按标准步骤执行,不得临时改代码。**
---
## 开发状态
| 阶段 | 内容 | 状态 |
|------|------|------|
| A | Chrome CDP + 抖音原子操作(18个)+ 蓝图引擎 + 定时调度 | ✅ 已完成 |
| B | Camoufox(Firefox内核)集成 + 多浏览器内核 | ✅ 已完成(2026-04-30) |
| C | 鼠标轨迹仿真 + 语料库完善 + Canvas/AudioContext 指纹噪声 | 📋 规划中 |
| D | 小红书/知乎完整支持 + 多平台联动 | 📋 规划中 |
### 阶段B完成说明
- Camoufox 通过 `camoufox.async_api.AsyncCamoufox` 原生 API 启动(`CDPConnector(browser_type="camoufox")`)
- **重要**:Camoufox 不依赖 CDP 端口,通过 **Cookie 注入** 从 Chrome 导出的 Cookie 文件登录
- 标准入口:`yanghao_runner.py --account douyin_camo01 --blueprint douyin_browse_v2 --browser camoufox`
- **不要使用** `camoufox_manager.py --launch` 或 `camoufox_server.py --launch`(非标准入口)
- 登录态验证通过 Cookie 检测(sessionid),无需 DOM 头像元素
- Chrome 方案 + Camoufox 方案均已通过全量测试验证 ✅
---
## 多机同步
详见 `docs/SYNC_GUIDE.md` — 包含:
- 同步架构说明(什么是同步的 / 什么是每机独立的)
- 主电脑修改→提交→推送的标准流程
- 新机拉取→部署→登录的标准流程
- 本地依赖安装清单(Python 包 / Playwright / Camoufox)
- 版本对照表 + 快速检查清单
### 快速新机恢复
```bash
# 1. 拉取最新代码
cd ~/workbuddy-agent-os/agent-sync && git pull origin main
# 2. 一键安装(建立目录 + 依赖 + 配置)
bash ~/workbuddy-agent-os/agent-sync/05_tools/07_matrix/install.sh
# 3. 填写本机账号配置
vim ~/workbuddy-agent-os/agent-local/tools/matrix/config/accounts.yaml
# 4. 各账号重新扫码登录
python scripts/switch_account.py --method profile --target douyin_01 --port 9222
```
---
## 注意事项
- `profiles/` 含 Chrome 登录数据(~100MB),**换机后需重新登录**各平台
- `config/accounts.yaml` 含账号信息,**不随 agent-os 同步**,存于 agent-os-local
- Camoufox 阶段B尚未稳定,生产环境使用 Chrome CDP(阶段A)
- 反检测措施:指纹注入 + 随机延迟 + 蓝图随机化,勿过度调低延迟