移植自 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 带网关原话 / 正常返回)。
7.5 KiB
7.5 KiB
视频工厂 · 供应商参数速查(经验复用表)
用途:动手写代码前先查这里;查不到再查
docs/api/raw/qwen/(206 页官方文档);都没有才考虑花钱实测。 最后更新:2026-10-04
🔴 血泪教训(先读这段)
| 日期 | 教训 | 代价 |
|---|---|---|
| 2026-10-04 | 原生音频字段sound/audio 在官方文档里就有,我却直接花钱实测试 |
¥33 |
| 2026-10-04 | 探测"不存在的字段"时用了合法参数 → 请求通过校验 → 真实生成 | 含在上面 |
| 2026-10-03 | image2video/video-synthesis 对空 input 也会创建任务(需手动 cancel) |
¥2.2 |
正确顺序:
① 查本文档 → ② 查 docs/api/raw/qwen/ → ③ 查 git log -S"字段名"
→ ④ 零成本探测(非法值,必须在**参数校验阶段**失败)
→ ⑤ 最后才真实调用(先跟用户报费用)
零成本探测的正确姿势:
- ✅ 传非法枚举值(
sound="INVALID"→ 报错列出合法值on/off,不建任务) - ✅ 传非法 model 名(
"no-such-model"→ 报 "Model not exist") - ❌ 不要用"合法值 + 假字段名"——假字段被忽略后请求就合法了,会真扣费
一、可灵(Kling)视频生成
⚠️ 两条通道字段名不同,别混用:
通道 A:可灵官方直连
https://api-beijing.klingai.com · auth = Bearer
| 字段 | 值 | 说明 |
|---|---|---|
sound |
"on" / "off" |
原生音频开关(实测确认) |
实测证据(2026-10-04):
sound="on" → 输出含 Audio: aac 44100Hz stereo 128kb/s
mean_volume -28.0dB / max -11.7dB(真实语音,非空轨)
sound 不传 → 只有 Video 流
提示词里写 Audio: 层但 sound 不传 → 无效(不发音频)
通道 B:千问AI平台代理
https://maas.qianwenaiapi.com/api/v1 · auth = Bearer(同一个 DASHSCOPE_API_KEY)
模型 ID(注意带 kling/ 前缀):
kling/kling-v3-turbo-video-generation 文生 + 图生(首帧)
kling/kling-v3-video-generation 文生 + 图生(首帧/首尾帧)+ 多镜头叙事
kling/kling-v3-omni-video-generation 全部(+ 参考生视频 + 视频编辑)
parameters:
| 字段 | 类型 | 说明 |
|---|---|---|
mode |
"std" / "pro" |
分辨率 std=720P / pro=1080P |
duration |
int 3–15(默认 5) | 时长;omni 且传视频时 type=base 则跟随原视频 |
audio |
boolean(默认 false) | 是否自动生成配音 ← 与官方 sound 等价 |
aspect_ratio |
"16:9" / "9:16" / "1:1" |
宽高比 |
watermark |
boolean(默认 false) | 含水印版(返回 watermark_video_url) |
input:
| 字段 | 说明 |
|---|---|
prompt |
提示词(可用 <<<element_1>>> 引用元素 / <<<image_1>>> 引用图) |
multi_shot / shot_type / multi_prompt |
多镜头叙事模式 |
media[] |
{url, type, keep_original_sound};type = first_frame / last_frame / refer / base(omni 参考视频)/ feature |
element_list[] |
{element_id} — 角色元素绑定(跨镜头一致性) |
media[].keep_original_sound |
"yes" / "no"(默认 no)—— 仅 omni 且 type=base/feature 有效 |
查询结果返回:audio: boolean(是否包含音频)、video_count、SR
文档位置:docs/api/raw/qwen/api-reference-video-generation-kling-video-generation-create-task.md
二、百炼 / 千问AI平台 图像能力
(base_url:百炼 dashscope.aliyuncs.com;千问 maas.qianwenaiapi.com)
| 模型 | 用途 | 价格 | 状态 |
|---|---|---|---|
wan2.7-image-pro |
文生图 / 多图参考融合(9 图输入) | ¥0.2/张 | ✅ 实测可用 |
qwen-image-edit-plus |
指令图像编辑(保结构重绘) | ¥0.2/张 | ✅ 可用 |
qwen-image-edit |
基础编辑(输入图 ≤3) | ¥0.2/张 | ✅ 可用 |
wan2.7-image |
文生图 / 编辑 | ¥0.2/张 | ✅ 实测可用 |
字段结构(同步接口,multimodal-generation/generation):
{
"model": "wan2.7-image-pro",
"input": {"messages": [{"role": "user", "content": [
{"text": "指令"},
{"image": "<URL 或 data:image/png;base64,...>"}
]}]},
"parameters": {"size": "1024*1024", "n": 1, "watermark": false}
}
size格式 =宽*高(不是1K/2K!见keyframe_gen.py: SIZE_PRESETS)- content 顺序有讲究:qwen-image 系列 先 image 后 text;wan 系列 先 text 后 image
(
keyframe_gen.py: IMAGE_FIRST_PREFIXES自动切换) - 参考图可直传 base64 data URL,无需先上传 OSS
三、常用价格表
| 项目 | 价格 |
|---|---|
| 可灵 kling-v3 无声 720P | ¥0.6/秒 |
| 可灵 kling-v3 有声(sound=on) | 同上(不加价) |
| 可灵 kling-v2-5-turbo | ¥0.3/秒 |
| 百炼 wan2.2-kf2v-flash(首尾帧) | ¥0.1/秒 480P |
| 百炼 wan2.6-r2v-flash(参考生视频) | ¥0.3/秒 720P |
| 百炼图像(wan2.7 / qwen-image-edit) | ¥0.2/张 |
| 百炼 VideoRetalk(对口型) | ¥0.08/秒(1800 秒免费额度) |
| 可灵视频生音效 | ¥0.25/次 |
四、待补(下次去查,别实测)
- 万相 3.0(wan30-video)的
audio参数细节与 30 秒限制 - 可灵
element_list元素管理的创建接口(跨视频一致性) - 可灵
multi_shot/shot_type的完整取值表
补充方式:fetch_url 抓 platform.qianwenai.com/docs/llms.txt 找页面 →
抓 openapi-*.json(OpenAPI 规格,零费用)→ 追加到本文档。
🆕 2026-10-05 追加:可灵「两条通道」的字段差异(重要,别混用)
同一个可灵,有两个入口,字段名完全不同:
| 可灵官方(我们在用) | 千问AI平台(千问代理) | |
|---|---|---|
| base_url | api-beijing.klingai.com |
maas.qianwenaiapi.com |
| 鉴权 | Bearer api-key-kling-… |
Bearer sk-…(同一个百炼 key) |
| 原生有声 | sound: "on"/"off" |
parameters.audio: true/false |
| 首尾帧 | image + image_tail(顶层字段) |
input.media[] = [{type:first_frame},{type:last_frame}] |
| 时长 | 5 / 10 秒 | 3–15 秒 |
| 分辨率 | 720P / 1080P | std / pro / 4k |
| 多镜头叙事 | ❌ | ✅ multi_shot + shot_type + multi_prompt(≤6) |
| 参考生视频 | ❌ | ✅ omni 模型的 refer |
❌ 把
sound="on"发给千问代理 → 字段不存在,静默被忽略(可能白花钱) ❌ 把audio=true发给可灵官方 → 同上
百炼(万相)视频模型的两个端点(不同模型走不同端点)
wan2.2-kf2v-flash 首尾帧 → /services/aigc/image2video/video-synthesis
wan2.6-r2v-flash 多图参考 → /services/aigc/video-generation/video-synthesis
字段差异:
KF2V: input.first_frame_url ★ + input.last_frame_url ★ + prompt(可选)
parameters{resolution, prompt_extend, seed, template, watermark}
⚠️ duration **固定 5 秒不可传**(传了有被拒风险)
⚠️ 输出宽高比跟随首帧
R2V: input.media[] ★ [{type, url}] + input.prompt ★(**必填**)
media.type = first_frame | reference_image | reference_video
最多 5 个参考
本次踩的三个坑(已修)
- KF2V 端点写错 → 走成
video-generation(那是 R2V 的)→ 第一次生成必定 404 - KF2V 传了
duration→ 官方明确「固定 5 秒,不可修改」 - R2V 的
prompt做成可选 → 官方是 ★必填