{ "name": "douyin-video-transcript", "displayName": "抖音视频逐字稿转写", "description": "输入视频文件、视频 URL 或人工文案,通过 provider 抽象输出统一 transcript.json/txt,供抖音口播爆款拆解使用。", "category": "douyin", "version": "0.2.2", "type": "local-script", "execution": { "kind": "command", "command": "node", "args": [ "scripts/tools/openclaw-tool-runner.js", "--tool", "douyin-video-transcriber.js", "--result-prefix", "DOUYIN_TRANSCRIPT_RESULT", "--", "--provider", "{{provider}}", "--order-id", "{{orderId}}", "--aweme-id", "{{awemeId}}", "--video-url", "{{videoUrl}}", "--douyin-url", "{{douyinUrl}}", "--media-url", "{{mediaUrl}}", "--file", "{{file}}", "--text", "{{text}}", "--transcript", "{{transcript}}", "--output", "{{output}}", "--download-media", "{{downloadMedia}}", "--extract-audio", "{{extractAudio}}", "--max-download-mb", "{{maxDownloadMb}}", "--download-timeout-ms", "{{downloadTimeoutMs}}", "--download-idle-timeout-ms", "{{downloadIdleTimeoutMs}}", "--language", "{{language}}", "--model", "{{model}}", "--timestamps", "{{timestamps}}", "--duration-ms", "{{durationMs}}", "--role-type", "{{roleType}}", "--role-num", "{{roleNum}}", "--pd", "{{pd}}", "--poll-interval-ms", "{{pollIntervalMs}}", "--max-polls", "{{maxPolls}}", "--ffmpeg-path", "{{ffmpegPath}}", "--ffprobe-path", "{{ffprobePath}}", "--gateway-base-url", "{{gatewayBaseUrl}}", "--gateway-max-duration-ms", "{{gatewayMaxDurationMs}}" ], "cwd": "{{workspaceRoot}}", "outputParser": { "type": "stdout-prefix-json", "prefix": "DOUYIN_TRANSCRIPT_RESULT=" }, "exitCodes": { "0": "ok | media_resolved | needs_transcription | needs_provider_config | needs_media_processing | transcription_pending | transcription_failed", "1": "error" } }, "parameters": { "type": "object", "required": ["provider", "output"], "properties": { "provider": { "type": "string", "enum": ["manual", "openai", "iflytek-ist", "iflytek-gateway", "iflytek-ast", "none", "volcengine"], "default": "none" }, "orderId": { "type": "string", "description": "已有网关转写订单 ID;provider=iflytek-gateway 时可跳过上传直接查询" }, "awemeId": { "type": "string" }, "videoUrl": { "type": "string" }, "douyinUrl": { "type": "string", "description": "抖音分享链接,脚本会先解析视频详情并下载真实媒体" }, "mediaUrl": { "type": "string", "description": "已解析出的真实音频/视频媒体 URL" }, "file": { "type": "string" }, "text": { "type": "string" }, "transcript": { "type": "string" }, "output": { "type": "string" }, "downloadMedia": { "type": "boolean", "default": false, "description": "provider=none 时只解析/下载媒体,不调用 ASR" }, "extractAudio": { "type": "boolean", "default": false, "description": "强制用 ffmpeg 从视频中抽取 16k 单声道 WAV" }, "maxDownloadMb": { "type": "integer", "default": 200, "description": "媒体下载大小上限,单位 MB" }, "downloadTimeoutMs": { "type": "integer", "default": 120000 }, "downloadIdleTimeoutMs": { "type": "integer", "default": 30000 }, "language": { "type": "string", "default": "zh" }, "model": { "type": "string", "default": "gpt-4o-mini-transcribe" }, "timestamps": { "type": "boolean", "default": false }, "durationMs": { "type": "integer", "description": "讯飞 IST 必填,真实音频时长毫秒数" }, "roleType": { "type": "integer", "default": 1, "description": "讯飞 IST 说话人分离:0=关闭,1=通用角色分离,3=声纹角色分离" }, "roleNum": { "type": "integer", "default": 0, "description": "讯飞 IST 说话人数量:0=盲分,1-10=已知人数" }, "pd": { "type": "string", "default": "com", "description": "讯飞 IST 应用领域,默认通用 com" }, "pollIntervalMs": { "type": "integer", "default": 4000 }, "maxPolls": { "type": "integer", "default": 30 }, "ffmpegPath": { "type": "string", "default": "ffmpeg" }, "ffprobePath": { "type": "string", "default": "ffprobe" }, "gatewayBaseUrl": { "type": "string", "default": "https://server.fmode.cn/api/apig/transcription" }, "gatewayMaxDurationMs": { "type": "integer", "default": 480000, "description": "iflytek-gateway 单次转写时长上限,超过时不上传,返回 needs_media_processing。" } } }, "output": { "type": "object", "properties": { "status": { "type": "string" }, "provider": { "type": "string" }, "outputDir": { "type": "string" }, "files": { "type": "array" }, "orderId": { "type": "string" }, "awemeId": { "type": "string" }, "sourceFile": { "type": "string" }, "audioFile": { "type": "string" }, "mediaUrl": { "type": "string" }, "sourceKind": { "type": "string" }, "durationMs": { "type": "integer" }, "textLength": { "type": "integer" }, "segmentCount": { "type": "integer" }, "warningCount": { "type": "integer" } } }, "deployment": { "toolInstallPaths": [ "~/.openclaw/tools/douyin-video-transcriber.js", "~/.openclaw/workspace/scripts/tools/douyin-video-transcriber.js", "~/.openclaw/workspace/scripts/tools/openclaw-tool-runner.js" ] } }