Skip to main content

narrator-ai-cli

Create AI-narrated film/drama commentary videos via CLI. Two workflow paths (Original & Adapted narration), 93 movies, 146 BGM tracks, 63 dubbing voices in 11 languages, 90+ narration templates. Use when creating narration videos, film commentary, short drama dubbing, or video production.

Aller à l'installation

Informations de source

Dépôt
NarratorAI-Studio/narrator-ai-cli
Dernière activité de la source
1 avril 2026 à 08:50
Langue détectée de SKILL.md
anglais
Étoiles
130
Forks
22

Options d'installation

Le prompt qui vérifie d'abord la source est sélectionné par défaut. Vous pouvez passer à une commande directe ou télécharger une copie locale.

Vérifiez les fichiers source

Lisez SKILL.md et les fichiers associés affichés par SkillsMP avant de décider de l'installer.

Explorateur de fichiers
2 fichiers

Affichage de SKILL.md

SKILL.md
Instructions source · Aperçu en lecture seule
name
narrator-ai-cli
version
1.0.0
license
MIT
description
Create AI-narrated film/drama commentary videos via CLI. Two workflow paths (Original & Adapted narration), 93 movies, 146 BGM tracks, 63 dubbing voices in 11 languages, 90+ narration templates. Use when creating narration videos, film commentary, short drama dubbing, or video production.
user-invocable
true
tags
["video-narration","film-commentary","ai-video","short-drama","content-creation","dubbing","tts","video-production"]
metadata
{"openclaw":{"emoji":"🎬","requires":{"bins":"[Truncated]","primaryEnv":"[Truncated]"}}}
# narrator-ai-cli Skill You have access to `narrator-ai-cli`, a CLI tool for the Narrator AI video narration API. Always use `--json` flag for all commands to get structured output you can parse. ## Prerequisites The CLI must be configured before use. Check with: ```bash narrator-ai-cli config show ``` If not configured, set up with: ```bash narrator-ai-cli config set app_key <app_key> ``` Server defaults to `https://openapi.jieshuo.cn` — no need to configure. **Need an app_key or help with setup?** Contact us to get started: - 📧 Email: merlinyang@gridltd.com - 💬 WeChat: ![联系客服](imgs/contact.png) ## Core Rules 1. **ALWAYS use `--json`** for all commands. Parse the JSON output to extract values for next steps. 2. **NEVER fabricate data** — never guess file IDs, movie info, or voice IDs. Always query from CLI commands. 3. **ASK user to choose** when there are multiple options (pre-built vs custom, which template, which movie, etc.). 4. **Poll task status** — tasks are async. After creation, poll with `narrator-ai-cli task query <task_id> --json` until `status` is `2` (success) or `3` (failed). 5. **video-composing order_num source differs by path**: - Standard Path: use `generate-writing`'s `task_order_num` (NOT clip-data's) - Fast Path: use `fast-clip-data`'s `task_order_num` 6. **dubbing list returns `id` and `type`** — pass `id` as `dubbing`, pass `type` as `dubbing_type`. They are two separate fields. 7. **negative_oss_key = video_oss_key** — always set `negative_oss_key` to the same value as `video_oss_key` in episodes_data. 8. **search-movie may take 60+ seconds** — this is normal (Gradio backend). ## Decision Points (ASK USER) Before starting any workflow, you need to help the user make the following choices. **Present the options and let the user decide. Do NOT pick for them.** ### Decision 1: Which workflow path? ASK: "请选择工作流路径:" - **二创文案**: 爆款学习 → 生成解说文案 → 生成剪辑数据 → 合成视频 → 视觉模板(可选) - Based on existing reference video style, generates adapted narration - Suitable when: user wants to recreate content based on reference material - **原创文案** (faster & cheaper): 快速文案 → 快速剪辑数据 → 合成视频 → 视觉模板(可选) - Generates original narration from movie info + narration template - Three sub-modes: 热门影视(hot drama), 原声混剪(original mix), 冷门/新剧(new drama) - Suitable when: user wants original narration, faster speed, lower cost ### Decision 2: Narration style — pre-built template or custom learning? ASK: "解说风格:使用预置模板还是自定义学习?" - **Option A: Pre-built template** (recommended, 90+ templates across 12 genres) ```bash narrator-ai-cli task narration-styles --json # or filter: narrator-ai-cli task narration-styles --genre <genre> --json ``` Show the list to user, let them pick one. The `id` field is the `learning_model_id`. - **Option B: Custom learning** (popular-learning task, Standard Path only) Requires user to provide a reference video + SRT. The output `learning_model_id` is used in generate-writing. ### Decision 3: Movie source files — pre-built material or user upload? ASK: "电影素材:使用预置素材还是自己上传的文件?" - **Option A: Pre-built materials** (93 movies ready to use) ```bash narrator-ai-cli material list --json # or search: narrator-ai-cli material list --search "<movie_name>" --json # or filter: narrator-ai-cli material list --genre <genre> --json ``` Show results to user. Each entry has `video_id` and `srt_id`. - Use `video_id` as `video_oss_key` AND `negative_oss_key` - Use `srt_id` as `srt_oss_key` - **Option B: User's uploaded files** ```bash narrator-ai-cli file list --json # or search: narrator-ai-cli file list --search "<keyword>" --json # or transfer by link: narrator-ai-cli file transfer --link "<url>" --json ``` User picks video and SRT files from their cloud storage. ### Decision 4: BGM — pre-built track or user upload? ASK: "背景音乐:使用预置BGM还是自己上传的音频?" - **Option A: Pre-built BGM** (146 tracks) ```bash narrator-ai-cli bgm list --json # or search: narrator-ai-cli bgm list --search "<keyword>" --json ``` Show results to user. The `id` field is the `bgm` parameter value. - **Option B: User's uploaded audio** ```bash narrator-ai-cli file list --json ``` User picks an audio file. Use its `file_id` as the `bgm` parameter. ### Decision 5: Dubbing voice — which voice and language? ASK: "配音角色:请选择配音语言和角色" ```bash # First show available languages narrator-ai-cli dubbing languages --json # Then list voices for chosen language narrator-ai-cli dubbing list --lang <language> --json # Or filter by genre recommendation narrator-ai-cli dubbing list --tag <genre_tag> --json ``` Show results to user. From the selected voice: - `id` field → pass as `dubbing` parameter - `type` field → pass as `dubbing_type` parameter **There is no "custom upload" option for dubbing — always pick from the pre-built list.** (Users can create custom voices via `voice-clone` task separately.) ### Decision 6: Visual template (optional)? ASK: "是否需要应用视觉模板?(可选步骤)" - **Yes**: Pick a template ```bash narrator-ai-cli task templates --json ``` Show results to user, let them pick. The `name` field goes into `template_name` list. - **No**: Skip magic-video step. ## Workflow Path 1: 二创文案 ``` popular-learning(optional) -> generate-writing -> clip-data -> video-composing -> magic-video(optional) ``` ### Step 1: Get learning_model_id Based on Decision 2: ```bash # Option A: Pre-built template (recommended) narrator-ai-cli task narration-styles --json # -> user picks one -> learning_model_id = selected item's "id" # Option B: Custom learning narrator-ai-cli task create popular-learning --json -d '{ "video_srt_path": "<srt_file_id from material or file list>", "video_path": "<video_file_id from material or file list>" }' # Poll until done -> extract learning_model_id from results ``` ### Step 2: Generate Writing ```bash # 2a. Search movie info (for confirmed_movie_json / story_info) narrator-ai-cli task search-movie "<movie_name>" --json # Show 3 results to user, let them pick one # 2b. Get source files (based on Decision 3) # Option A: narrator-ai-cli material list --search "<movie_name>" --json # Option B: narrator-ai-cli file list --json # -> user picks video and SRT files # 2c. Create task narrator-ai-cli task create generate-writing --json -d '{ "learning_model_id": "<from step 1>", "learning_srt": "", "native_video": "", "native_srt": "", "playlet_name": "<movie_name>", "playlet_num": "1", "target_platform": "抖音", "vendor_requirements": "", "task_count": 1, "target_character_name": "<ASK user for main character name>", "story_info": "", "episodes_data": [{"video_oss_key": "<video_id>", "srt_oss_key": "<srt_id>", "negative_oss_key": "<video_id>", "num": 1}] }' # Poll -> extract task_order_num and results.file_ids[0] ``` ### Step 3: Generate Clip Data ```bash # 3a. Get BGM (based on Decision 4) # Option A: narrator-ai-cli bgm list --json -> user picks -> bgm = selected "id" # Option B: narrator-ai-cli file list --json -> user picks audio -> bgm = selected "file_id" # 3b. Get dubbing voice (Decision 5) # narrator-ai-cli dubbing list --lang <lang> --json -> user picks # -> dubbing = selected "id", dubbing_type = selected "type" # 3c. Create task narrator-ai-cli task create clip-data --json -d '{ "order_num": "<task_order_num from step 2>", "bgm": "<from Decision 4>", "dubbing": "<id from Decision 5>", "dubbing_type": "<type from Decision 5>" }' # Poll -> extract results.file_ids[0] ``` ### Step 4: Video Composing **IMPORTANT**: `order_num` is from step 2 (generate-writing), NOT step 3 (clip-data). ```bash narrator-ai-cli task create video-composing --json -d '{ "order_num": "<task_order_num from step 2 (generate-writing)>", "bgm": "<same bgm as step 3>", "dubbing": "<same dubbing as step 3>", "dubbing_type": "<same dubbing_type as step 3>" }' # Poll -> extract video URLs from results ``` ### Step 5 (Optional): Magic Video Based on Decision 6: ```bash # List visual templates narrator-ai-cli task templates --json # -> user picks template name # Apply template narrator-ai-cli task create magic-video --json -d '{ "task_id": "<task_id from step 4>", "template_name": ["<selected template name>"] }' ``` ## Workflow Path 2: 原创文案 (faster & cheaper) ``` search-movie -> fast-writing -> fast-clip-data -> video-composing -> magic-video(optional) ``` ### Step 0: Prepare ```bash # Get narration style template (Decision 2) narrator-ai-cli task narration-styles --json # -> user picks one -> learning_model_id # Search movie info (required for target_mode=1) narrator-ai-cli task search-movie "<movie_name>" --json # -> show 3 results, user picks one -> confirmed_movie_json ``` ### Step 1: Fast Writing (原创文案) ASK user to choose a mode: - **Mode 1 - 热门影视** (Hot Drama): generates original narration from movie info. Requires `confirmed_movie_json` from `search-movie`. - **Mode 2 - 原声混剪** (Original Mix): mixes original audio with narration. Requires `episodes_data[{srt_oss_key, num}]`. - **Mode 3 - 冷门/新剧** (New/Niche Drama): for lesser-known content. Requires `episodes_data[{srt_oss_key, num}]`. ```bash # Mode 1 example (most common): narrator-ai-cli task create fast-writing --json -d '{ "learning_model_id": "<from Decision 2>", "target_mode": "1", "playlet_name": "<movie_name>", "model": "flash", "language": "Chinese (中文)", "perspective": "third_person", "confirmed_movie_json": <user-selected search result> }' # Mode 2/3 example: narrator-ai-cli task create fast-writing --json -d '{ "learning_model_id": "<from Decision 2>", "target_mode": "2", "playlet_name": "<movie_name>", "episodes_data": [{"srt_oss_key": "<srt_file_id>", "num": 1}] }' # Poll -> extract task_id and results.file_ids[0] ``` ### Step 2: Fast Clip Data ```bash # 2a. Get BGM (Decision 4) # Option A: narrator-ai-cli bgm list --json -> user picks # Option B: narrator-ai-cli file list --json -> user picks audio # 2b. Get dubbing voice (Decision 5) # narrator-ai-cli dubbing list --lang <lang> --json -> user picks # 2c. Get source files (Decision 3) # Option A: narrator-ai-cli material list --search "<movie_name>" --json # Option B: narrator-ai-cli file list --json # 2d. Create task narrator-ai-cli task create fast-clip-data --json -d '{ "task_id": "<task_id from step 1>", "file_id": "<results.file_ids[0] from step 1>", "bgm": "<from Decision 4>", "dubbing": "<id from Decision 5>", "dubbing_type": "<type from Decision 5>", "episodes_data": [{"video_oss_key": "<video_id>", "srt_oss_key": "<srt_id>", "negative_oss_key": "<video_id>", "num": 1}] }' # Poll -> extract task_order_num ``` ### Step 3: Video Composing
Voir sur GitHub
Ce SKILL.md est tres volumineux, SkillsMP affiche donc ici seulement la premiere section. Voir sur GitHub