feat(monitor): 抖音 Web 接口客户端 —— 绕开爬虫子进程,直接发 HTTP
Deploy VitePress site to Pages / build (push) Canceled after 0s
Deploy VitePress site to Pages / Deploy (push) Canceled after 0s

移植自 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 带网关原话 / 正常返回)。
This commit is contained in:
2026-10-10 17:12:25 +08:00
parent 21ff01b894
commit 2112c1a870
1601 changed files with 367425 additions and 0 deletions
@@ -0,0 +1,122 @@
# 02 · 进阶公式:8 要素工程化指令
> Seedance 2.0 本质上是一个**多模态 AI 导演**:同时读取文字、图片、视频、音频,并在内部拆成"空间层"(画面里有什么)和"时间层"(事情如何随时间变化)两个维度来理解和生成画面。
好的提示词不是单纯的"文案型形容",而是"**工程型指令**":谁、在什么场景、做什么动作、镜头如何运动、按怎样的时间顺序发生。
## 公式
```
精准主体 + 动作细节 + 场景环境 + 光影色调 + 镜头运镜 + 视觉风格 + 画质 + 约束条件
```
简单说就是:先锁定"谁"在"干什么",再交代"在哪"、"什么氛围",然后告诉模型"怎么拍",最后用风格、画质和约束条件把结果收紧。
## 8 要素详解
### 1. 精准主体(Subject)
实际参考的素材里往往存在多个主体,必须明确主体定义。主体可以是人物、道具、场景等。
**基本定义方式**
- 推荐句式:`将 <图片/视频N> 中的 [主体核心特征] 定义为 <主体N>`
- 核心特征要求:使用 **2–3 个清晰、稳定的静态特征**(如服饰、发型、外观、类别)描述,确保唯一可识别性
- 示例:`将图片1中穿红色连衣裙、戴草帽的女人定义为主体1`
**多素材同主体**(多张图指代同一人物)
- 推荐句式:`将图片1中的 […]、图片2中的 […] 定义为 <主体N>`
**多主体场景**(视频中存在多个主体)
- 需分别定义并使用标签区分,标签应具备唯一性与稳定性
- 示例:`将视频1中的高个子男人定义为警察,将另一个矮个子男人定义为小偷`
> ⚠️ 每次涉及主体时需明确指代,避免省略。后续描述中持续使用对应标签("警察"/"小偷"),避免指代混乱。
### 2. 动作细节(Action)
- **肢体细化 + 程度量化**:动作需具体到手、腿、头部、肩背等部位,同时补充**幅度、速度、力度**描述
- 示例:缓慢抬手、快速转头、用力蹬地、微微低头
- **优先低缓连续小动作**:尽量规避狂奔、大跳、剧烈翻滚等高爆发动作
- **补充动作过渡衔接**:写明前后动作的惯性与承接关系,保证画面动作连贯自然
- 示例:借着转身惯性顺势抬手、从停顿状态自然过渡到举手
- **情绪具象外化**:用具体的身体细节表现情绪,替代"很悲伤""非常愤怒"这类抽象词汇(详见 [04-情绪外化表](04-情绪外化表.md))
### 3. 场景环境(Scene)
明确说明主体所处的场景、位置或空间关系。
### 4. 光影色调(Light)
- **时间**:黄金时刻 / 蓝调时刻 / 正午 / 阴天
- **光源**:硬光 / 柔光 / 窗光 / 霓虹 / 体积光 / 背光
- **色调**:暖调 / 冷调 / 高饱和 / 低饱和 / 电影感分级
### 5. 镜头运镜(Camera)
- **大小**:极广角 EWS / 广角 WS / 中景 MS / 中特写 MCU / 特写 CU / 极特写 ECU
- **运动**:推 / 拉 / 横摇 / 纵摇 / 跟踪 / 环绕 / 手持 / 稳定器 / 航拍
- **角度**:低角度 / 高角度 / 平视 / 鸟瞰
> ⚠️ 一个镜头里**尽量只指定 1 种运镜方式**,不要同时要求推拉摇移,会增加画面的不稳定性。
详见 [05-运镜词典](05-运镜词典.md)。
### 6. 视觉风格(Style)
- **电影感**:cinematic / film grain / anamorphic / 35mm
- **纪录片**:documentary / handheld / naturalistic
- **赛博朋克**:cyberpunk / neon-lit / holographic
- **动漫**:Ghibli-inspired / cel-shaded / anime aesthetic
- **复古**:vintage / 8mm / VHS / retro grain
### 7. 画质(Quality)
定义画面清晰度、细节纹理与光影质感。
- 示例:高清、细节丰富、电影质感、色彩自然、光影柔和
### 8. 约束条件(Negative)
约束词十分重要,可有效规避画面瑕疵、畸形崩坏及不合理元素,约束生成边界与稳定性。
- 避免生成字幕:`保持无字幕` / `避免生成任何文字或字幕`
- 避免生成 Logo:`不要生成Logo`
- 避免生成水印:`不要生成水印`
详见 [06-约束词清单](06-约束词清单.md)。
## 实战示例(来自官方 PDF)
> **场景**:宿舍情感短剧
**素材准备**:
- @图片 1:女主半身照
- @图片 2:宿舍场景参考图
- @视频 1:室内对话运镜参考(中景推拉或轻微摇移)
- @音频 1:室内环境声或轻音乐
**提示词**:
```
@图片 1 中的女孩作为主角,@图片 2 作为宿舍场景风格参考,参考 @视频 1 的运镜方式。
镜头 1:傍晚时分,女孩@图片 1 脚步轻快地走到宿舍门口@图片 2,镜头中景平稳跟拍,
暖黄色日光从窗外洒进走廊,她在门口停顿一下,深呼吸,表情略带紧张。
镜头 2:女孩@图片 1 推开门走进宿舍,镜头切到室内中景,舍友们一边整理书本一边
抬头看向她,其中一人笑着问 {考得怎么样啊,过了吗},镜头在几人之间缓慢
切换半身特写。
镜头 3:女孩@图片 1 先低头露出落寞表情,镜头给到她的近景,随后她抬头憋不住笑容,
哈哈大笑说 {骗你们的},舍友们追着打闹起来,镜头缓慢拉远,定格在宿舍内
一片欢声笑语的全景画面。
全程画面高清电影纪实风,色调温暖,光影柔和;人物面部稳定不变形,动作自然流畅,
无卡顿无闪烁;环境音效与 @音频 1 自然融合。
```
## 下一步
复杂剧情建议拆成多镜头 → [03-分镜时序](03-分镜时序.md)