移植自 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 带网关原话 / 正常返回)。
1602 lines
36 KiB
YAML
1602 lines
36 KiB
YAML
version: '1.0'
|
||
updated: '2026-10-04'
|
||
categories:
|
||
image:
|
||
name: 图像
|
||
icon: 🖼️
|
||
order: 2
|
||
visual:
|
||
name: 视觉
|
||
icon: 🎨
|
||
order: 3
|
||
video:
|
||
name: 视频
|
||
icon: 🎞️
|
||
order: 4
|
||
audio:
|
||
name: 音频
|
||
icon: 🔊
|
||
order: 5
|
||
analysis:
|
||
name: 分析
|
||
icon: 🧠
|
||
order: 6
|
||
external:
|
||
name: 外部
|
||
icon: 🧩
|
||
order: 7
|
||
capabilities:
|
||
- id: tts_generate
|
||
name: 语音合成
|
||
category: audio
|
||
description: 文本 → 语音音频(支持情绪/语速)
|
||
input:
|
||
text: string
|
||
emotion: string?
|
||
output:
|
||
audio_path: string
|
||
duration: number
|
||
params_schema:
|
||
emotion:
|
||
type: enum
|
||
options:
|
||
- normal
|
||
- happy
|
||
- sad
|
||
- angry
|
||
- warm
|
||
default: normal
|
||
label: 情绪
|
||
speed:
|
||
type: number
|
||
min: 0.5
|
||
max: 2.0
|
||
default: 1
|
||
label: 语速
|
||
providers:
|
||
- id: volcano
|
||
name: 火山语音
|
||
api_key_ref: volcano.voice_app_key
|
||
model: cosyvoice
|
||
default: true
|
||
- id: aliyun
|
||
name: 阿里语音
|
||
api_key_ref: aliyun.api_key
|
||
model: cosyvoice-v1
|
||
default: false
|
||
defaults:
|
||
provider: volcano
|
||
emotion: normal
|
||
speed: 1
|
||
execution: local
|
||
impl: voice_synthesizer/aliyun.py + voice_synthesizer/volcano.py
|
||
status: partial
|
||
note: 阿里百炼账号欠费(Arrearage)+ 火山缺 access_token → 充值/配置后可用
|
||
source: 现有资产(voice_synthesizer/,391 行)
|
||
- id: bgm_generate
|
||
name: BGM 生成
|
||
category: audio
|
||
description: 按风格/情绪生成背景音乐
|
||
input:
|
||
genre: string
|
||
mood: string?
|
||
duration: number
|
||
output:
|
||
audio_path: string
|
||
params_schema:
|
||
genre:
|
||
type: enum
|
||
options:
|
||
- cinematic
|
||
- lofi
|
||
- upbeat
|
||
- calm
|
||
- inspirational
|
||
default: cinematic
|
||
label: 风格
|
||
mood:
|
||
type: string
|
||
default: ''
|
||
label: 情绪描述
|
||
providers:
|
||
- id: suno
|
||
name: Suno
|
||
api_key_ref: suno.api_key
|
||
default: true
|
||
- id: ace_step
|
||
name: ACE-Step
|
||
api_key_ref: ''
|
||
model: ace-step
|
||
defaults:
|
||
provider: suno
|
||
genre: cinematic
|
||
execution: remote
|
||
impl: bgm_generator/suno.py + bgm_generator/chord_pad.py
|
||
status: ready
|
||
source: 现有资产(bgm_generator/,654 行)
|
||
- id: music_select
|
||
name: 配乐选择
|
||
category: audio
|
||
description: 从曲库按场景/情绪挑选 BGM(不生成)
|
||
input:
|
||
scene_type: string
|
||
mood: string
|
||
output:
|
||
audio_path: string
|
||
params_schema:
|
||
max_duration:
|
||
type: number
|
||
default: 60
|
||
min: 5
|
||
max: 300
|
||
label: 最长时长(秒)
|
||
providers:
|
||
- id: local_lib
|
||
name: 本地曲库
|
||
api_key_ref: ''
|
||
default: true
|
||
defaults:
|
||
provider: local_lib
|
||
execution: local
|
||
impl: music_selector/
|
||
status: ready
|
||
source: 现有资产(music_selector/,371 行)
|
||
- id: beat_analyze
|
||
name: 节拍分析
|
||
category: audio
|
||
description: 分析音频节拍/BPM → 拍点时间轴(卡点视频用)
|
||
input:
|
||
audio_path: string
|
||
output:
|
||
bpm: number
|
||
beats: number[]
|
||
params_schema:
|
||
sensitivity:
|
||
type: number
|
||
min: 0.1
|
||
max: 1.0
|
||
default: 0.5
|
||
label: 灵敏度
|
||
providers:
|
||
- id: local
|
||
name: 本地分析
|
||
api_key_ref: ''
|
||
default: true
|
||
defaults:
|
||
provider: local
|
||
sensitivity: 0.5
|
||
execution: local
|
||
impl: composer/beat_sync.py
|
||
status: ready
|
||
source: 现有资产(composer/beat_sync)
|
||
- id: emotion_analyze
|
||
name: 情绪分析
|
||
category: audio
|
||
description: 分析音频情绪曲线(驱动剪辑节奏)
|
||
input:
|
||
audio_path: string
|
||
output:
|
||
emotion_curve: object[]
|
||
params_schema: {}
|
||
providers:
|
||
- id: local
|
||
name: 本地分析
|
||
api_key_ref: ''
|
||
default: true
|
||
defaults:
|
||
provider: local
|
||
execution: local
|
||
impl: story_director/(本地规则)
|
||
status: ready
|
||
source: 现有资产(audio_line/,3530 行)
|
||
- id: audio_mix
|
||
name: 混音
|
||
category: audio
|
||
description: 人声 + BGM + 音效混音(音量/淡入淡出)
|
||
input:
|
||
voice: file
|
||
bgm: file?
|
||
sfx: file[]?
|
||
output:
|
||
audio_path: string
|
||
params_schema:
|
||
voice_volume:
|
||
type: number
|
||
min: 0
|
||
max: 2
|
||
default: 1.0
|
||
label: 人声音量
|
||
bgm_volume:
|
||
type: number
|
||
min: 0
|
||
max: 1
|
||
default: 0.15
|
||
label: BGM 音量
|
||
fade_in:
|
||
type: number
|
||
min: 0
|
||
max: 5
|
||
default: 1.0
|
||
label: 淡入(秒)
|
||
fade_out:
|
||
type: number
|
||
min: 0
|
||
max: 5
|
||
default: 1.0
|
||
label: 淡出(秒)
|
||
providers:
|
||
- id: ffmpeg
|
||
name: 本地 FFmpeg
|
||
api_key_ref: ''
|
||
default: true
|
||
defaults:
|
||
provider: ffmpeg
|
||
voice_volume: 1.0
|
||
bgm_volume: 0.15
|
||
fade_in: 1.0
|
||
fade_out: 1.0
|
||
execution: local
|
||
impl: 'composer/pipeline.py: mux_final'
|
||
status: ready
|
||
source: 现有资产(audio_line/)
|
||
- id: image_to_video
|
||
name: 图生视频
|
||
category: visual
|
||
description: 参考图 + 提示词 → 视频片段(故事/短剧主力)
|
||
input:
|
||
image: file
|
||
prompt: string
|
||
duration: number
|
||
output:
|
||
video_path: string
|
||
params_schema:
|
||
duration:
|
||
type: number
|
||
min: 3
|
||
max: 10
|
||
default: 5
|
||
label: 时长(秒)
|
||
seed:
|
||
type: number
|
||
default: 42
|
||
label: 随机种子
|
||
camera_move:
|
||
type: enum
|
||
options:
|
||
- none
|
||
- pan
|
||
- tilt
|
||
- zoom
|
||
- roll
|
||
- orbit
|
||
default: none
|
||
label: 运镜
|
||
providers:
|
||
- id: kling
|
||
name: 可灵
|
||
api_key_ref: kling.api_key
|
||
model: kling-v3
|
||
default: true
|
||
- id: jimeng
|
||
name: 即梦
|
||
api_key_ref: volcano.ark_api_key
|
||
model: seedance
|
||
defaults:
|
||
provider: kling
|
||
duration: 5
|
||
seed: 42
|
||
camera_move: none
|
||
execution: remote
|
||
impl: capabilities/kling_video.py
|
||
status: ready
|
||
source: 现有资产(batch_generator,664 行);⚠️ 可灵余额不足,可切即梦
|
||
- id: person_swap
|
||
name: 人物置换
|
||
category: image
|
||
description: 已有视频 → 替换人物(保持动作/场景)
|
||
input:
|
||
video: file
|
||
character_image: file
|
||
output:
|
||
video_path: string
|
||
params_schema:
|
||
mode:
|
||
type: enum
|
||
options:
|
||
- mix
|
||
- animate
|
||
default: mix
|
||
label: 模式
|
||
providers:
|
||
- id: bailian
|
||
name: 阿里百炼
|
||
api_key_ref: aliyun.api_key
|
||
model: wan2.2-animate-mix
|
||
default: true
|
||
defaults:
|
||
provider: bailian
|
||
mode: mix
|
||
execution: remote
|
||
impl: person_swap/api.py
|
||
status: ready
|
||
source: 2026-10-02 实测校准(真名 wan2.2-animate-mix;std ¥0.6/秒 · pro ¥0.9/秒)
|
||
- id: lipsync
|
||
name: 对口型
|
||
category: visual
|
||
description: 人物视频 + 人声 → 口型匹配的新视频(仅"有台词"的镜头做)
|
||
input:
|
||
image: file
|
||
audio: file
|
||
output:
|
||
video_path: string
|
||
params_schema:
|
||
resolution:
|
||
type: enum
|
||
options:
|
||
- 720p
|
||
- 1080p
|
||
default: 1080p
|
||
label: 分辨率
|
||
providers:
|
||
- id: bailian
|
||
name: 阿里百炼 VideoRetalk
|
||
api_key_ref: aliyun.api_key
|
||
model: videoretalk
|
||
default: true
|
||
note: ¥0.08/秒 · 1800 秒免费额度 · 支持 ref_image_url
|
||
- id: fal
|
||
name: fal.ai(Kling Lipsync)
|
||
api_key_ref: fal.api_key
|
||
model: fal-ai/kling-video/lipsync/audio-to-video
|
||
note: ⚠️ 缺 fal key,未启用
|
||
- id: volcano
|
||
name: 火山 OmniHuman
|
||
api_key_ref: volcano.voice_app_key
|
||
defaults:
|
||
provider: bailian
|
||
resolution: 1080p
|
||
limits:
|
||
- 视频需正面近景 · 2~120s · mp4/mov · 15~60fps · 边长 640~2048
|
||
- 音频需干净人声(TTS 产物天然满足)
|
||
execution: remote
|
||
impl: composer/lipsync.py(lipsync_videoretalk)
|
||
status: ready
|
||
source: 2026-10-03 实测跑通(百炼 VideoRetalk · ¥0.08/秒 · 1800 秒免费额度)
|
||
- id: character_lock
|
||
name: 角色锁定
|
||
category: visual
|
||
description: 跨镜头角色一致性(固定描述块 + seed)
|
||
input:
|
||
character_id: string
|
||
shots: object[]
|
||
output:
|
||
locked_prompts: string[]
|
||
params_schema:
|
||
consistency_seed:
|
||
type: number
|
||
default: 42
|
||
label: 一致性种子
|
||
providers:
|
||
- id: local
|
||
name: 本地处理
|
||
api_key_ref: ''
|
||
default: true
|
||
defaults:
|
||
provider: local
|
||
consistency_seed: 42
|
||
execution: local
|
||
impl: assets_manager/ + character_generator/
|
||
status: ready
|
||
source: 现有资产(character_locker,68 行)
|
||
- id: video_concat
|
||
name: 视频拼接
|
||
category: video
|
||
description: 多片段拼接 + 转场
|
||
input:
|
||
clips: file[]
|
||
output:
|
||
video_path: string
|
||
params_schema:
|
||
transition:
|
||
type: enum
|
||
options:
|
||
- cut
|
||
- dissolve
|
||
- fade
|
||
- wipe
|
||
default: cut
|
||
label: 转场
|
||
transition_duration:
|
||
type: number
|
||
min: 0
|
||
max: 2
|
||
default: 0.5
|
||
label: 转场时长(秒)
|
||
resolution:
|
||
type: string
|
||
default: 1080x1920
|
||
label: 分辨率
|
||
fps:
|
||
type: number
|
||
default: 30
|
||
label: 帧率
|
||
providers:
|
||
- id: ffmpeg
|
||
name: 本地 FFmpeg
|
||
api_key_ref: ''
|
||
default: true
|
||
defaults:
|
||
provider: ffmpeg
|
||
transition: cut
|
||
resolution: 1080x1920
|
||
fps: 30
|
||
execution: local
|
||
impl: 'composer/pipeline.py: render_from_clips'
|
||
status: ready
|
||
source: 现有资产(composer/ffmpeg,702 行)
|
||
- id: speed_ramp
|
||
name: 变速
|
||
category: video
|
||
description: 视频变速 / 速度斜坡(卡点用)
|
||
input:
|
||
video: file
|
||
output:
|
||
video_path: string
|
||
params_schema:
|
||
factor:
|
||
type: number
|
||
min: 0.25
|
||
max: 4.0
|
||
default: 1.0
|
||
label: 速度倍率
|
||
ramp:
|
||
type: string
|
||
default: ''
|
||
label: 斜坡描述
|
||
providers:
|
||
- id: ffmpeg
|
||
name: 本地 FFmpeg
|
||
api_key_ref: ''
|
||
default: true
|
||
defaults:
|
||
provider: ffmpeg
|
||
factor: 1.0
|
||
execution: local
|
||
impl: composer/pipeline.py(_build_atempo_filter)
|
||
status: ready
|
||
source: 现有资产(speed_ramp,370 行)
|
||
- id: de_ai
|
||
name: 去 AI 化
|
||
category: video
|
||
description: 后处理链:模糊 → 颗粒 → 调色 → S曲线 → 色温(消除 AI 感)
|
||
input:
|
||
video: file
|
||
output:
|
||
video_path: string
|
||
params_schema:
|
||
blur_sigma:
|
||
type: number
|
||
min: 0
|
||
max: 2.0
|
||
default: 0.4
|
||
label: 模糊 sigma
|
||
grain:
|
||
type: number
|
||
min: 0
|
||
max: 50
|
||
default: 12
|
||
label: 颗粒强度
|
||
saturation:
|
||
type: number
|
||
min: -1
|
||
max: 1
|
||
default: -0.12
|
||
label: 饱和偏移
|
||
temperature:
|
||
type: number
|
||
min: 2000
|
||
max: 10000
|
||
default: 5300
|
||
label: 色温(K)
|
||
providers:
|
||
- id: ffmpeg
|
||
name: 本地 FFmpeg
|
||
api_key_ref: ''
|
||
default: true
|
||
defaults:
|
||
provider: ffmpeg
|
||
blur_sigma: 0.4
|
||
grain: 12
|
||
saturation: -0.12
|
||
temperature: 5300
|
||
execution: local
|
||
impl: 'composer/pipeline.py: de_ai 处理'
|
||
status: ready
|
||
consumer: 合成节点(video_concat)自动调用
|
||
source: 🆕 待建(S2);参数来自 DCS 第八节
|
||
- id: subtitle
|
||
name: 字幕生成
|
||
category: video
|
||
description: 台词文本 → 时间轴字幕(SRT/ASS)+ 烧录
|
||
input:
|
||
text: string
|
||
audio_duration: number
|
||
output:
|
||
subtitle_path: string
|
||
video_path: string?
|
||
params_schema:
|
||
style:
|
||
type: enum
|
||
options:
|
||
- 手机系统默认
|
||
- 简洁
|
||
- 强调
|
||
default: 手机系统默认
|
||
label: 样式
|
||
position:
|
||
type: enum
|
||
options:
|
||
- bottom_center
|
||
- bottom_left
|
||
- top_center
|
||
default: bottom_center
|
||
label: 位置
|
||
providers:
|
||
- id: local
|
||
name: 本地生成
|
||
api_key_ref: ''
|
||
default: true
|
||
defaults:
|
||
provider: local
|
||
style: 手机系统默认
|
||
position: bottom_center
|
||
execution: local
|
||
impl: composer/ffmpeg.py(ASS 字幕)
|
||
status: ready
|
||
consumer: 工作流 subtitle 节点
|
||
source: 现有资产(部分实现)
|
||
- id: script_generate
|
||
name: 脚本生成
|
||
category: analysis
|
||
description: 主题/素材 → 完整脚本(口播稿 / 短剧剧本)
|
||
input:
|
||
topic: string
|
||
style: string
|
||
duration: number
|
||
output:
|
||
script: string
|
||
script_path: string
|
||
params_schema:
|
||
style:
|
||
type: enum
|
||
options:
|
||
- 口播
|
||
- 短剧
|
||
- 科普
|
||
- 剧情
|
||
default: 口播
|
||
label: 脚本类型
|
||
duration:
|
||
type: number
|
||
min: 15
|
||
max: 300
|
||
default: 60
|
||
label: 目标时长(秒)
|
||
detail:
|
||
type: enum
|
||
options:
|
||
- simple
|
||
- detailed
|
||
- stepwise
|
||
default: detailed
|
||
label: 详细度
|
||
providers:
|
||
- id: deepseek
|
||
name: DeepSeek
|
||
api_key_ref: llm.api_key
|
||
model: deepseek-v4-flash
|
||
default: true
|
||
defaults:
|
||
provider: deepseek
|
||
style: 口播
|
||
duration: 60
|
||
detail: detailed
|
||
execution: local
|
||
impl: directors/llm.py(+ 各导演)
|
||
status: ready
|
||
source: 现有资产(script_generator/,377 行)
|
||
- id: script_parse
|
||
name: 文案解析
|
||
category: analysis
|
||
description: 文案/故事 → 结构化导演脚本
|
||
input:
|
||
script: string
|
||
style: string
|
||
output:
|
||
director_script: object
|
||
params_schema:
|
||
style:
|
||
type: enum
|
||
options:
|
||
- knowledge_lecture
|
||
- bedtime_story
|
||
- funny_talk
|
||
- personal_vlog
|
||
default: knowledge_lecture
|
||
label: 内容类型
|
||
providers:
|
||
- id: deepseek
|
||
name: DeepSeek
|
||
api_key_ref: llm.api_key
|
||
model: deepseek-v4-flash
|
||
default: true
|
||
defaults:
|
||
provider: deepseek
|
||
style: knowledge_lecture
|
||
execution: local
|
||
impl: story_director/
|
||
status: ready
|
||
source: 现有资产(director_parser,323 行)
|
||
- id: storyboard_plan
|
||
name: 分镜规划
|
||
category: analysis
|
||
description: 导演脚本/故事 → 分镜(景别/机位/运镜/时长/画面/台词)
|
||
input:
|
||
story: string
|
||
character_block: string?
|
||
outline: string?
|
||
output:
|
||
shots: object[]
|
||
params_schema:
|
||
shot_count:
|
||
type: number
|
||
min: 3
|
||
max: 20
|
||
default: 6
|
||
label: 镜头数
|
||
shot_duration:
|
||
type: number
|
||
min: 3
|
||
max: 15
|
||
default: 5
|
||
label: 单镜头时长(秒)
|
||
style:
|
||
type: string
|
||
default: documentary_realism
|
||
label: 拍摄风格
|
||
providers:
|
||
- id: storyboard_v52
|
||
name: AI Storyboard Director v5.2
|
||
api_key_ref: llm.api_key
|
||
model: deepseek-v4-flash
|
||
default: true
|
||
- id: clip_storyboard
|
||
name: clip-storyboard-director
|
||
api_key_ref: llm.api_key
|
||
model: deepseek-v4-flash
|
||
- id: legacy_scene_planner
|
||
name: 本地场景规划(legacy)
|
||
api_key_ref: llm.api_key
|
||
model: deepseek-v4-flash
|
||
defaults:
|
||
provider: legacy_scene_planner
|
||
shot_count: 6
|
||
shot_duration: 5
|
||
style: documentary_realism
|
||
execution: local
|
||
impl: directors/(storyboard_v52 / seedance_director / legacy)
|
||
status: ready
|
||
source: 现有资产(scene_planner 444 行);v5.2 待接(S2)
|
||
- id: prompt_gen
|
||
name: 提示词生成
|
||
category: analysis
|
||
description: 分镜 + 角色 → 每镜头视频生成提示词
|
||
input:
|
||
shots: object[]
|
||
character_block: string
|
||
output:
|
||
prompts: string[]
|
||
params_schema:
|
||
detail:
|
||
type: enum
|
||
options:
|
||
- simple
|
||
- detailed
|
||
- stepwise
|
||
default: detailed
|
||
label: 详细度
|
||
providers:
|
||
- id: deepseek
|
||
name: DeepSeek
|
||
api_key_ref: llm.api_key
|
||
model: deepseek-v4-flash
|
||
default: true
|
||
defaults:
|
||
provider: deepseek
|
||
detail: detailed
|
||
execution: local
|
||
impl: 'composer/pipeline.py: build_shot_prompt'
|
||
status: ready
|
||
source: 现有资产
|
||
- id: anchor_extract
|
||
name: 锚点提取
|
||
category: analysis
|
||
description: 脚本 → 一致性锚点(角色/场景/道具/风格)
|
||
input:
|
||
script: object
|
||
output:
|
||
anchors: object
|
||
params_schema: {}
|
||
providers:
|
||
- id: local
|
||
name: 本地处理
|
||
api_key_ref: ''
|
||
default: true
|
||
defaults:
|
||
provider: local
|
||
execution: local
|
||
impl: story_director/
|
||
status: ready
|
||
source: 现有资产(anchor_extractor,155 行)
|
||
- id: material_search
|
||
name: 素材搜索
|
||
category: analysis
|
||
description: 关键词 → 素材片段(背景/空镜)
|
||
input:
|
||
search: string
|
||
count: number
|
||
orientation: string
|
||
output:
|
||
clips: file[]
|
||
params_schema:
|
||
count:
|
||
type: number
|
||
min: 1
|
||
max: 20
|
||
default: 3
|
||
label: 数量
|
||
orientation:
|
||
type: enum
|
||
options:
|
||
- portrait
|
||
- landscape
|
||
default: portrait
|
||
label: 画幅方向
|
||
providers:
|
||
- id: pexels
|
||
name: Pexels
|
||
api_key_ref: pexels.api_key
|
||
default: true
|
||
- id: wan2_2
|
||
name: 通义万相
|
||
api_key_ref: aliyun.api_key
|
||
model: wan2.2
|
||
- id: fallback
|
||
name: 本地兜底素材
|
||
api_key_ref: ''
|
||
defaults:
|
||
provider: pexels
|
||
count: 3
|
||
orientation: portrait
|
||
execution: remote
|
||
impl: material_producer/{pexels,kling,wan2_2,fallback}/
|
||
status: ready
|
||
source: 现有资产(material_producer,902 行)
|
||
- id: comfyui_workflow
|
||
name: ComfyUI 工作流
|
||
category: external
|
||
description: 调用 RunningHub 上的 ComfyUI 工作流(**一个工作流 = 一个新能力**,可长出面部件表情/风格渲染等)
|
||
input:
|
||
workflow_id: string
|
||
images: file[]?
|
||
text: string?
|
||
output:
|
||
output_files: file[]
|
||
params_schema:
|
||
workflow_id:
|
||
type: string
|
||
default: ''
|
||
label: 工作流 ID
|
||
node_overrides:
|
||
type: object
|
||
default: {}
|
||
label: 节点覆盖参数
|
||
providers:
|
||
- id: runninghub
|
||
name: RunningHub
|
||
api_key_ref: runninghub.api_key
|
||
default: true
|
||
- id: comfydeploy
|
||
name: ComfyDeploy
|
||
api_key_ref: comfydeploy.api_key
|
||
defaults:
|
||
provider: runninghub
|
||
execution: remote
|
||
impl: capabilities/external/comfyui.py
|
||
status: planned
|
||
source: 🆕 待接(S5)
|
||
- id: text_to_video
|
||
name: 文生视频
|
||
category: external
|
||
description: 纯文本 → 视频(无参考图,成本较高)
|
||
input:
|
||
prompt: string
|
||
duration: number
|
||
output:
|
||
video_path: string
|
||
params_schema:
|
||
duration:
|
||
type: number
|
||
min: 3
|
||
max: 10
|
||
default: 5
|
||
label: 时长(秒)
|
||
providers:
|
||
- id: kling
|
||
name: 可灵
|
||
api_key_ref: kling.api_key
|
||
model: kling-v3
|
||
default: true
|
||
- id: wanxiang
|
||
name: 通义万相
|
||
api_key_ref: aliyun.api_key
|
||
model: wan2.2-t2v
|
||
defaults:
|
||
provider: kling
|
||
duration: 5
|
||
execution: remote
|
||
impl: 'capabilities/kling_video.py: submit_text2video'
|
||
status: ready
|
||
source: ✅ 实测可用(kling-v3,2026-10-01 生成 5 秒视频成功)
|
||
- id: vfx_apply
|
||
name: 特效
|
||
category: external
|
||
description: 子弹时间 / 环绕运镜 / 慢动作 / 焦点锁定
|
||
input:
|
||
image: file?
|
||
video: file?
|
||
vfx_type: string
|
||
output:
|
||
video_path: string
|
||
params_schema:
|
||
vfx_type:
|
||
type: enum
|
||
options:
|
||
- bullet_time
|
||
- orbit
|
||
- slow_motion
|
||
- focus_lock
|
||
- custom
|
||
default: orbit
|
||
label: 特效类型
|
||
pan:
|
||
type: number
|
||
min: -10
|
||
max: 10
|
||
default: 0
|
||
label: pan(水平摇)
|
||
tilt:
|
||
type: number
|
||
min: -10
|
||
max: 10
|
||
default: 0
|
||
label: tilt(垂直摇)
|
||
roll:
|
||
type: number
|
||
min: -10
|
||
max: 10
|
||
default: 0
|
||
label: roll(旋转)
|
||
zoom:
|
||
type: number
|
||
min: -10
|
||
max: 10
|
||
default: 0
|
||
label: zoom(变焦)
|
||
providers:
|
||
- id: kling
|
||
name: 可灵运镜
|
||
api_key_ref: kling.api_key
|
||
default: true
|
||
- id: tianmu
|
||
name: 万兴天幕
|
||
api_key_ref: wondershare.api_key
|
||
- id: hailuo
|
||
name: 海螺AI
|
||
api_key_ref: hailuo.api_key
|
||
- id: comfyui
|
||
name: ComfyUI
|
||
api_key_ref: runninghub.api_key
|
||
defaults:
|
||
provider: kling
|
||
vfx_type: orbit
|
||
execution: remote
|
||
impl: capabilities/kling_video.py:270 build_camera_control
|
||
status: partial
|
||
source: 🆕 待接(S5);参数来自 DCS 第七节
|
||
- id: character_3d
|
||
name: 3D 角色
|
||
category: external
|
||
description: 概念图 → 多视图 3D 模型 + 骨骼绑定
|
||
input:
|
||
image: file
|
||
prompt: string?
|
||
output:
|
||
model_file: string
|
||
preview: string
|
||
params_schema:
|
||
format:
|
||
type: enum
|
||
options:
|
||
- glb
|
||
- fbx
|
||
- obj
|
||
default: glb
|
||
label: 格式
|
||
rigging:
|
||
type: boolean
|
||
default: true
|
||
label: 自动绑骨
|
||
providers:
|
||
- id: hunyuan_3d
|
||
name: 混元3D
|
||
api_key_ref: hunyuan_3d.secret_id
|
||
default: true
|
||
defaults:
|
||
provider: hunyuan_3d
|
||
format: glb
|
||
rigging: true
|
||
execution: remote
|
||
impl: ''
|
||
status: planned
|
||
source: 🆕 待接(S5);接口见 DCS 第六节
|
||
- id: frame_chain
|
||
name: 首尾帧衔接
|
||
category: video
|
||
description: 上一镜尾帧 → 作为下一镜首帧/尾帧,长镜头分段生成后无缝接续
|
||
input:
|
||
tail_image: file
|
||
prompt: string
|
||
output:
|
||
video_path: string
|
||
params_schema:
|
||
mode:
|
||
type: enum
|
||
options:
|
||
- tail
|
||
- head
|
||
default: tail
|
||
label: 衔接方式
|
||
providers:
|
||
- id: kling
|
||
name: 可灵(image_tail)
|
||
api_key_ref: kling.api_key
|
||
param: image_tail
|
||
default: true
|
||
defaults:
|
||
provider: kling
|
||
mode: tail
|
||
execution: remote
|
||
impl: capabilities/kling_video.py:143-152
|
||
status: partial
|
||
source: 代码已实现 image_tail;⚠️ 分镜流程尚未接线(P1 待做)
|
||
- id: voice_lock
|
||
name: 声线锁
|
||
category: audio
|
||
description: 一个角色 = 一个固定音色(跨镜/跨集逐字复用,外观变体不换锁)
|
||
input:
|
||
cast: list
|
||
text: string
|
||
output:
|
||
audio_path: string
|
||
providers:
|
||
- id: local_lib
|
||
name: 音色库(演员表绑定)
|
||
api_key_ref: aliyun.api_key
|
||
default: true
|
||
defaults:
|
||
provider: local_lib
|
||
execution: local
|
||
impl: composer/dubbing.py(resolve_voice_map / pick_voice_for_shot)
|
||
status: ready
|
||
source: 2026-10-03 配音链路实测;音色库见 config/cosyvoice_voices.yaml
|
||
- id: text_to_image
|
||
name: 文生图
|
||
category: image
|
||
description: 文本 → 图片(角色定妆照 / 概念图 / 场景图 / 关键帧草图)
|
||
input:
|
||
prompt: string
|
||
output:
|
||
image_path: string
|
||
params_schema:
|
||
size:
|
||
type: enum
|
||
options:
|
||
- 1K
|
||
- 2K
|
||
- 4K
|
||
default: 2K
|
||
label: 分辨率档
|
||
n:
|
||
type: number
|
||
min: 1
|
||
max: 12
|
||
default: 1
|
||
label: 输出张数
|
||
negative_prompt:
|
||
type: string
|
||
default: ''
|
||
label: 负向提示词(排除不要的)
|
||
providers:
|
||
- id: qwen
|
||
name: 千问AI平台·万相2.7
|
||
api_key_ref: aliyun.api_key
|
||
model: wan2.7-image-pro
|
||
default: true
|
||
- id: qwen
|
||
name: 千问AI平台·Qwen-Image
|
||
api_key_ref: aliyun.api_key
|
||
model: qwen-image-3.0-pro
|
||
- id: qwen
|
||
name: 千问AI平台·Z-Image(快/便宜)
|
||
api_key_ref: aliyun.api_key
|
||
model: z-image-turbo
|
||
- id: kling
|
||
name: 可灵
|
||
api_key_ref: kling.api_key
|
||
model: kling-v3
|
||
- id: jimeng
|
||
name: 即梦
|
||
api_key_ref: volcano.ark_api_key
|
||
model: seedream
|
||
defaults:
|
||
provider: qwen
|
||
model: wan2.7-image-pro
|
||
size: 2K
|
||
n: 1
|
||
execution: remote
|
||
status: ready
|
||
impl: character_sheet.py / 待接 qwen-image
|
||
docs:
|
||
- source: qwen
|
||
slug: api-reference-image-generation-wan27-image-gen-edit-synchronous
|
||
title: Wan 2.7 — 同步调用
|
||
- id: ref_to_image
|
||
name: 参考图生图(多图融合)★
|
||
category: image
|
||
description: 1~9 张参考图(角色多角度 + 场景多机位 + 道具)+ 文本指令 → 融合成一张画面 —— 关键帧创作的核心能力:角色与场景不再二选一
|
||
input:
|
||
prompt: string
|
||
ref_images: list[file]
|
||
output:
|
||
image_path: string
|
||
params_schema:
|
||
size:
|
||
type: enum
|
||
options:
|
||
- 1K
|
||
- 2K
|
||
- 4K
|
||
default: 2K
|
||
label: 输出档
|
||
n:
|
||
type: number
|
||
min: 1
|
||
max: 6
|
||
default: 1
|
||
label: 输出张数
|
||
mode:
|
||
type: enum
|
||
options:
|
||
- single
|
||
- sequential
|
||
default: single
|
||
label: 单张 / 顺序模式(一次多张且角色一致)
|
||
providers:
|
||
- id: qwen
|
||
name: 千问AI平台·万相2.7 Pro(最多 9 图 + 顺序 12 张)
|
||
api_key_ref: aliyun.api_key
|
||
model: wan2.7-image-pro
|
||
default: true
|
||
- id: qwen
|
||
name: 千问AI平台·Qwen-Image-2.1 Pro(最多 10 图 + 透明通道)
|
||
api_key_ref: aliyun.api_key
|
||
model: qwen-image-2.1-pro
|
||
- id: kling
|
||
name: 可灵(主体1-4 + 场景 + 风格分离)
|
||
api_key_ref: kling.api_key
|
||
model: kling-v2-1
|
||
defaults:
|
||
provider: qwen
|
||
model: wan2.7-image-pro
|
||
mode: single
|
||
n: 1
|
||
execution: remote
|
||
status: partial
|
||
impl: 待接(capabilities/kling_video.submit_multi_image2image 已有可灵版)
|
||
note: 关键帧创作的主力;可灵版接口已实现但从未接入流程
|
||
docs:
|
||
- source: qwen
|
||
slug: developer-guides-image-generation-wan-image-editing
|
||
title: 图像编辑 - 万相2.7/2.6/2.5(多图输入多图输出)
|
||
- source: kling
|
||
slug: multiImage2Image
|
||
title: 可灵·多图参考生图
|
||
- id: image_edit
|
||
name: 图像编辑(指令)
|
||
category: image
|
||
description: 文本指令修改图片(换主体 / 换环境 / 改细节),保留其余部分
|
||
input:
|
||
prompt: string
|
||
ref_images: list[file]
|
||
output:
|
||
image_path: string
|
||
params_schema:
|
||
size:
|
||
type: enum
|
||
options:
|
||
- 1K
|
||
- 2K
|
||
default: 2K
|
||
label: 分辨率档
|
||
providers:
|
||
- id: qwen
|
||
name: 千问AI平台·Qwen-Image-Edit
|
||
api_key_ref: aliyun.api_key
|
||
model: qwen-image-3.0-pro
|
||
default: true
|
||
- id: qwen
|
||
name: 千问AI平台·Wan 2.5 图像编辑
|
||
api_key_ref: aliyun.api_key
|
||
model: wan2.5-i2i-preview
|
||
defaults:
|
||
provider: qwen
|
||
model: qwen-image-3.0-pro
|
||
execution: remote
|
||
status: ready
|
||
impl: 待接(同步接口 ImageGeneration.call 支持 text+image 混排)
|
||
docs:
|
||
- source: qwen
|
||
slug: developer-guides-image-generation-image-editing
|
||
title: 图像编辑
|
||
- id: image_inpaint
|
||
name: 局部重绘
|
||
category: image
|
||
description: 给定原图 + 涂抹掩码 + 描述,只重绘指定区域
|
||
input:
|
||
prompt: string
|
||
image: file
|
||
mask: file
|
||
output:
|
||
image_path: string
|
||
params_schema: {}
|
||
providers:
|
||
- id: qwen
|
||
name: 千问AI平台·wanx-x-painting
|
||
api_key_ref: aliyun.api_key
|
||
model: wanx-x-painting
|
||
default: true
|
||
defaults:
|
||
provider: qwen
|
||
execution: remote
|
||
status: ready
|
||
impl: 待接
|
||
docs:
|
||
- source: qwen
|
||
slug: developer-guides-image-generation-image-inpainting
|
||
title: 图像局部重绘
|
||
- id: image_outpaint
|
||
name: 画面扩展(扩图)
|
||
category: image
|
||
description: 按宽高比 / 比例 / 方向扩展画面,或旋转扩图
|
||
input:
|
||
image: file
|
||
output:
|
||
image_path: string
|
||
params_schema:
|
||
expand_ratio:
|
||
type: number
|
||
default: 1.5
|
||
label: 扩展比例
|
||
providers:
|
||
- id: qwen
|
||
name: 千问AI平台·image-out-painting
|
||
api_key_ref: aliyun.api_key
|
||
model: image-out-painting
|
||
default: true
|
||
defaults:
|
||
provider: qwen
|
||
execution: remote
|
||
status: ready
|
||
impl: 待接
|
||
docs:
|
||
- source: qwen
|
||
slug: developer-guides-image-generation-image-out-painting
|
||
title: 图像画面扩展
|
||
- id: image_erase
|
||
name: 擦除补全
|
||
category: image
|
||
description: 保留背景的同时擦除指定区域(去杂物 / 去路人)
|
||
input:
|
||
image: file
|
||
mask: file
|
||
keep_mask: file?
|
||
output:
|
||
image_path: string
|
||
params_schema: {}
|
||
providers:
|
||
- id: qwen
|
||
name: 千问AI平台·图像擦除补全
|
||
api_key_ref: aliyun.api_key
|
||
model: image-erase-completion
|
||
default: true
|
||
defaults:
|
||
provider: qwen
|
||
execution: remote
|
||
status: ready
|
||
impl: 待接
|
||
docs:
|
||
- source: qwen
|
||
slug: developer-guides-image-generation-image-erase-completion
|
||
title: 图像擦除补全
|
||
- id: image_style_transfer
|
||
name: 图像风格迁移
|
||
category: image
|
||
description: 把写实图转成指定美术风格(漫画 / 3D / 国风 / 纸艺 …)
|
||
input:
|
||
image: file
|
||
style: string
|
||
output:
|
||
image_path: string
|
||
params_schema: {}
|
||
providers:
|
||
- id: qwen
|
||
name: 千问AI平台·万相2.1 通用编辑(风格迁移)
|
||
api_key_ref: aliyun.api_key
|
||
model: wanx2.1-imageedit
|
||
default: true
|
||
- id: qwen
|
||
name: 千问AI平台·Wan(背景生成/风格)
|
||
api_key_ref: aliyun.api_key
|
||
model: wan2.7-image-pro
|
||
defaults:
|
||
provider: qwen
|
||
execution: remote
|
||
status: ready
|
||
impl: 待接
|
||
docs:
|
||
- source: qwen
|
||
slug: developer-guides-image-generation-wan21-image-editing
|
||
title: 万相2.1 通用图像编辑(含风格迁移)
|
||
- id: sketch_to_image
|
||
name: 涂鸦作画
|
||
category: image
|
||
description: 手绘草图 + 文字描述 → 成品画面
|
||
input:
|
||
image: file
|
||
prompt: string
|
||
output:
|
||
image_path: string
|
||
params_schema: {}
|
||
providers:
|
||
- id: qwen
|
||
name: 千问AI平台·涂鸦作画
|
||
api_key_ref: aliyun.api_key
|
||
model: wanx-sketch-to-image
|
||
default: true
|
||
defaults:
|
||
provider: qwen
|
||
execution: remote
|
||
status: ready
|
||
impl: 待接
|
||
docs:
|
||
- source: qwen
|
||
slug: developer-guides-image-generation-sketch-to-image
|
||
title: 涂鸦作画
|
||
- id: background_generate
|
||
name: 背景生成
|
||
category: image
|
||
description: 为商品/人物图生成高质量背景(文本引导 / 图像引导 / 边缘引导)
|
||
input:
|
||
image: file
|
||
prompt: string
|
||
output:
|
||
image_path: string
|
||
params_schema: {}
|
||
providers:
|
||
- id: qwen
|
||
name: 千问AI平台·图像背景生成
|
||
api_key_ref: aliyun.api_key
|
||
model: wanx-background-generation
|
||
default: true
|
||
defaults:
|
||
provider: qwen
|
||
execution: remote
|
||
status: ready
|
||
impl: 待接
|
||
docs:
|
||
- source: qwen
|
||
slug: developer-guides-image-generation-background-generation
|
||
title: 图像背景生成
|
||
- id: virtual_model
|
||
name: 虚拟模特 / 换装
|
||
category: image
|
||
description: 保持真人站姿不变,替换背景与模特(服装试穿 / 模特图批量生成)
|
||
input:
|
||
image: file
|
||
template: file
|
||
output:
|
||
image_path: string
|
||
params_schema: {}
|
||
providers:
|
||
- id: qwen
|
||
name: 千问AI平台·虚拟模特
|
||
api_key_ref: aliyun.api_key
|
||
model: wanx-virtualmodel
|
||
default: true
|
||
defaults:
|
||
provider: qwen
|
||
execution: remote
|
||
status: ready
|
||
impl: 待接
|
||
docs:
|
||
- source: qwen
|
||
slug: developer-guides-image-generation-virtual-model
|
||
title: 虚拟模特生成
|
||
- id: person_segment
|
||
name: 人物分割(抠图)
|
||
category: image
|
||
description: 识别图中人物并输出像素级掩码(抠人 / 合成前置)
|
||
input:
|
||
image: file
|
||
output:
|
||
mask_path: string
|
||
params_schema: {}
|
||
providers:
|
||
- id: qwen
|
||
name: 千问AI平台·人物实例分割
|
||
api_key_ref: aliyun.api_key
|
||
model: person-instance-segmentation
|
||
default: true
|
||
defaults:
|
||
provider: qwen
|
||
execution: remote
|
||
status: ready
|
||
impl: 待接
|
||
docs:
|
||
- source: qwen
|
||
slug: developer-guides-image-generation-person-instance-segmentation
|
||
title: 人物实例分割
|
||
- id: ref_to_video
|
||
name: 参考驱动生视频(R2V)★
|
||
category: video
|
||
description: 参考图/视频(最多 5 个混合)+ 文本 → 视频;可同时给角色图 + 场景图 + 首帧,还可绑音色(reference_voice)
|
||
input:
|
||
prompt: string
|
||
media: list[{type,url}]
|
||
output:
|
||
video_path: string
|
||
params_schema:
|
||
resolution:
|
||
type: enum
|
||
options:
|
||
- 720P
|
||
- 1080P
|
||
default: 720P
|
||
label: 清晰度
|
||
duration:
|
||
type: number
|
||
min: 2
|
||
max: 10
|
||
default: 5
|
||
label: 时长(秒)
|
||
ratio:
|
||
type: enum
|
||
options:
|
||
- '16:9'
|
||
- '9:16'
|
||
- '1:1'
|
||
default: '9:16'
|
||
label: 宽高比
|
||
providers:
|
||
- id: qwen
|
||
name: 千问AI平台·Wan2.7-R2V(5 参考 + 音色)
|
||
api_key_ref: aliyun.api_key
|
||
model: wan2.7-r2v
|
||
default: true
|
||
- id: qwen
|
||
name: 千问AI平台·Wan2.6-R2V-Flash(¥0.3/秒)
|
||
api_key_ref: aliyun.api_key
|
||
model: wan2.6-r2v-flash
|
||
defaults:
|
||
provider: qwen
|
||
model: wan2.6-r2v-flash
|
||
resolution: 720P
|
||
duration: 5
|
||
execution: remote
|
||
status: ready
|
||
impl: 待接
|
||
docs:
|
||
- source: qwen
|
||
slug: api-reference-video-generation-wan27-image-to-video-create-task
|
||
title: Wan 2.7 参考生视频
|
||
- id: keyframe_video
|
||
name: 首尾帧生视频(KF2V)★
|
||
category: video
|
||
description: 首帧图 + 尾帧图 + 过渡描述 → 平滑过渡视频(固定 5 秒)—— 关键帧 → 视频的主力
|
||
input:
|
||
prompt: string?
|
||
first_frame_url: file
|
||
last_frame_url: file
|
||
output:
|
||
video_path: string
|
||
params_schema:
|
||
resolution:
|
||
type: enum
|
||
options:
|
||
- 480P
|
||
- 720P
|
||
- 1080P
|
||
default: 480P
|
||
label: 清晰度
|
||
duration:
|
||
type: number
|
||
default: 5
|
||
label: 时长(秒) · 固定 5
|
||
template:
|
||
type: string
|
||
default: ''
|
||
label: 特效模板(填了则只需首帧)
|
||
providers:
|
||
- id: qwen
|
||
name: 千问AI平台·Wan2.2-KF2V-Flash(¥0.1/秒·480P)
|
||
api_key_ref: aliyun.api_key
|
||
model: wan2.2-kf2v-flash
|
||
default: true
|
||
- id: qwen
|
||
name: 千问AI平台·Wan2.1-KF2V-Plus
|
||
api_key_ref: aliyun.api_key
|
||
model: wanx2.1-kf2v-plus
|
||
defaults:
|
||
provider: qwen
|
||
model: wan2.2-kf2v-flash
|
||
resolution: 480P
|
||
execution: remote
|
||
status: ready
|
||
impl: 待接
|
||
docs:
|
||
- source: qwen
|
||
slug: api-reference-video-generation-wan-image-to-video-first-last-frames-create-task
|
||
title: Wan — 首尾帧图生视频
|
||
- id: video_style_transform
|
||
name: 视频风格重绘
|
||
category: video
|
||
description: 把视频转成 8 种艺术风格(日式漫画 / 美式漫画 / 清新漫画 / 3D卡通 / 国风 / 纸艺 / 简易插画 …)
|
||
input:
|
||
video_url: file
|
||
output:
|
||
video_path: string
|
||
params_schema:
|
||
style:
|
||
type: enum
|
||
options:
|
||
- 0 日式漫画
|
||
- 1 美式漫画
|
||
- 2 清新漫画
|
||
- 3 3D卡通
|
||
- 4 国风卡通
|
||
- 5 纸艺风格
|
||
- 6 简易插画
|
||
- '7'
|
||
default: 3 3D卡通
|
||
label: 目标风格
|
||
animate_emotion:
|
||
type: bool
|
||
default: false
|
||
label: 情绪表情迁移
|
||
use_SR:
|
||
type: bool
|
||
default: false
|
||
label: 超分辨率增强
|
||
min_len:
|
||
type: enum
|
||
options:
|
||
- 720
|
||
- 540
|
||
default: 540
|
||
label: 短边分辨率
|
||
providers:
|
||
- id: qwen
|
||
name: 千问AI平台·视频风格重绘
|
||
api_key_ref: aliyun.api_key
|
||
model: video-style-transform
|
||
default: true
|
||
defaults:
|
||
provider: qwen
|
||
execution: remote
|
||
status: ready
|
||
impl: 待接
|
||
docs:
|
||
- source: qwen
|
||
slug: api-reference-video-generation-video-style-transform-create-task
|
||
title: 视频风格重绘
|
||
- id: video_edit
|
||
name: 统一视频编辑
|
||
category: video
|
||
description: 一个接口靠 function 切换五大能力:多图参考 / 视频重绘 / 局部编辑 / 视频续写 / 画面扩展
|
||
input:
|
||
function: enum
|
||
prompt: string
|
||
ref_images_url: list[file]
|
||
video_url: file?
|
||
mask_*: any
|
||
output:
|
||
video_path: string
|
||
params_schema:
|
||
function:
|
||
type: enum
|
||
options:
|
||
- 多图参考
|
||
- 视频重绘
|
||
- 局部编辑
|
||
- 视频续写
|
||
- 画面扩展
|
||
default: 局部编辑
|
||
label: 编辑类型
|
||
strength:
|
||
type: number
|
||
default: 0.8
|
||
label: 强度
|
||
providers:
|
||
- id: qwen
|
||
name: 千问AI平台·Wan 统一视频编辑
|
||
api_key_ref: aliyun.api_key
|
||
model: wan-video-editing
|
||
default: true
|
||
defaults:
|
||
provider: qwen
|
||
execution: remote
|
||
status: ready
|
||
impl: 待接
|
||
docs:
|
||
- source: qwen
|
||
slug: openapi-wan-video-editing
|
||
title: Wan 统一视频编辑
|
||
- id: character_swap
|
||
name: 视频换人(保留场景光线)
|
||
category: video
|
||
description: 把我的角色图换到别人的视频里,保留原视频的场景、光线与色调
|
||
input:
|
||
image_url: file
|
||
video_url: file
|
||
output:
|
||
video_path: string
|
||
params_schema:
|
||
mode:
|
||
type: enum
|
||
options:
|
||
- wan-std
|
||
- wan-pro
|
||
default: wan-std
|
||
label: 模式(std 快/便宜 · pro 专业)
|
||
check_image:
|
||
type: bool
|
||
default: true
|
||
label: 图片合规检测
|
||
providers:
|
||
- id: qwen
|
||
name: 千问AI平台·视频换脸
|
||
api_key_ref: aliyun.api_key
|
||
model: wan-character-swap
|
||
default: true
|
||
defaults:
|
||
provider: qwen
|
||
mode: wan-std
|
||
execution: remote
|
||
status: ready
|
||
impl: 待接
|
||
docs:
|
||
- source: qwen
|
||
slug: openapi-wan-character-swap
|
||
title: Wan 视频换脸
|