Douyin Upload Skill
Overview
Use this skill to publish local videos to Douyin with a deterministic CLI flow:
- Validate local dependencies and env.
- OAuth authorize and store encrypted token locally.
- Prepare video metadata and transcript from local audio.
- Generate 3 caption candidates in chat from transcript.
- Confirm or edit caption, then publish.
- If official publish permission is unavailable, export an outbox package for manual publish.
Use the script at <skill_root>/scripts/douyin.js.
Required Environment
Set these environment variables before auth or publish:
DOUYIN_CLIENT_KEYDOUYIN_CLIENT_SECRETDOUYIN_REDIRECT_URI
Optional overrides:
DOUYIN_SCOPEDOUYIN_TOKEN_ENC_KEYDOUYIN_ASR_MODE(api/whisper-gpu/whisper-cpu)DOUYIN_ASR_API_URLDOUYIN_ASR_API_MODELDOUYIN_ASR_API_KEYDOUYIN_WHISPER_BINDOUYIN_WHISPER_MODEL_PATHDOUYIN_FFMPEG_BINDOUYIN_FFPROBE_BIN
Workflow
- Run dependency checks:
node <skill_root>/scripts/douyin.js doctor
- Authorize account (manual code paste flow):
node <skill_root>/scripts/douyin.js auth
- Prepare transcript and metadata from a local video path. Accept both Linux and Windows path formats.
node <skill_root>/scripts/douyin.js prepare --video "E:\\videos\\demo.mp4"
- Create 3 caption candidates from
transcript.textwith this structure:
- Line 1: title hook
- Line 2-3: concise description
- Final line: 2-5 hashtags
-
Ask user to select or edit one final caption.
-
Publish with explicit visibility and confirmation policy:
node <skill_root>/scripts/douyin.js publish \
--video "E:\\videos\\demo.mp4" \
--text "<final caption>" \
--private-status 0 \
--auto-confirm false
Command Behavior
doctor: reports dependency and env readiness plus install hints.auth: opens OAuth URL, accepts pasted callback URL orcode, stores encrypted token.prepare: returns metadata, transcript, and ASR failure detail (without stopping publish flow).publish: uploads and creates video via official API. If permission-like API errors occur, writes fallback files under outbox and returnsmode: fallback.config: stores persistent settings (defaultPrivateStatus,autoConfirm,whisperBin,whisperModelPath,outboxDir, etc.).
Caption Rules
Before publish:
- Keep final text length <= 1000.
- Always show the final draft to the user.
- If
auto-confirmis false, require explicit user confirmation in terminal.
Output Contracts
Treat script stdout as JSON. Always parse and branch by:
okcommandmode(officialorfallbackforpublish)asrError(optional inprepare)