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 带网关原话 / 正常返回)。
This commit is contained in:
@@ -0,0 +1,40 @@
|
||||
# 角色一致性参考资料(外部学习)
|
||||
|
||||
来源:GitHub 开源项目(2026-10-04 抓取)
|
||||
|
||||
## shuohao-skills / character-refs(4095 star,Apache-2.0)
|
||||
仓库:https://github.com/eternityspring/shuohao-skills
|
||||
作者定位:「给任何故事里的角色真出参考图……先出一张正面全身锚点,
|
||||
其余视图(大头照、90°侧面、背面、细节、45°大头照)**都只参考这张锚点**」
|
||||
|
||||
本目录:
|
||||
- `01_skill_原文.md` —— SKILL.md(工作流 + 分档 + 冻结机制)
|
||||
- `02_提示词规范_原文.md` —— **最核心**:每条都是实测失败换来的
|
||||
- `03_角色卡schema_原文.md` —— 角色卡字段结构
|
||||
- `04_字段拆解_原文.md` —— 一段话描述 → 分层字段的拆解规则
|
||||
|
||||
## 核心方法论(提炼,用于我们的实现)
|
||||
1. **一组图只有一个根:正面全身锚点**;只有它是文生图,其余全是「锚点 + 一句改图指令」
|
||||
2. **改图模型只听第一句** —— 派生图第一句必须是明确构图指令
|
||||
(`Zoom in to an extreme close-up...` / `Rotate the camera 180 degrees around her`)
|
||||
3. **正面要写几何** —— 「肩、髋、脚都正对镜头,鼻子在脸中线上,两耳一样可见」;
|
||||
反向词禁 `three-quarter view` / `turned body`(不写几何,模型会画成微侧身)
|
||||
4. **一致性清单要短、按视图取层** —— 大头照只写脸/头发/上装(写下装 → 镜头拉远);
|
||||
细节图不列整套服装(列了 → 模型画整个人,实测 8/8 失败)
|
||||
5. **不写 `character sheet` / `turnaround` / `model sheet`** —— 会让模型在一张图里画多视图
|
||||
6. **写实画风**:写 `A real photograph, not a render` + 85mm f/5.6 + 真实白平衡 + 不修图不美颜 + 轻微颗粒;
|
||||
**不写** `photorealistic` / 超高清 / 浅景深(会往 CG 带)
|
||||
反向词压 AI 感:CGI、塑料皮肤、蜡质皮肤、娃娃脸、过度对称、HDR、过饱和、平光
|
||||
7. **写光的效果,不写光源**(写 window 会把窗户画进画面)
|
||||
8. **细节图露肤要带年龄**(`Any visible skin is the skin of a 16-year-old`)否则皮肤会画老
|
||||
9. **模型不锁定** —— 一致性来自「同一张锚点」,不来自「同一个模型」
|
||||
10. **冻结三样**:锚点 sha256 / 画风快照 / 描述指纹;变了就标「过期」,**只标记不删除**
|
||||
|
||||
## 用户提供的另一份资料要点
|
||||
- 母版图要**摇一批候选**,挑**最有辨识度**的(不要指望观众记住"漂亮")
|
||||
- **记忆点**:袖口卷到哪、发尾挑染、领子立起、左耳银钉(一致性检查的抓手)
|
||||
- **纯灰 #808080** + **同一 seed** + 保存 job ID/seed
|
||||
- **角色卡 5 硬字段**:脸型 / 发型发色 / 五官比例(可测量)/ 服装剪裁 / 固定配饰
|
||||
—— 一旦定下,**所有提示词原样复用**("齐肩直发"→"中长发"会被当新角色)
|
||||
- **分镜提示词结构**:角色字段前置占 **60%**,动作/场景/镜头后置 40%
|
||||
- **防串脸**:双人镜头拆开;开 `input_fidelity`(可灵为 `image_fidelity`)
|
||||
Reference in New Issue
Block a user