Files
MediaCrawler/mac-agent-os-main/05_tools/09_ave/docs/character_consistency
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
..

角色一致性参考资料(外部学习)

来源: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)