name: douyin-video-transcript description: 抖音视频逐字稿转写技能,输入抖音分享链接、真实媒体 URL、本地音视频文件或人工文案,解析/下载媒体并通过 provider 输出统一 transcript.json/txt。需要语音转文字(ASR)时优先检测并使用独立技能 fmode-listen(Fmode 网关 ASR)。 version: 0.2.3
当本技能需要做语音/音频转文字(ASR)这一步时,优先使用独立技能 fmode-listen,不要在本技能里新增 ASR provider。fmode-listen 走 Fmode 网关 POST /api/listen/transcribe:newapi 计费、按音频真实时长扣费,讯飞凭据只在服务端,客户端只需一把 fmode token(且 runner 会自动读取 ~/.claude/settings.json 的 sk- token,不会再进旧付费弹窗死循环)。它是 iflytek-gateway 这条网关能力的正式独立技能版。
第 1 步:检测 fmode-listen 是否已安装(以下任一目录存在即算已装):
./.claude/skills/fmode-listen/~/.claude/skills/fmode-listen/(Windows:%USERPROFILE%\.claude\skills\fmode-listen\)npx --yes fmode-listen@latest check第 2 步:未安装则先安装:
npx --yes fmode-listen@latest workspacenpx --yes fmode-listen@latest install第 3 步:调用 fmode-listen 转写:
npx --yes fmode-listen@latest transcribe -- <音频或视频文件> --out result.json
兜底:本技能下方原有的
iflytek-gateway(apig) /iflytek-ist/openai等 provider 原样保留,仅在不便使用 fmode-listen 时作为后备;fmode 网关 ASR 的正式路径是 fmode-listen 技能。
为口播爆款拆解和每日稿件日报提供逐字稿输入。P0 支持两条路径:
transcript.json/txt。OpenClaw 正式调用应优先走 api-config.json 的 local-script 配置;Windows 手动执行时使用 $env:USERPROFILE\.openclaw\tools\douyin-video-transcriber.js。
如果运行器尝试执行本技能目录下的 index.js,该文件会自动转发到真实工具。若旧调用链误执行本技能目录下的 scripts/tools/douyin-video-transcriber.js,该兼容 shim 也会继续转发;正式入口仍以 api-config.json 为准。
| Provider | 状态 | 说明 |
|---|---|---|
manual |
可用 | 用户或上游流程提供逐字稿文本,包装成统一 schema |
none |
可用 | 不调用 ASR;可配 downloadMedia=true 只解析/下载抖音媒体 |
openai |
可用 | 调用 OpenAI audio transcription API;缺 OPENAI_API_KEY 时返回 needs_provider_config |
iflytek-ist |
可用待凭证验证 | 讯飞长语音转写,适合已录制的抖音视频/音频;需要 IFLYTEK_APP_ID、IFLYTEK_API_KEY、IFLYTEK_API_SECRET |
iflytek-gateway |
可用 | 走 server.fmode.cn/api/apig/transcription 网关;本地只需要 VOC token,不需要讯飞三件套 |
iflytek-ast |
预留 | 讯飞实时转录 WebSocket,适合直播/麦克风 PCM 流,不作为 P0 批量文件转写入口 |
volcengine |
预留 | 待确认火山资源权限后实现 |
输入 douyinUrl / videoUrl 为抖音分享页时,脚本会:
VOC_TOKEN / OPENCLAW_VOC_TOKEN / VOC_SOCIAL_TOKEN,或 ~/.openclaw/voc-credentials.json 的 vocToken。fetch_one_video_by_share_urlaweme_id,兜底 fetch_one_video_v3dynamic_audio_list.main_url;没有音频时选择 play_addr/download_addr 视频地址。douyin-video-detail.json。durationMs。脚本会优先使用参数,其次使用抖音视频详情里的 video.duration,最后尝试 ffprobe。ffmpeg 抽取 source-audio.wav。ffmpeg 时,视频输入会返回 needs_media_processing,不会伪装成已转写。provider=iflytek-gateway 使用文档里的 B 方案:
POST https://server.fmode.cn/api/apig/transcription/uploadPOST https://server.fmode.cn/api/apig/transcription/result上传字段:
audio: 音频文件durationMs: 音频时长毫秒数roleType: 默认 1roleNum: 默认 0查询字段:
orderId如果已有网关订单,可用 --order-id 直接查询,不重复上传。
node "$env:USERPROFILE\.openclaw\tools\douyin-video-transcriber.js" --provider none --douyin-url "https://v.douyin.com/xxx/" --download-media true --output outputs/transcript-media-check
node "$env:USERPROFILE\.openclaw\tools\douyin-video-transcriber.js" --provider iflytek-gateway --douyin-url "https://v.douyin.com/xxx/" --output outputs/transcript-gateway
node "$env:USERPROFILE\.openclaw\tools\douyin-video-transcriber.js" --provider iflytek-gateway --order-id "DKHJQ..." --output outputs/transcript-gateway-query
node "$env:USERPROFILE\.openclaw\tools\douyin-video-transcriber.js" --provider iflytek-ist --douyin-url "https://v.douyin.com/xxx/" --output outputs/transcript-iflytek
node "$env:USERPROFILE\.openclaw\tools\douyin-video-transcriber.js" --provider iflytek-ist --file sample.wav --duration-ms 120000 --output outputs/transcript-iflytek
node "$env:USERPROFILE\.openclaw\tools\douyin-video-transcriber.js" --provider manual --transcript transcript.txt --aweme-id 123 --output outputs/transcript-manual
transcript.jsontranscript.txtdouyin-video-detail.json关键字段:
status: ok / media_resolved / needs_transcription / needs_provider_config / needs_media_processing / transcription_pending / transcription_failedawemeIdsourceUrlmediaUrlsourceFileaudioFiledurationMstextsegmentswarnings将 transcript.json 放入日报 runner 的 --transcripts 输入后,douyin-speaking-daily-report 会按 awemeId 匹配视频,并在证据链中标注“逐字稿:已提供(provider)”。