移植自 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 带网关原话 / 正常返回)。
116 lines
8.2 KiB
YAML
116 lines
8.2 KiB
YAML
# CosyVoice 官方音色目录(音色库「从官方挑选」用)
|
||
# =====================================================================
|
||
# 来源:https://help.aliyun.com/zh/model-studio/cosyvoice-voice-list
|
||
# 抓取:2026-10-02 · 模型:cosyvoice-v3.5-plus(配置 aliyun.cosyvoice_model)
|
||
# 用法:音色库页面点「+ 从官方挑选」→ 选一个 → 自动建音色资产(填 provider_voice_id)
|
||
#
|
||
# 注意:每个模型仅支持一组特定音色,不可跨模型混用;文本语言须在该音色支持范围内。
|
||
# =====================================================================
|
||
|
||
provider: aliyun-cosyvoice
|
||
model: cosyvoice-v3-flash
|
||
source: https://help.aliyun.com/zh/model-studio/cosyvoice-voice-list
|
||
# ⚠️ 音色必须与模型匹配(实测 2026-10-02):
|
||
# cosyvoice-v3-flash 支持 88 个音色(含全部 _v3 后缀)← 用这个
|
||
# cosyvoice-v3-plus 仅支持 longanyang / longanhuan
|
||
# 不匹配会报 InvalidParameter(418)
|
||
|
||
# 角色分配建议(供 UI 提示)
|
||
pools:
|
||
male_lead: [longanyang, longanlang_v3, longyichen_v3, longze_v3]
|
||
male_mature: [longtian_v3, longsanshu_v3, longhao_v3, longanzhi_v3]
|
||
female_lead: [longxiaochun_v3, longhua_v3, longxing_v3, longanwen_v3]
|
||
female_charm: [longqiang_v3, longyue_v3, longanyan_v3]
|
||
extra_male: [longze_v3, longzhe_v3, longanlang_v3]
|
||
extra_female: [longxing_v3, longmiao_v3, longanqin_v3]
|
||
narrator: [longxiu_v3, longshuo_v3, longyue_v3]
|
||
|
||
groups:
|
||
- id: male
|
||
name: 男声
|
||
voices:
|
||
- {name: 龙安洋, voice_id: longanyang, trait: 阳光大男孩, age: "20~30", tags: [年轻男主]}
|
||
- {name: 龙安朗, voice_id: longanlang_v3, trait: 清爽利落男, age: "20~25"}
|
||
- {name: 龙逸尘, voice_id: longyichen_v3, trait: 洒脱活力男, age: "20~30"}
|
||
- {name: 龙泽, voice_id: longze_v3, trait: 温暖元气男, age: "25~30"}
|
||
- {name: 龙哲, voice_id: longzhe_v3, trait: 呆板大暖男, age: "25~30"}
|
||
- {name: 龙安昀, voice_id: longanyun_v3, trait: 居家暖男, age: "30~35"}
|
||
- {name: 龙天, voice_id: longtian_v3, trait: 磁性理智男, age: "30~35", tags: [成熟男主]}
|
||
- {name: 龙浩, voice_id: longhao_v3, trait: 多情忧郁男, age: "30~35"}
|
||
- {name: 龙寒, voice_id: longhan_v3, trait: 温暖痴情男, age: "30~35"}
|
||
- {name: 龙安智, voice_id: longanzhi_v3, trait: 睿智轻熟男, age: "25~35"}
|
||
- {name: 龙三叔, voice_id: longsanshu_v3, trait: 沉稳质感男, age: "25~45", tags: [中年]}
|
||
- {name: 龙硕, voice_id: longshuo_v3, trait: 博才干练男, age: "25~30"}
|
||
- {name: 龙修, voice_id: longxiu_v3, trait: 博才说书男, age: "25~35", tags: [旁白]}
|
||
- {name: 龙机器, voice_id: longjiqi_v3, trait: 呆萌机器人, age: "20~30", tags: [特殊]}
|
||
- {name: 龙猴哥, voice_id: longhouge_v3, trait: 经典猴哥, age: "20~25", tags: [特殊]}
|
||
|
||
- id: female
|
||
name: 女声
|
||
voices:
|
||
- {name: 龙小淳, voice_id: longxiaochun_v3, trait: 知性积极女, age: "25~30", tags: [女主角, 通用]}
|
||
- {name: 龙小夏, voice_id: longxiaoxia_v3, trait: 沉稳权威女, age: "25~30"}
|
||
- {name: 龙华, voice_id: longhua_v3, trait: 元气甜美女, age: "20~25", tags: [年轻女主]}
|
||
- {name: 龙星, voice_id: longxing_v3, trait: 温婉邻家女, age: "20~25"}
|
||
- {name: 龙安亲, voice_id: longanqin_v3, trait: 亲和活泼女, age: "20~25"}
|
||
- {name: 龙菲菲, voice_id: longfeifei_v3, trait: 甜美娇气女, age: "20~25"}
|
||
- {name: 龙安欢, voice_id: longanhuan_v3, trait: 欢脱元气女, age: "20~30"}
|
||
- {name: 龙安灵, voice_id: longanling_v3, trait: 思维灵动女, age: "20~30"}
|
||
- {name: 龙婉, voice_id: longwan_v3, trait: 细腻柔声女, age: "20~30"}
|
||
- {name: 龙婉君, voice_id: longwanjun_v3, trait: 细腻柔声女, age: "20~30"}
|
||
- {name: 龙安柔, voice_id: longanrou_v3, trait: 温柔闺蜜女, age: "20~35"}
|
||
- {name: 龙应沐, voice_id: longyingmu_v3, trait: 优雅知性女, age: "25~30"}
|
||
- {name: 龙应聆, voice_id: longyingling_v3, trait: 温和共情女, age: "25~30"}
|
||
- {name: 龙应桃, voice_id: longyingtao_v3, trait: 温柔淡定女, age: "25~30"}
|
||
- {name: 龙应静, voice_id: longyingjing_v3, trait: 低调冷静女, age: "25~35"}
|
||
- {name: 龙安温, voice_id: longanwen_v3, trait: 优雅知性女, age: "25~35"}
|
||
- {name: 龙安雅, voice_id: longanya_v3, trait: 高雅气质女, age: "25~35"}
|
||
- {name: 龙安莉, voice_id: longanli_v3, trait: 利落从容女, age: "25~35"}
|
||
- {name: 龙妙, voice_id: longmiao_v3, trait: 抑扬顿挫女, age: "25~30"}
|
||
- {name: 龙颜, voice_id: longyan_v3, trait: 温暖春风女, age: "30~35"}
|
||
- {name: 龙悦, voice_id: longyue_v3, trait: 温暖磁性女, age: "30~35", tags: [旁白]}
|
||
- {name: 龙嫱, voice_id: longqiang_v3, trait: 浪漫风情女, age: "30~35", tags: [御姐, 魅惑]}
|
||
- {name: 龙媛, voice_id: longyuan_v3, trait: 温暖治愈女, age: "35~40"}
|
||
- {name: 龙安燃, voice_id: longanran_v3, trait: 活泼质感女, age: "30~40"}
|
||
- {name: 龙安宣, voice_id: longanxuan_v3, trait: 经典直播女, age: "30~40"}
|
||
- {name: 龙安台, voice_id: longantai_v3, trait: 嗲甜台湾女, age: "20~25"}
|
||
- {name: 龙应笑, voice_id: longyingxiao_v3, trait: 清甜推销女, age: "20~25"}
|
||
|
||
- id: child
|
||
name: 童声
|
||
voices:
|
||
- {name: 龙呼呼, voice_id: longhuhu_v3, trait: 天真烂漫女童, age: "6~10"}
|
||
- {name: 龙泡泡, voice_id: longpaopao_v3, trait: 飞天泡泡音, age: "6~15"}
|
||
- {name: 龙杰力豆, voice_id: longjielidou_v3, trait: 阳光顽皮男, age: "10"}
|
||
- {name: 龙仙, voice_id: longxian_v3, trait: 豪放可爱女, age: "12"}
|
||
- {name: 龙铃, voice_id: longling_v3, trait: 稚气呆板女, age: "10"}
|
||
- {name: 龙闪闪, voice_id: longshanshan_v3, trait: 戏剧化童声, age: "6~15"}
|
||
- {name: 龙牛牛, voice_id: longniuniu_v3, trait: 阳光男童声, age: "6~15"}
|
||
|
||
- id: dialect
|
||
name: 方言
|
||
voices:
|
||
- {name: 龙嘉欣, voice_id: longjiaxin_v3, trait: 优雅粤语女, age: "30~35", lang: 粤语}
|
||
- {name: 龙嘉怡, voice_id: longjiayi_v3, trait: 知性粤语女, age: "25~30", lang: 粤语}
|
||
- {name: 龙安粤, voice_id: longanyue_v3, trait: 欢脱粤语男, age: "25~35", lang: 粤语}
|
||
- {name: 龙老铁, voice_id: longlaotie_v3, trait: 东北直率男, age: "25~30", lang: 东北话}
|
||
- {name: 龙陕哥, voice_id: longshange_v3, trait: 原味陕北男, age: "25~35", lang: 陕西话}
|
||
- {name: 龙安闽, voice_id: longanmin_v3, trait: 清纯萝莉女, age: "18~25", lang: 闽南话}
|
||
|
||
- id: foreign
|
||
name: 外语(出海)
|
||
voices:
|
||
- {name: loongriko, voice_id: loongriko_v3, trait: 二次元霓虹女, age: "18~25", lang: 日语}
|
||
- {name: loongtomoka, voice_id: loongtomoka_v3, trait: 日语女, age: "30~35", lang: 日语}
|
||
- {name: loongtomoya, voice_id: loongtomoya_v3, trait: 日语男, age: "30~35", lang: 日语}
|
||
- {name: Jihun, voice_id: loongjihun_v3, trait: 韩语男, age: "25~30", lang: 韩语}
|
||
- {name: loongkyong, voice_id: loongkyong_v3, trait: 韩语女, age: "25~30", lang: 韩语}
|
||
- {name: loongabby, voice_id: loongabby_v3, trait: 美式英文女, age: "30~35", lang: 英语}
|
||
- {name: loongandy, voice_id: loongandy_v3, trait: 美式英文男, age: "30~35", lang: 英语}
|
||
- {name: loongindah, voice_id: loongindah_v3, trait: 印尼女, age: "22~27", lang: 印尼语}
|
||
|
||
# 火山引擎备用音色(voice_type 格式,供 reference)
|
||
volcano_default:
|
||
- {name: 火山-通用女声, voice_type: BV001_V2, trait: 通用女声}
|
||
- {name: 火山-通用男声, voice_type: BV002_streaming, trait: 通用男声}
|