SKILL.md 6.7 KB


name: douyin-video-transcript description: 抖音视频逐字稿转写技能,输入抖音分享链接、真实媒体 URL、本地音视频文件或人工文案,解析/下载媒体并通过 provider 输出统一 transcript.json/txt。需要语音转文字(ASR)时优先检测并使用独立技能 fmode-listen(Fmode 网关 ASR)。 version: 0.2.3

author: nkkj-BrainHack

抖音视频逐字稿转写

⭐ 语音转写优先用 fmode-listen 技能(必读,放在最前)

当本技能需要做语音/音频转文字(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\)
  • 或用一条命令校验(缺文件会报 missing):npx --yes fmode-listen@latest check

第 2 步:未安装则先安装:

  • 装到工作区:npx --yes fmode-listen@latest workspace
  • 装到用户级:npx --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 支持两条路径:

  1. 抖音爆款视频链接 -> VOC 解析视频详情 -> 找真实音频/视频媒体 URL -> 下载媒体 -> ASR 转写。
  2. 本地音视频文件或人工逐字稿 -> 标准化 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

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 为抖音分享页时,脚本会:

  1. 读取 VOC_TOKEN / OPENCLAW_VOC_TOKEN / VOC_SOCIAL_TOKEN,或 ~/.openclaw/voc-credentials.json 的 vocToken。
  2. 调用 VOC 抖音接口解析视频详情:
    • 优先 fetch_one_video_by_share_url
    • 若能提取 aweme_id,兜底 fetch_one_video_v3
  3. 从返回结构中优先选择音频候选,例如 dynamic_audio_list.main_url;没有音频时选择 play_addr/download_addr 视频地址。
  4. 下载真实媒体到输出目录,并写入 douyin-video-detail.json。
  5. 交给所选 provider 转写。

讯飞 IST 注意事项

  • 讯飞 IST 需要准确 durationMs。脚本会优先使用参数,其次使用抖音视频详情里的 video.duration,最后尝试 ffprobe。
  • 如果拿到的是视频文件而不是音频文件,脚本会尝试用 ffmpeg 抽取 source-audio.wav。
  • 当前没有 ffmpeg 时,视频输入会返回 needs_media_processing,不会伪装成已转写。
  • 推荐音频格式仍是 PCM WAV 16kHz/16bit/单声道;直接音频 URL 会先尝试送转写,但会附带格式兼容提醒。

讯飞网关模式

provider=iflytek-gateway 使用文档里的 B 方案:

  • POST https://server.fmode.cn/api/apig/transcription/upload
  • POST https://server.fmode.cn/api/apig/transcription/result

上传字段:

  • audio: 音频文件
  • durationMs: 音频时长毫秒数
  • roleType: 默认 1
  • roleNum: 默认 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.json
  • transcript.txt
  • 如果通过抖音链接解析,额外写入 douyin-video-detail.json

关键字段:

  • status: ok / media_resolved / needs_transcription / needs_provider_config / needs_media_processing / transcription_pending / transcription_failed
  • awemeId
  • sourceUrl
  • mediaUrl
  • sourceFile
  • audioFile
  • durationMs
  • text
  • segments
  • warnings

下游

将 transcript.json 放入日报 runner 的 --transcripts 输入后,douyin-speaking-daily-report 会按 awemeId 匹配视频,并在证据链中标注“逐字稿:已提供(provider)”。