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,320 @@
# 角色定妆照 Prompt 体系 V3
>
> 版本: 3.0 | 最后更新: 2026-05-29
> 用于 Kling / 即梦 / Midjourney 等 AI 图像生成工具
> 完整10层模块化提示词框架 + 面部五官详细描述词典
---
## 一、核心理念
### AI 角色生成的金科玉律
1. **AI 无记忆** — 每次生成都是独立的概率过程,必须主动约束
2. **先建角色圣经** — 生成前定义15-20个具体物理属性
3. **描述符优先级** — 提示词的出现的顺序 = AI 的重视程度
4. **角色先行** — 角色描述**必须**出现在场景和风格之前
5. **只改一个变量** — 每次只允许改变场景或构图中的一个
### 提示词黄金公式
```
[角色身份锚点] + [区分性特征] + [场景上下文] + [姿势/表情] + [光镜头修饰符]
```
### 三大固定模块
| 模块 | 内容 | 变化规则 |
|:----|:-----|:--------|
| 角色块 | 外貌+服装+表情倾向 | **不可修改** |
| 场景块 | 环境+时间+色调 | 每场景改 |
| 风格块 | 光线+镜头+负面约束 | **不可修改** |
---
## 二、10层模块化角色描述系统
### 层级总览
```
L0 身份层 → 姓名/性别/年龄/种族/世界观 (最优先, AI最重视)
↓
L1 面部轮廓 → 脸型/下颌线/颧骨/额头
↓
L2 五官细节 → 眼睛(形/色/神) / 眉毛 / 鼻子 / 嘴唇
↓
L3 头发层 → 发型/长度/颜色/质地/发际线
↓
L4 皮肤妆容 → 肤色/肤质/底妆/特殊标记
↓
L5 体型姿态 → 身高/体型/肩宽/站姿
↓
L6 服装配饰 → 上装/下装/外套/鞋/配饰
↓
L7 神态表情 → 微表情/眼神/情绪基调/气质
↓
L8 光线镜头 → 光型/色温/镜头/景深
↓
L9 背景场景 → 环境/背景色/季节天气 (最次优先)
```
### 每层详解
#### L0 — 核心身份
| 字段 | 可选值 |
|:----|:-------|
| 性别 | 男性 / 女性 |
| 年龄 | 少年(12-18) / 青年(18-30) / 壮年(30-45) / 中年(45-60) / 老年(60+) |
| 种族 | 中国 / 东亚 / 东南亚 / 南亚 / 中东 / 欧美 / 非洲 / 拉美 |
| 世界观 | 现代 / 古风 / 科幻 / 奇幻 / 民国 / 未来 / 赛博朋克 |
**构建规则**: `{姓名},一位{年龄}{性别},{种族}人,{世界观}背景`
#### L1 — 面部轮廓
| 字段 | 可选值 |
|:----|:-------|
| 脸型 | 鹅蛋脸 / 瓜子脸 / 圆脸 / 方脸 / **国字脸** / 长脸 / 菱形脸 / 心形脸 |
| 下颌线 | 柔和模糊 / **清晰分明** / 棱角突出 / 圆润温和 |
| 颧骨 | **适中自然** / 高突出 / 饱满圆润 / 低平 |
| 额头 | **饱满宽阔** / 适中 / 窄小 / 高额头 |
> **脸型-性格映射**: 国字脸/方脸→稳重正气;鹅蛋脸→温婉柔美;瓜子脸→精致秀气;圆脸→可爱亲和
#### L2 — 五官细节
##### 眼睛(最高权重部位)
| 字段 | 可选值 |
|:----|:-------|
| 眼型 | 丹凤眼 / 杏眼 / 桃花眼 / 圆眼 / 细长眼 / 下垂眼 / 上挑眼 / **单眼皮** / 双眼皮 / 内双 |
| 瞳孔色 | **深褐** / 浅褐 / 黑色 / 琥珀色 / 灰色 / 蓝色 / 绿色 |
| 大小 | **大而有神** / 适中 / 细长 / 小而有神 |
| 眼神 | **深邃锐利** / 清澈温柔 / 沉稳内敛 / 含情脉脉 / 凌厉锋芒 |
| 细节补充 | 眼尾微垂 / 卧蚕明显 / 睫毛浓密 / 眼角上挑 |
> **眼型-气质映射**: 丹凤眼→古典东方美;杏眼→圆润可爱;桃花眼→含情脉脉;单眼皮→内敛沉稳
##### 眉毛
| 字段 | 可选值 |
|:----|:-------|
| 眉型 | **剑眉** / 柳叶眉 / 一字眉 / 上挑眉 / 弯眉 / 粗眉 / 细长眉 |
| 状态 | **舒展自然** / 微微蹙起 / 高挑 / 平缓 |
| 眉色 | **浓黑** / 深棕 / 浅棕 / 自然黑 |
> **眉型-气质映射**: 剑眉→英气飒爽;柳叶眉→温婉;一字眉→中性干练;粗眉→朴实敦厚
##### 鼻子
| 字段 | 可选值 |
|:----|:-------|
| 鼻梁 | **高挺** / 挺直窄小 / 中等挺拔 / 低平柔和 |
| 鼻头 | **小巧圆润** / 圆润饱满 / 尖翘 / 略宽 |
| 鼻翼 | **适中** / 略宽 / 窄小 |
##### 嘴唇
| 字段 | 可选值 |
|:----|:-------|
| 唇型 | 薄唇 / 厚唇 / M形唇 / 饱满 / 樱桃小嘴 / **微笑唇** |
| 唇色 | **自然淡粉** / 健康红润 / 偏苍白 / 暗紫红 / 裸色 |
| 状态 | 自然闭合 / 微张 / 紧抿 / **嘴角微扬** / 含笑意 |
#### L3 — 头发
| 字段 | 可选值 |
|:----|:-------|
| 发型 | 短发 / 寸头 / 中长发 / 长发 / 背头 / 三七分 / 齐刘海 / 斜刘海 / 大背头 / **碎发** / 丸子头 / 高马尾 / 低马尾 / 披肩发 / 盘发 |
| 发色 | **黑色** / 深棕 / 浅棕 / 亚麻色 / 灰色 / 银白 / 渐变挑染 |
| 发质 | 柔顺直发 / 自然微卷 / 波浪卷 / 小卷 / 粗硬 / **细软** / 蓬松 |
| 长度 | 板寸(3mm) / 短(3-6cm) / 及耳 / 及肩 / 及胸 / 及腰 / 过腰 |
| 细节补充 | 两侧收短顶部略长 / 发际线略高 / 偏分界线明显 |
#### L4 — 皮肤与妆容
| 字段 | 可选值 |
|:----|:-------|
| 肤色 | 冷白皮 / 暖白皮 / 自然偏白 / **健康小麦** / 蜜色 / 古铜色 / 深色 |
| 肤质 | 细腻光滑 / **自然肌理** / 毛孔可见 / 粗糙 / 哑光 / 水润光泽 |
| 气色 | **红润健康** / 略显苍白 / 疲惫暗沉 / 容光焕发 / 自然均匀 |
| 底妆 | 素颜 / 淡妆 / 精致妆容 / 烟熏妆 / 裸妆 / 浓妆 |
| 眼妆 | 无眼妆 / 自然眼线 / 淡眼影 / 烟熏 / 猫眼眼线 |
| 唇妆 | 自然唇色 / 淡裸色 / 豆沙色 / 正红色 / 暗紫色 / 水光唇 |
| 特殊标记 | 右眉上细疤 / 左颊美人痣 / 法令纹明显 / 笑纹 / 雀斑 |
> **肤质提示词技巧**: 用 `natural skin texture + detailed skin pores` 避免"塑料感";用 `subsurface scattering` 增加真实感
#### L5 — 体型与姿态
| 字段 | 可选值 |
|:----|:-------|
| 身高 | 矮小(155-165cm) / 中等(165-175cm) / **中高(175-185cm)** / 高大(185cm+) |
| 体型 | 纤细瘦弱 / 偏瘦 / 标准匀称 / **健壮** / 壮硕 / 丰满 / 魁梧 |
| 肩宽 | 窄肩 / 标准 / **宽肩** / 厚肩 |
| 姿态 | **挺拔** / 微驼 / 自然放松 / 端庄 / 慵懒 / 紧绷 |
| 手部 | 手指修长 / 关节分明 / 指甲修剪整齐 |
#### L6 — 服装与配饰
| 字段 | 示例 |
|:----|:-----|
| 上装 | 深灰色拉链运动夹克 |
| 内搭 | 白色圆领速干内衬 |
| 下装 | 深蓝色牛仔裤 / 黑色运动短裤 |
| 外套 | 深藏蓝亚麻外套 |
| 鞋子 | 白色跑步鞋 |
| 配饰 | 蓝色无线运动耳机(右耳) / 细框金属眼镜 / 简约电子手表 |
| 穿搭风格 | 运动休闲 / 商务正装 / 商务休闲 / 街头潮流 / 日系清新 / 简约素雅 |
#### L7 — 神态与表情
| 字段 | 可选值 |
|:----|:-------|
| 情绪基调 | 平静从容 / 温和友善 / 冷峻严肃 / 开朗活泼 / **沉稳内敛** / 自信昂扬 / 恬静淡然 |
| 表面表情 | 中性无表情 / 淡淡微笑 / 开怀大笑 / 微笑 / 皱眉沉思 / 瞪大眼惊讶 / 绷着脸 |
| 眼神细节 | **目光坚定直视前方** / 眼神游离若有所思 / 眼中带笑意 / 目光如炬 |
| 微表情 | 嘴角微微上翘 / 眉头轻蹙 / 眼角细纹 / 鼻翼轻动 |
| 气质气场 | **沉稳内敛不怒自威** / 亲和温暖如沐春风 / 疏离清冷生人勿近 |
#### L8 — 光线与镜头
| 字段 | 可选值 |
|:----|:-------|
| 光型 | **柔光箱均匀布光** / 美人碟柔光 / 伦勃朗光 / 分割光 / 侧光/塑形光 / 逆光/轮廓光 / 阴天漫射光 / 顶光/戏剧性 |
| 色温 | **暖色调(金色)** / 冷色调(青蓝) / 中性白平衡 / 混合色温 / 自然日光 |
| 镜头 | 广角(24mm) / 标准(50mm) / **中焦(85mm)** / 长焦(135mm) / 微距 |
| 景深 | **浅景深/背景虚化** / 中等景深 / 大景深/全清晰 |
> **光型-用途映射**: 美人碟光→人像经典柔美;伦勃朗光→立体感+神秘;分割光→戏剧性+硬朗
#### L9 — 背景与场景
| 字段 | 可选值 |
|:----|:-------|
| 背景类型 | **纯色背景** / 影棚布景 / 自然户外 / 城市街景 / 室内空间 / 特定场景 |
| 背景色 | **纯白/干净** / 纯灰/专业 / 纯黑/神秘 / 暖色/温馨 / 冷色/冷静 |
| 具体环境 | 清晨城市街道 / 江南古巷青砖墙 / 健身房器械区 |
| 季节天气 | 晴天 / 阴天 / 雨后 / 雪天 / 黄昏 / 深夜 / 清晨 / 午后 |
---
## 三、微表情分类体系
### 基础表情库(可组合使用)
| 表情 | 关键词 | 面部细节 |
|:----|:-------|:---------|
| 平静 | 中性、平静、从容 | 面部放松,嘴角自然,眼周无纹 |
| 微笑 | 淡淡微笑、温暖笑意 | 嘴角上提,眼轮匝肌微收,苹果肌微抬 |
| 开怀大笑 | 大笑、开心、灿烂 | 张嘴露齿,眼眯起,眼角鱼尾纹 |
| 专注 | 专注、凝视、认真 | 眉头轻蹙,目光固定,嘴唇微抿 |
| 沉思 | 思考、内省、深沉 | 眼神下移或放空,眉头微锁 |
| 坚定 | 坚定、决然、刚毅 | 目光锐利,下颌微收,嘴唇紧抿 |
| 惊讶 | 惊讶、震惊、意外 | 眉峰上提,眼睁大,嘴微张 |
| 愤怒 | 生气、怒视、愠怒 | 眉头压低,眼神锐利,嘴角下拉 |
| 悲伤 | 忧伤、失落、哀愁 | 眼神垂落,嘴角微下,眉头轻蹙 |
| 温柔 | 温柔、柔和、宠溺 | 眼角含笑意,神情松弛,嘴角上扬 |
### 微表情使用规则
- 组合使用: `神色平静从容,眼含笑意,嘴角微微上翘`
- 避免单一: 不要只用"微笑",要说明微表情的程度和部位
- 一致性: 眼神 决定角色情绪可信度的70%
---
## 四、组装规则
### 最终 Prompt 结构
```
[角色描述块(10层)] + [场景描述块(每场景改)] + [镜头指令块(每场景改)]
```
### 角色描述块(10层串联)
```text
{姓名},一位{年龄}{性别},{种族}人,{世界观}背景。
{脸型},{下颌线},{颧骨}。
{眼型}({瞳孔色}),{眼神},{眉毛}。
{鼻型}。{唇型},{唇色},{唇状态}。
{发型}{发色},{发质},{长度}。
{肤色},{肤质},{气色},{妆容}。
{身高},{体型},{肩宽},姿态{姿态}。
身穿{上装},内搭{内衬},下穿{下装},佩戴{配饰}。
神色{情绪基调},表情{表情},{眼神细节}。
整体气质{气场}。
```
### 负面提示词(保底使用)
```
面部不一致,五官改变,眼睛颜色变化,发型变化,
面部结构扭曲,面部不对称,多余肢体,解剖错误,
模糊,低质量,卡通,动漫,插画,3D渲染
```
---
## 五、完整示例
### 示例:ghai_sports(填写完整10层)
```yaml
L0: 阿远,一位壮年男性,中国人,现代背景
L1: 国字脸,清晰分明下颌线,适中颧骨,饱满额头
L2_eyes: 单眼皮(深褐色瞳孔),眼神锐利深邃,眼尾微垂
L2_eyebrows: 剑眉,浓黑,舒展自然
L2_nose: 鼻梁高挺,鼻头圆润饱满,鼻翼适中
L2_lips: 微笑唇(自然淡粉色),嘴角微扬
L3: 黑色短发,细软发质,两侧收短顶部略长
L4: 健康小麦色皮肤,自然肌理,红润健康气色,素颜
L5: 中高身材,健壮体型,宽肩厚肩,姿态挺拔
L6: 身穿深灰色拉链运动夹克,内搭白色速干内衬,右耳佩戴蓝色无线运动耳机,运动休闲风格
L7: 神色沉稳内敛,表情平静从容,目光坚定直视前方
L8: 柔光箱均匀布光,暖色调,中焦85mm镜头,浅景深
L9: 纯灰色专业背景
```
### 正面面部特写 Prompt
```
阿远,一位壮年男性,中国人,现代背景。国字脸,清晰分明下颌线。
单眼皮(深褐色瞳孔),眼神锐利深邃,眼尾微垂。剑眉,浓黑,舒展自然。
鼻梁高挺,鼻头圆润饱满。微笑唇(自然淡粉色),嘴角微扬。
黑色短发,两侧收短顶部略长。
健康小麦色皮肤,自然肌理,红润健康气色,素颜。
中高身材,健壮体型,宽肩厚肩,姿态挺拔。
身穿深灰色拉链运动夹克,内搭白色速干内衬,右耳佩戴蓝色无线运动耳机,运动休闲风格。
神色沉稳内敛,表情平静从容,目光坚定直视前方。
柔光箱均匀布光,暖色调,中焦85mm镜头,浅景深。
纯灰色专业背景。
专业人像摄影,正面面向相机,中性自然表情。
商业摄影品质,8k分辨率,写实风格,高细节。比例9:16
```
### 网格定妆照 Prompt
```
一张专业的角色定妆参考表,展示阿远,一位壮年男性,中国人。国字脸。
单眼皮(深褐色瞳孔)。黑色短发。身穿深灰色拉链运动夹克,右耳佩戴蓝色无线运动耳机。
神色沉稳内敛,目光坚定。
画面为2行3列网格布局,白色干净背景。
上一行(3格):全身正面、全身侧面、全身3/4侧面。
下一行(3格):面部特写-中性表情、微笑表情、愤怒表情。
角色设计一致,写实摄影风格。比例3:2
```
---
## 六、平台差异提示
### Kling(可灵)提示词技巧
- **用中文**效果更好,关键角色特征放在最前面
- Kling 对人名/角色名的概念不强→用特征描述代替名称
- Kling 对"网格布局"理解不稳定→网格方案建议用单格逐张生成后拼接
- 固定 seed 可显著提升同一角色的一致性
- 建议使用 I2I(图生图)模式提升5-15%一致性
### 即梦提示词技巧
- 理解"网格"概念较好,适合直接生成多宫格
- 支持角色参考图功能
- 对光线描述更敏感
### MidJourney 提示词技巧
- 使用 `--cref` 参数 + 角色参考图
- `--cw 0-100` 控制角色一致性的权重
- 使用 `--sref` 控制风格一致性
### 通用规则
- 角色描述用中文,技术参数用英文(`--ar 9:16`)
- 固定种子:同一个角色的所有生成使用相同的 seed
- 角色描述块不做任何改动地在所有 Prompt 中复用