@starreel/mcp 0.1.216 → 0.1.218
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/i18n/tools.en.json +4 -4
- package/dist/i18n/tools.zh-CN.json +4 -4
- package/dist/tools/guide-data.js +4 -4
- package/dist/tools/produce.js +10 -10
- package/openapi.json +6 -6
- package/package.json +1 -1
- package/server.json +2 -2
package/dist/i18n/tools.en.json
CHANGED
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
"get_capabilities_guide": "★Capability map (free · local · offline · no credits). **Call this first when you are new to this server, when a client asks “what can you do / where should we start”, or when you are unsure which tool fits the client’s materials**. Returns: entry_points(client has novel / mature script / wants external AI rewrite / finished storyboard table / own assets / voice sample / song / product / existing final cut to revise / wants to edit locally / multilingual → which tools to use and which path to avoid), pipeline(10-step production line, tools per step, free vs paid, review gates), review_gates(three free hard-gate rules), qa_tools(pick diagnostics and fixes by symptom), optional_boosts(optional enhancements and timing), billing(quote confirmation and free families), common_requests(client wording → action), local_postproduction(★full workflow when client wants to download shots to **their own computer** for color grading / third-party AI post / editing / scoring / subtitle burn-in / transition optimization / narration patch: phase order, execution location, per-shot/per-line audio checks, acceptance criteria), model_guide(★tested pros/cons, prices, selection steps and recommended combinations for image models and video engines—read before project model selection or when client asks “which model is better / why are hands bad / how to save money”), action_film(★workflow for action / fight / skill-demo films: asset images follow the rewrite backbone while storyboards use your own table, first frame freezes at wind-up, group adjacent action shots, trim draggy tails, engine tests and cost reference—read before action films or “can this reference video be made”). Pass section to fetch one part only. ★Tool descriptions answer “what does this tool do”; this tool answers “when should I use which tool”. If a client gives a finished storyboard table but you run set_script→rewrite_script and turn it into prose, you skipped this map.",
|
|
3
3
|
"list_project_options": "List all project creation options: project type(short drama/ad/MV/brand film), aspect ratio, video resolution, video engine(Seedance 2.5/MiniMax H3, with price and capability differences), with Chinese/English labels + descriptions + defaults. Call before create_drama, let the user choose, then pass keys to create_drama. Free.",
|
|
4
4
|
"create_drama": "Create a new short-drama project shell. ★Strongly recommended: set base project settings at creation—project_type/setting_brief(worldview · ERA LOCK)/ethnicity/aspect ratio/resolution, plus consistency anchors(cinematography_prompt/art_bible/visual_lock). All are free and form the foundation for full-pipeline consistency; creating an empty shell with title only will derail later generations and cause paid rework. Automatically creates N empty episodes from total_episodes, returns drama_id and episode_id per episode. Free.",
|
|
5
|
-
"set_script": "Set the **original script** (content) for an episode. This is the input for AI rewriting, not the final shootable draft. Free. Put synopsis/outline/self-written finished draft here; after setting it you **must call rewrite_script for AI rewriting**—do not skip rewriting and paste the draft directly into edit_rewritten_script (it will be rejected). ★★【Execution-mode master guide·read before starting】For dramas with a confirmed opening plan, first call get_production_plan and read autopilot: professional mode (pro, or autopilot.enabled=false, or plan not confirmed) → every later “tell the customer; proceed only after customer agrees” is literal; one-click (auto)/hybrid (custom) **managed stages** → do not ask the customer: proceed in order by get_pipeline_status next_action, self-confirm quotes within the hard budget cap, and after each layer still run review_* + agent QC; the review/QC returned autopilot.next_step tells you how to proceed for that layer (whitelisted error with auto_acknowledge:true / self-fix round number / pause and ask customer), follow it; for choices follow autopilot.default_decisions; autopilot.never_auto_actions (mode=replace, delete assets, overwrite customer-uploaded images, allow_era_ref_conflict, voice cloning, delivery acceptance) always require customer approval in every mode. ★In managed stages, re-generating frames for the same shot (generate_shot_frame) is capped at 3 rounds, re-generating videos (regenerate_shot_video / edit_video_shot) capped at 3 times; at the cap the platform returns 409 AUTOPILOT_SHOT_REGEN_LIMIT (no charge)—do not bypass with another tool; stop and ask the customer: if they agree to more, quote normally and pass customer_approved_more_regens:true when generating (grants another cap); if they accept the current result, continue, and pass acknowledge_review:true on the next paid call to record confirmation. 402 BUDGET_WOULD_EXCEED / 409 MODEL_UNAVAILABLE / 409 AUTOPILOT_SHOT_REGEN_LIMIT / 400 AUTOPILOT_MUST_ASK with must_ask_customer=true / non-empty pending_questions → pause and ask the customer **once with a consolidated summary** of get_autopilot_log pending_questions; customer-controlled stages follow professional-mode asking. After final cut, deliver to customer using get_autopilot_log report. ★Three-tier execution strategy (do not mix the tiers when asking the customer): ①【Basic project settings·free·mandatory foundation·set when creating the drama; do not create an empty shell】project_type/setting_brief (worldview·ERA LOCK)/ethnicity/aspect ratio and resolution, plus consistency anchors cinematography_prompt (cinematography DNA)·art_bible (art bible)·visual_lock (visual lock)—all free, the foundation driving full-chain consistency; if not set, all later generation drifts and rework costs money. Set directly with create_drama/update_project_settings. ★visual_lock/art_bible should only contain frame-level/world-level locks (camera language·environment·art tone·forbidden elements), **never pin clothing/hairstyle/appearance details for specific characters**—the only source of truth for character appearance is the character profiles from extract_assets (change via update_character); writing both inevitably conflicts: character sheets vs profiles, concept images vs visual lock, consistency gates reject by character sheet → concept images/shot frames get **structurally rejected repeatedly**, no number of rerolls will pass, pure wasted spend. ★★【Era contract·free·mandatory before image generation for non-contemporary or surreal subjects】The worldview in setting_brief is **free text**, only provides background and cannot constrain images; the real override stronger than visual lock is the **structured era contract**: use set_era_contract to set the episode tier (modern/republican/historical/fantasy/surreal), get_era_contract to read current value. **Unset means empty**—the platform can only stack words in prompts; modern objects appearing in ancient images, scene images rendered in the wrong era, are mostly caused by this being empty. ★Xianxia/fantasy/wonderland types **must use fantasy, not historical**: historical demands evidence-based realism and will mark glowing aura, floating terrain, non-human forms as “not era-compliant”, pulling images toward realistic antiquity. For a single scene exception (e.g. modern flashback in a fantasy world), use update_scene era_contract to override; scene-level overrides episode-level. ★★【Per-stage review protocol·all free·main line preventing waste, not optional】After each stage output, review first, tell the customer the conclusion verbatim, then proceed. **Five hard gates (failing causes 400 rejection; ④⑤ and agent QC below)**: ① after rewritten draft → review_script (before extract_assets / generate_storyboards); ② after storyboards → review_storyboards (before generate_frames); ③ after shot images → review_frames (before generate_videos). Each review returns review_token; pass it to downstream paid tools. Explain findings one by one to customer (code=issue type·shots=hit shot numbers·action=which tool to fix with); after fixing per action, **review again** before proceeding. If content changes after review → token invalidates automatically; re-review once (free). error blocks by default; only if the customer is explicitly informed and insists may you pass acknowledge_review:true (acknowledge_review only means the customer personally agreed; every execution mode requires explicit customer agreement, including managed). Managed stages may use auto_acknowledge:true only for whitelisted heuristic errors (see 【Execution-mode master guide】). **Soft guidance (non-blocking but strongly recommended, also free)**: before image/video generation run run_precheck (finds shots vendors will reject, prevents wasted spend)—★**for whole-drama scan, first run run_drama_precheck** (drama-level summary·free·read-only): get issue counts per episode and attention (which episodes to fix first), prioritize accordingly, then run run_precheck on those episodes for details; do not blindly scan episode by episode. Note not_covered—the drama-level scan skips the only lint requiring images; “0 drama issues” ≠ “everything checked”. ★After issues are found, do not blindly edit yourself: plan_precheck_fix lets the platform compute proposals → apply_precheck_fix commits selected ones (for managed=accept all according to execution mode: professional mode / unconfirmed plan / customer-controlled current stage → tell customer and proceed only after agreement; do not decide for them; managed current stage → do not ask, follow get_production_plan autopilot.default_decisions, platform records in get_autopilot_log); after storyboards run get_health_report; after character sheets are done use get_characters to verify every on-screen character has image/sheet; after frames use get_storyboards to inspect frame_status and fail_reason/fail_hint (fix failed shots before continuing; do not make videos from bad frames); after videos inspect video_status similarly; before final cut use get_pipeline_status to confirm no missing shots. ★**Never generate all the way through blindly**: pushing generate calls without review amplifies issues at every layer and can waste the whole episode; every image/video rework is charged. Reviews are all free; catching issues costs nothing. ★Changing clothing edits structured bindings: update_shot active_wardrobe_id (whole shot) / appearance_wardrobes (per character in multi-character shots), can override or clear—text description changes do not change clothes, and the customer need not edit on the website. ②【Production mainline·in order, no skipping·★storyboard before assets】set_script→rewrite_script→★review_script→extract_assets→storyboards (storyboard first·pure-text shot breakdown)→★review_storyboards→★Script discipline (endpoint-enforced, cannot be bypassed): all raw material (synopsis/outline/finished draft) goes in set_script, **must pass rewrite_script to produce the AI rewritten draft**—pasting a self-written script directly into edit_rewritten_script to bypass rewriting will be rejected with 400 (without a rewritten draft there is nothing to edit); extract_assets also requires the rewritten draft. All post-rewrite edits must use AI-output structured formats: script edits via edit_rewritten_script (polish/correct), character profiles via update_character, storyboards via update_shot/replace_shot_dialogue—do not replace the whole script again or write a second truth source in settings; conflicting truth sources are the #1 consistency accident. ★★**After one successful rewrite, do not rerun rewrite_script**: it restarts from the whole original, discards all current fixes, and the new version is not guaranteed to preserve fixed parts (three-version tests oscillate). To fix, use edit_rewritten_script targeted edits (get_script full text → change only those scenes, copy all else verbatim → submit whole text), free, instant, deterministic; if rerun by mistake, use get_script(include_previous=1) to recover the previous version. generate_portraits_and_sheets (character sheets + turnaround sheets·build after storyboards: first use delete_character to delete on-screen characters that **do not appear in any episode of the whole drama and are not planned for later episodes** before image generation—characters are drama-level; after deletion, every episode’s frame assembly will no longer include them; you cannot judge by this episode’s storyboards alone, keep if unsure (one character sheet costs far less than losing an identity anchor in a later episode); this step generates images for **all undeleted on-screen characters**, regardless of storyboard binding, and charges for all kept characters; off-screen voice characters (char_type=voiceover narrator/phone voice) do not get images and have no storyboard binding, **do not delete them**, dubbing still needs them)→★generate_color_script (color script·unified grading)→assign_voices (assign voice colors; if narrator/character library has no suitable voice → design_voice by description, then set_character_voice after sample confirmation)→★quote_scene_images+generate_scene_images (empty scene plates·mandatory before frames)→frames (default only first frames)→★tail_frame_plan (free·which shots need independent last frames)→frames(frame_type=last_frame)→★chain_frames (seams·dry_run:true first)→★review_frames→videos→generate_tts→compose; ★★【Do not skip seams·after last frames complete, before review_frames】After first/last frames are ready, call chain_frames(dry_run:true, free) to see the platform seam plan and estimated_points (copy free, reframe costs one image per seam), tell customer and after confirmation execute without dry_run; already chained seams are excluded from the plan, repeated calls do not double-charge. ★After execution, reframe is **async image generation**: use get_jobs to watch the first_frame generation rows for shots in the plan, wait until all pending/processing finish (for failed, inspect error_msg; use chain_shot_from for a single seam), then run review_frames—while the old first frame remains, get_storyboards frame_status is still ready and cannot show whether the new image is generating or failed. After get_jobs is clear, use get_storyboards to verify seam_state: replacement images rejected during promotion are not kept in get_jobs, that seam remains unchained (review_frames also reports seam_unchained); reconnect per its action. If you review before it lands, you review the old first frame; the token invalidates when the new first frame lands. Episodes with per-shot/batch frame generation usually were not auto-chained (get_storyboards seam_state=unchained means this); skipping it does not error—the cost is discontinuity between shots and jump cuts in final cut. ★★【Do not skip last frames·frame generation is two-pass】generate_frames defaults to first frames only. About 30% of shots have **end state ≠ start state** (large camera move/object released/state change); these need an independent last frame, and the criterion is platform-side, not guessable from storyboard text—therefore after first frames finish you must call the free tail_frame_plan once for the per-shot list, then fill with frame_type=last_frame (shots_needing_last_frame in generate_frames response is this number; if not 0, do not go directly to review_frames). Skipping does not error or block—the cost is those videos having only the first frame as anchor, leaving end state to the model: action incomplete, large camera moves end by returning to start composition. Production tests: in 32 episodes, 30 generated only first frames; 23 of those proceeded all the way through video. ★★【When last frames are blocked by TERMINAL_DESC_GATE: edit text, do not retry】For shots reporting “this shot is marked as state change but nowhere says what it looks like at the end”, use update_shot to write **what the image looks like at the end** into that shot’s last_frame_prompt, then regenerate the last frame. ★Better: **avoid hitting it**—before last frames, call get_storyboards and list all terminal_desc_missing=true shots for the episode at once (free), fill their last_frame_prompt first, then generate; zero rejections needed. Per-shot also possible via get_shot_prompts same field, but do not do that for dozens of shots. Retrying without the description is ineffective—the vendor prompt has no terminal-state segment, so it still draws the first-frame pose and will fail terminal review again, with normal charges each time (production test: last-frame success 9.4% without terminal text, 40.2% with it). Only for shots that truly “almost do not change” use generate_shot_frame allow_missing_terminal. ★★【Do not skip empty scene plates·third parties often miss this】Scene images are **background anchors**: every shot frame in the same scene anchors to them. Frames can still be generated without plates, with no error and no block—the cost is **the first shot of every scene has no background anchor at all** (platform fallback is “if missing image is discovered, generate one in background”; that generated plate is used by later shots in the same scene, but the triggering first shot cannot wait for it), and the first shot is often the tone-setting shot; backgrounds also drift among later shots. They pair with character sheets: character sheets anchor people, scene images anchor environments; whichever is missing drifts. Progress self-check: generate_scene_images step in get_pipeline_status (completed/total); review_storyboards also reports scene_plate_missing before frames. ★★【Do not skip turnaround sheets·character sheet ≠ turnaround sheet】A character sheet is a single-person single-image identity anchor; a turnaround sheet is a multi-view turnaround generated by the platform from the character sheet, the root consistency anchor for shot frames/videos (angle changes·lighting changes·clothing mostly depend on it). Frames can still be generated with only character sheets, no error—the cost is characters drift when angle changes and clothing differs every shot. Use generate_portraits_and_sheets for one-click two-step (each call advances one step; after character sheets are complete, call again to generate turnaround sheets), or call generate_character_sheets after character sheets. Progress self-check: get_pipeline_status generate_character_sheets step (completed/total, portrait_only=characters with only character sheets). ★Customer-provided images: character sheets must be single person, single image, single angle, no text; scene images must be empty scenes with no people and no overlay text—set_character_portrait/upload_scene_image auto-check and reject noncompliance with 422. ★Do not build character images/prop sheets/motion templates before storyboards—storyboards are pure text and need no images; the cast is finalized after storyboards, so delete non-appearing characters first to save (motion templates also must be after storyboards). Paid steps follow current quote confirmation flow. Ads additionally need add_product+generate_product_sheet; MV uses set_mv_lyrics→generate_mv_story→generate_mv_script (if no existing song: after set_mv_lyrics first suggest_mv_song_styles→quote_mv_song→generate_mv_song→get_mv_song→select_mv_song). ★★【④⑤ two new hard gates + agent personal QC】④ asset layer: after character sheets/turnaround sheets/scene images/prop images → review_assets (before generate_frames / generate_shot_frame; its token is asset_review_token and is passed together with the storyboard-layer review_token); ⑤ video and audio layer: after videos/dubbing/music → review_videos (before compose_episode); after final cut run review_final_cut. ★After every layer review you must also **personally QC**: follow returned agent_qc, inspect assets one by one (download images, sample video frames, read text), answer the checklist, submit via submit_qc_report; for grayscale dramas, without the report the review_token cannot enter the next step; report issues block by default like errors. The platform judges existence; you judge likeness and correctness. ★★【Single-shot path is also gated】generate_shot_frame must also pass storyboard-layer review_token; regenerate_shot_video must also pass shot-image-layer review_token—do not expect per-shot tools to bypass reviews (a tested workflow generated all 25 shots by single-shot frames without any gate; all final-cut rework cost real credits). Generating frames does **not** invalidate storyboard-layer token (fingerprint only looks at storyboard content); only changing storyboard content—update_shot / import / add-delete shots / change character bindings—requires one free quick re-review. Generating one shot’s frame invalidates the **shot-image-layer** token; before regenerate_shot_video for the next shot, run review_frames once. ★★【For native-audio dramas, lock voices before batch videos】When use_clip_audio=true (default), each shot’s voice is sampled separately by the video vendor; without locking, it will drift and later unification requires per-shot video regeneration. If customer-authorized source audio exists → clone_voice+set_character_voice before generate_videos; otherwise → for each speaking character first use single-shot quote_regenerate_shot_video→regenerate_shot_video to generate one shot with longer dialogue (generate_videos has no per-shot parameters and only batch-fills missing videos; single-shot regeneration also works for shots with no video yet), use set_voice_anchor_from_shot to choose that voice line, then generate remaining shots. get_pipeline_status native_voice_anchor lists unanchored_speakers still unlocked and stale_shots generated before locking that need regeneration. ★Worldview concept image = mandatory by default (improves whole-drama consistency; many third-party platforms miss this): after storyboards, call generate_world_concept by default, still following quote confirmation (tell customer estimated credits, confirm before charging)—do not silently charge, and do not skip. ★★【Color script】generate_color_script unifies grading across the whole film, done after storyboards and before frames; text step has no quote_* and is postpaid by usage. Progress self-check: get_pipeline_status generate_color_script; review_storyboards reports color-script gaps. ★Motion templates are optional experimental: call generate_motion_templates (motion template extraction) only when the customer explicitly requests it, after storyboards; text step postpaid by usage. First/last frames do not inject motion templates by default; missing templates do not need backfill and do not block images/videos/final cut. Video templates may be cropped; no delivery or gain is guaranteed. ★Scene Bible (detailed scene settings) order is **after scene images are generated**—complete it based on finished scene images (no MCP tool yet; do on official site); do not do Scene Bible before scene images. ★Audio defaults to video native audio (use_clip_audio on by default; skip TTS and use AI video’s built-in audio): when creating/updating a drama, the AI should proactively tell the customer “Default uses video native audio; if TTS dubbing is needed set use_clip_audio to false” and let them choose. ★Default image model is ChatGPT Image 2.5 Flare (gpt-image-2.5-flare·unified whole-drama style): set image_model in create_drama/update_project_settings; omitted means this default; options: gpt-image-2.5-sunburst (same price·more accurate Chinese glyphs/details)/gemini-3.1-flash-image (Nano Banana 2·71 credits)/gemini-3-pro-image (Nano Banana Pro·more detailed·175 credits)/gemini-3.1-flash-lite-image (Nano Banana 2 Lite·cheap·31 credits)/doubao-seedream-5-0-260128 (Seedream5.0); generate_frames can temporarily override for one run. ★2.5 charges by input volume (base 11 credits + 18 credits per reference image), Nano Banana/Seedream are flat-price—budget must include this for shots with many references. ★Four video engine choices (drama-level·when AI creates a drama it must proactively guide selection by genre and show price differences for customer decision):【Selection decision tree】★Call get_production_menu first: whether each engine is currently available for realistic live-action / anime and other subject classes is decided by the availability it returns (unavailable entries carry customer_note and expected_until—relay them to the customer verbatim); do not assume from this description that any model is unavailable, and do not recommend models the menu marks unavailable. ①Realistic live-action drama→seedance-2.5 (strongest instruction following / face detail · 720p 212 credits/sec), or hailuo-3 when budget-sensitive (about 1/3 cost, 70 credits/sec · strong fidelity editing · can output 2K · but about 6 minutes per shot); ★After choosing, pass video_engine explicitly in create_drama / update_project_settings (the one the menu lists as available for this subject class)—if omitted, the platform only applies a style-based fallback stamp that is not guaranteed to be an engine the menu marks available; ② stylized/animation/3D cartoon drama·empty shots·product shots→wan3.0 (about 40% cost, 84 credits/second·max 30 seconds·min 2-second billing·each shot ~2 minutes), use wan3.0-prime for rush delivery (126 credits/second·~1 minute); ③★Never choose wan3.0/prime for realistic live-action drama—WAN output-side real-human face review consistently rejects at 720p+ and retries cannot fix; ④★★Use wan3.0/prime cautiously for narrative dramas (dialogue, coherent story, stable shot rhythm): WAN will **self-cut hard camera changes inside a single storyboard shot** (test: 11/12 shots had intra-shot jump cuts, vs seedance-2.5 only 1/6 and hailuo-3 0/5), final cut feels like “the image jumps around within one shot and cuts too fast”; this is weak vendor instruction following and cannot be stopped by prompt constraints (our negative constraints are already included and tested ineffective), fix afterward only by regenerating with another engine. WAN suits inherently short-fast stylized/empty/product shots; for stable single-shot narrative choose seedance-2.5 or hailuo-3. After generation, use scan_intra_shot_cuts to inspect; ④b★★Use hailuo-3 cautiously for dialogue-heavy drama (different from the previous “intra-shot self-cut”; this is about **whether all dialogue is spoken**): native-audio engine stops reading when the shot ends and may ad-lib; tests show “dialogue not fully spoken” rate hailuo-3 **50%** (26 shots, all generated after 8-30 native-audio fixes, so engine-intrinsic), seedance-2.5 **23%** (294 shots); wan3.0 has **insufficient sample, not tested** on this dimension (26 samples all before same fix, only 2 shots after fix)—do not conclude WAN is bad from this. When customer says “line not finished”, first run scan_dialogue_coverage and categorize; do not default to lengthening shots (even with sufficient shot length, 32% still missed full lines). ⑤★Shot duration control (all engines, especially visible on WAN): keep each shot 3~5 seconds. Longer shots give the model more room to improvise—test: one 16-second shot (neighboring shots 3~5 seconds) changed scenes 4 times inside the shot, the character disappeared for 4 seconds and then grew back from the edge; customer sees “a person appeared out of nowhere”. For long performance, split into multiple short shots and connect with frame chaining; do not write single shots over 15 seconds. 【Resolution decision】Draft/iteration: WAN dramas 480p (42 credits/second cheapest), others 720p; final delivery: seedance dramas 720p (HD tier discontinued), hailuo-3 dramas 1080p (=2K·112 credits/second), WAN dramas 1080p (168 credits/second); hailuo-3 has no independent 480p tier (selecting it bills as 768P); set video_engine/video_resolution in create_drama/update_project_settings, ★both must be decided before video generation—switching does not back-propagate to generated shots, and mixing within one drama causes style/identity drift. ★Slow image generation ≠ failure: each image takes tens of seconds to minutes; a full episode may take over ten minutes. Poll get_storyboards frame_status—pending=still generating (wait patiently; do not call generate_frames repeatedly and waste credits), ready=done, failed=real failure. ★To change a specific shot image / make a new character sheet take effect, use **single-shot regeneration generate_shot_frame** (platform automatically includes identity anchors, scene/prop references, style anchors for that shot, preserving whole-film consistency); generate_frames only batch-fills shots with **missing frames** and skips shots that already have first frames (normal, not “refusal”). ★After first frames, call free tail_frame_plan to see which shots need independent last frames, then batch-fill with frame_type=last_frame. After changing a character sheet (set_character_portrait), response stale_frames are shots polluted by the old image and requiring per-shot regeneration. ★Never use external tools to make first/last frames and upload_shot_frame to “change the image”—external images lack identity/style anchors, so characters/clothing/style will drift; that is the real root of waste. upload_shot_frame is only for customer-owned real footage/assets. ③【Optional enhancements·AI proactively tells customer·quote confirmation required】Art bible generation / visual lock extraction / scene groups / lip sync / poster / sound effects / music / subtitle translation—these improve consistency/quality and are mostly paid. ★AI should proactively tell the customer these are available and quote them (whether to run depends on execution mode: professional mode / unconfirmed plan / customer-controlled current stage → tell customer and proceed only after agreement; do not decide for them; managed current stage → do not ask, follow get_production_plan autopilot.default_decisions, platform records in get_autopilot_log); neither silently skip nor charge without permission. ★Two lock disciplines: ①**Aspect ratio** is set in create_drama, locked at drama level, used by all later images/videos/final cuts, **do not change midstream** (generated content would have inconsistent aspect ratios and drift); default 9:16 if unset. ②**5-7 seconds per storyboard shot is a normal AI-video-optimized duration**, do not mistakenly re-split because “shots seem long”—generate_storyboards **replaces all storyboards in the episode**, wasting generated images; backend blocks if storyboards already exist and requires confirm_replace. ★Rewrite fidelity (default auto intelligent routing): when the set_script original **is already script-shaped** (scene headers/dialogue-line structure), rewrite_script automatically runs two-pass fidelity—customer dialogue is machine-gate locked line by line (dropping one line triggers internal rejection and redo), AI never adds plot; dramaturgical gaps (hooks/emotional anchors) are not auto-filled but listed in get_script dramaturgy_suggestions (whether to adopt depends on execution mode: professional mode / unconfirmed plan / customer-controlled current stage → tell customer and proceed only after agreement; do not decide for them; managed current stage → do not ask, follow get_production_plan autopilot.default_decisions, platform records in get_autopilot_log). If original is novel/outline, it auto-runs creative rewriting (AI builds hooks/emotional beats). Both customer types get the right path; no manual switch needed. To override defaults, use update_project_settings rewrite_pipeline (auto/two_pass/single_forced) and fidelity_enforce (1=hard fidelity gate). Handling “AI changed my script too much”: ①confirm full original is in set_script; ②set rewrite_pipeline to two_pass and rerun rewrite_script; ③after customer confirms character appearance, use update_character profile_locked=1 to lock profiles and prevent later extraction from overwriting appearance and changing the character sheet face. ★If customer wants to rewrite the script on **another AI platform** (common: third-party model judges our rewrite “changed too much”, customer wants control over change degree): first call get_script_format_spec to get the platform-accepted format contract (markdown template + external_prompt directly forwardable to the external model + blank skeleton), send external_prompt+template+customer original to that platform; after receiving the organized draft, **first call check_script_format** for self-check (free·rules only·no model). After errors clear, two exits: 【A】adopt_external_script directly commits it as shootable draft (our AI not involved·instant·free, provided the external draft contains production-layer annotations); 【B】set_script back into the original slot + rewrite_script through two-pass fidelity (choose this when the external draft only handles story layer; platform adds annotations; customer-written annotations are stripped and rewritten on this path). ★Do not put externally organized drafts into edit_rewritten_script (400 if no rewrite has run), and do not skip check_script_format before ingesting—noncompliant scripts are still gate-blocked and waste a run. ★★If the customer provides an **already finished storyboard table** (per-shot seconds/shot size/camera movement), neither path above applies—use import_storyboard_table directly to create storyboards, skipping rewrite and shot breakdown. The rewrite path will strip seconds/shot size/camera movement/STYLE/text cards as non-story content (production test: 8 shots 36 seconds → 20 shots 109 seconds). ★Both import channels are deterministic—errors are imported as-is, so **get the contract first, self-check, then import**: storyboard table path uses get_storyboard_table_spec → check_storyboard_table → import_storyboard_table; if customer tools/tables export structured data, or external AI can produce JSON directly, use get_bulk_import_spec → check_bulk_import → bulk_import_storyboards (storyboards only; characters/scenes/props are extracted from script by extract_assets, import binds existing items by name—extract first, then import). Both imports default with auto_complete (background AI fills professional fields + image/video prompts, text step postpaid; inform customer before calling): if receipt started=true, poll get_autofill_status until done before review_storyboards—autofill changes shots, so a token reviewed earlier invalidates. Use get_pipeline_status for progress (returns project-type-specific steps). ★★【Opening plan·first thing after creating drama·free】First ask basic video parameters (project type/aspect ratio/episode count × minutes per episode/genre: realistic_human·stylized·product/native audio or dubbing), then call get_production_menu to fetch the **currently available** three-tier packages (effect description + real-time estimate including text steps + recommended budget + excluded items) and present them to customer—do not recommend models from memory; some models may be temporarily unavailable for some genres, and the menu is already filtered. Then ask customer to choose execution mode (pro control every step / auto one-click final cut / custom select managed stages), budget budget_points, and automatic overrun cap (0/10/20/30/50%): **default recommendation** budget=selected tier recommended_budget (non-text upper bound ×1.2 plus text estimate), overrun=menu recommended_overrun_pct (30%)—QC regenerations are not in the upper bound and are covered by overrun; recommendation is only recommendation, final numbers are customer-decided; if customer changes them, follow customer. Clearly summarize and only after explicit customer agreement call confirm_production_plan(customer_confirmed:true)—never confirm on behalf of customer. For dramas with confirmed plans: before paid dispatch, platform rechecks model availability and quote upper bound ≤ budget×(1+overrun%); if blocked (402 BUDGET_WOULD_EXCEED / 409 MODEL_UNAVAILABLE), stop and ask customer, do not switch models or adjust budget yourself. confirm returns 403 PRODUCTION_PLAN_NOT_OPEN = drama not open (grayscale); follow original step-by-step confirmation flow.",
|
|
6
|
-
"rewrite_script": "AI rewrite: convert the source script into a shootable script (read content → write script_content). Automatically selects the rewrite agent by project type. ★Fidelity auto-routing: if the source is already in script form, automatically uses two-pass fidelity (dialogue locked line by line by machine, AI does not add plot; dramaturgical gaps go into dramaturgy_suggestions; whether to adopt follows execution mode: pro mode / unconfirmed plan / customer-controlled step → explain to customer and do only with customer approval, do not decide for them; autopilot step → do not ask customer, follow get_production_plan autopilot.default_decisions, platform records in get_autopilot_log); if the source is a novel/outline, uses creative rewrite. (Ads use ad rewrite; MV is blocked from standard rewrite.) Backend async (minutes), text step is token postpaid, no arrears, no quote needed. After completion use get_script to review, edit_rewritten_script to revise. ★Typical time 2~4 minutes (production observed ≈169 seconds). **No result within 60 seconds is normal, not failure**—use get_run_status to check whether it is still running; do not rush to resubmit. ★★**This tool is \"redo from the entire source\", not \"make another revision\"**: rerunning when a shootable script already exists overwrites the current script and all prior fixes, and the new version **does not guarantee preserving parts already fixed in the old version** (production test across three versions: long narration split in the previous version was merged back in the next; correct period costume in the previous version drifted in the next). overwrites_existing_script=true in the response means exactly this. Therefore **after the first successful rewrite, all later changes must use edit_rewritten_script for targeted edits**—free, seconds-level, only touches the specified scenes, everything else remains byte-identical, deterministic with no lottery; rerun this tool only when a \"completely different version\" is required. If rerun by mistake, use get_script(include_previous=1) to retrieve the previous version. ★★【Execution-mode master rules · read before starting】For dramas with a confirmed opening plan, first get_production_plan and read autopilot: pro mode (pro, or autopilot.enabled=false, unconfirmed plan) → every later \"explain to customer and do only with customer approval\" is literal; auto / custom **autopilot steps** → do not ask customer: advance in order per get_pipeline_status next_action, self-confirm quotes within the hard budget cap, after each layer still run review_* + agent QC, and follow autopilot.next_step returned by review/QC (whitelisted error with auto_acknowledge:true / which self-fix round / pause to ask customer); for choices follow autopilot.default_decisions; autopilot.never_auto_actions(mode=replace, asset deletion, overwrite customer-uploaded images, allow_era_ref_conflict, voice cloning, delivery acceptance) always require customer approval in every mode. ★For the same shot in autopilot steps, generate_shot_frame regeneration max 3 rounds and regenerate_shot_video / edit_video_shot max 3 times; at the limit platform returns 409 AUTOPILOT_SHOT_REGEN_LIMIT (no charge)—do not bypass with another tool; stop and ask customer: if customer approves more regenerations, quote normally and generate with customer_approved_more_regens:true (grants another limit); if customer accepts current state, continue, and include acknowledge_review:true on the next paid call to record confirmation. 402 BUDGET_WOULD_EXCEED / 409 MODEL_UNAVAILABLE / 409 AUTOPILOT_SHOT_REGEN_LIMIT / 400 AUTOPILOT_MUST_ASK with must_ask_customer=true / nonempty pending_questions → pause, summarize get_autopilot_log pending_questions **once** and ask customer; customer-controlled steps follow pro mode. After final cut, deliver to customer using get_autopilot_log report. ★Three execution tiers (do not mix the three when asking customer): ①【Basic project settings · free · mandatory foundation · set when creating drama, do not create an empty shell】project_type/setting_brief (worldview · ERA LOCK)/ethnicity/aspect ratio resolution, plus consistency anchors cinematography_prompt (cinematography DNA) · art_bible · visual_lock— all free, the foundation driving full-pipeline consistency; if not set, all later generation drifts and rework costs again. Set directly with create_drama/update_project_settings. ★visual_lock/art_bible should contain only image-level/world-level locks (shot language · environment · art direction · forbidden elements), **never pin costume/hairstyle/appearance details for specific characters**—the single source of truth for character appearance is the character profiles output by extract_assets (change via update_character); writing both inevitably conflicts, character sheet vs profile and turnaround vs visual lock, consistency gates reject by character sheet → turnarounds/shot frames get **structural consecutive rejection**, no number of rerolls can pass, pure wasted money. ★★【Era contract · free · must set before image generation for non-contemporary or surreal subjects】The worldview in setting_brief is **free text**: it only provides background and cannot constrain images; what can truly override visual lock is the **structured era contract**: use set_era_contract to set this episode tier (modern/republican/historical/fantasy/surreal), get_era_contract to read current value. **Unset means empty**—the platform can only stack prompt text to fight the model; modern objects entering ancient images and scene images drawn as another era are mostly caused by this being empty. ★Xianxia/fantasy/fairyland **must use fantasy, not historical**: historical requires researched realism and will judge glowing aura, floating terrain, nonhuman forms as \"era-inconsistent\", pulling images toward realistic ancient style. For an exception in one scene (e.g. a modern memory in a fantasy world), use update_scene era_contract override; scene-level overrides episode-level. ★★【Per-step review protocol · all free · main line preventing bad films, not optional】After each step output, review first, tell customer the conclusion verbatim, then proceed. **Five hard gates (otherwise 400 rejected; ④⑤ and agent QC below)**: ①After rewritten script → review_script (before extract_assets / generate_storyboards); ②After storyboards → review_storyboards (before generate_frames); ③After shot images → review_frames (before generate_videos). Each review returns review_token; pass it to downstream paid tools. Explain findings to customer item by item (code=issue type · shots=hit shot numbers · action=which tool to fix with); after fixing per action, **review again** before proceeding. If content changed after review → token auto-invalidates; one re-review is enough (free). error blocks by default; only if customer is explicitly informed and insists may you pass acknowledge_review:true (acknowledge_review only means the customer personally agreed; any execution mode requires explicit customer approval, autopilot included). In autopilot steps only whitelisted heuristic errors may carry auto_acknowledge:true (see 【Execution-mode master rules】). **Soft guidance (non-blocking but strongly recommended, also free)**: before images/videos run run_precheck (catches shots vendors will certainly reject, avoiding wasted credits)—★**to scan the whole drama, run run_drama_precheck first** (drama-level summary · free · read-only): get issue counts and attention per episode in one call (which episodes to fix first), prioritize by it, then run run_precheck on those episodes for itemized details; do not blind-scan episode by episode. Note its not_covered—drama-level skips the only lint that needs images, so \"0 issues for whole drama\" ≠ \"everything checked\". ★After findings, do not blindly edit yourself: plan_precheck_fix lets platform compute proposals → apply_precheck_fix persists them (which to accept; autopilot=accept all per execution mode: pro mode / unconfirmed plan / customer-controlled step → explain to customer and do only with customer approval, do not decide for them; autopilot step → do not ask customer, follow get_production_plan autopilot.default_decisions, platform records in get_autopilot_log); after storyboards run get_health_report; after character sheets are done, use get_characters to verify every appearing character has image/sheet; after frames, use get_storyboards to inspect frame_status and fail_reason/fail_hint (fix failed shots before proceeding; do not generate videos from bad frames); after videos likewise inspect video_status; before final cut use get_pipeline_status to confirm no missing shots. ★**Never just generate all the way through**: pushing without reviews amplifies issues at every layer and finally forces redoing the whole episode—every image/video retry is charged. Reviews are all free; catching early costs nothing. ★Changing costume is a structured binding edit: update_shot active_wardrobe_id (whole shot) / appearance_wardrobes (per-character in multi-character shots), can override or clear—editing text description does not change clothes, and customers need not change it on the web. ②【Production trunk · ordered, no skipping · ★storyboard before asset creation】set_script→rewrite_script→★review_script→extract_assets→storyboards (storyboard first · pure text shot breakdown)→★review_storyboards→★Script discipline (endpoint-enforced, cannot bypass): all raw material (synopsis/outline/finished script all count) goes into set_script and **must pass rewrite_script to produce an AI rewritten script**—pasting your own script directly into edit_rewritten_script to bypass rewrite will be 400 rejected (no rewritten script means no editable object); extract_assets likewise requires the rewritten script. All post-rewrite edits use the structured AI-output format: edit_rewritten_script (polish/correct), update_character, update_shot/replace_shot_dialogue—do not go back and replace the whole script or write another truth source in settings; dual sources of truth are the top cause of consistency accidents. ★★**After one successful rewrite, do not rerun rewrite_script**: it redoes the whole source, losing all current fixes, and the new version does not guarantee preserving old fixed parts (three-version tests drift back and forth). To fix, use edit_rewritten_script targeted edit (get_script full text → change only those scenes, copy the rest byte-identically → submit full script), free and seconds-level, deterministic; if rerun by mistake, recover previous with get_script(include_previous=1). generate_portraits_and_sheets (character sheets + turnarounds · create after storyboards: first use delete_character to remove appearing characters that **do not appear in any episode of the whole drama and are not intended for later episodes** before image generation—characters are drama-level; once deleted, frame assembly for every episode will no longer include them; this cannot be judged from this episode's storyboards alone, keep if unsure (one character sheet costs far less than losing the identity anchor in a later episode); the character sheet step generates images for **all undeleted appearing characters**, regardless of storyboard bindings, and all kept characters are charged; voiceover characters (char_type=voiceover narrator/phone voice) are not imaged and have no storyboard binding, **do not delete**, audio still needs them)→★generate_color_script (color script · unified grading)→assign_voices (assign voice types; no suitable narrator/character-library voice → design_voice from description, then set_character_voice after sample approval)→★quote_scene_images+generate_scene_images (empty scene plates · required before frames)→frames (default first frames only)→★tail_frame_plan (free · which shots need independent tail frames)→frames(frame_type=last_frame)→★chain_frames (seams · first dry_run:true)→★review_frames→videos→generate_tts→compose; ★★【Do not skip seams · complete tail frames before review_frames】After first/tail frames are ready, call chain_frames(dry_run:true, free) to see the platform's seam plan and estimated_points (copy free, reframe costs one image per seam); explain to customer and, after confirmation, execute without dry_run. Already chained seams are excluded, repeat calls do not double charge. ★After execution, reframe is **async image generation**: use get_jobs to watch the planned shots' first_frame jobs, wait until all pending/processing are done (for failed, inspect error_msg; use chain_shot_from for a single seam), then review_frames—the old first frame still exists so get_storyboards frame_status remains ready and cannot show whether the new image is running or failed. After get_jobs clears, use get_storyboards to check seam_state: replacement images rejected on promotion do not remain in get_jobs; that seam remains unchained (review_frames will also report seam_unchained), reconnect per its action. If you review before landing, you review old first frames; the token expires when the new first frame lands. Episodes generated shot-by-shot/batch often have not been auto-chained (get_storyboards seam_state=unchained); skipping causes no error—the cost is visual mismatch between shots and jump cuts throughout the final cut. ★★【Do not skip tail frames · frames are two passes】generate_frames defaults to first frames only. About 30% of shots have **end state ≠ start state** (large camera moves/object release/state change) and need an independent tail frame; the criterion is platform-side and cannot be guessed from storyboard text. Therefore after first frames, you must call the free tail_frame_plan once for a per-shot list, then fill frame_type=last_frame (shots_needing_last_frame in generate_frames response is this count; if not 0, do not go directly to review_frames). Skipping causes no error and does not block you—the cost is those shots only have a first-frame anchor when generating video, so the model improvises the end state: actions miss, large camera moves end back at the starting composition. Production observed 30 of 32 episodes generated only first frames; 23 still generated videos all the way. ★★【When tail frame is blocked by TERMINAL_DESC_GATE: edit text, do not retry】For shots reporting \"this shot is marked as state-changing but nowhere describes what the end looks like\", use update_shot to write **what the image looks like at the end** into that shot's last_frame_prompt, then regenerate the tail frame. ★Better: **avoid hitting it**—before tail frames, call get_storyboards once; terminal_desc_missing=true lists all such shots in the episode (free). Fill their last_frame_prompt first, then generate, with zero rejections. You can also query per shot via get_shot_prompts same field, but do not do that for dozens of shots. Retrying without adding description is ineffective—the vendor prompt has no terminal-state segment, so it still draws the starting pose and will be rejected again by terminal review, while each try is still charged (production observed tail-frame success 9.4% without terminal description, 40.2% with it). Only for shots that truly should be \"almost unchanged\" use generate_shot_frame allow_missing_terminal to bypass. ★★【Do not skip empty scene plates · this step is often missed by third parties】Scene images are **background anchors**: every shot frame in the same scene anchors to them. Frames can still be generated without plates, with no error and no blocking—the cost is **the first shot of each scene has no background anchor at all** (platform fallback image generation is \"when missing image detected, generate one in background\"; later shots in the same scene use it, but the triggering shot itself cannot wait for it), and the first shot is often the tone-setting shot; backgrounds also drift across later shots. It pairs with character sheets: character sheets anchor people, scene images anchor setting; whichever is missing drifts. Progress self-check: `get_pipeline_status` generate_scene_images step (completed/total); `review_storyboards` also reports scene_plate_missing before frames. ★★【Do not skip turnarounds · character sheet ≠ turnaround】A character sheet is a single-person single-image identity anchor; a turnaround is a multi-view turnaround generated by the platform from the character sheet, the root consistency anchor for shot frames/videos (angle changes · lighting changes · costumes mostly rely on it). Frames can still be generated with only character sheets and no error—the cost is character drift when angle changes and costumes differ every shot. Use generate_portraits_and_sheets for both steps (each call advances one step; after character sheets are complete, call again to generate turnarounds), or call generate_character_sheets after character sheets. Progress self-check: get_pipeline_status generate_character_sheets step (completed/total, portrait_only=characters with only character sheets). ★Customer-provided images: character sheet must be single person, single image, single angle, no text; scene image must be empty environment, no people, no overlaid text—set_character_portrait/upload_scene_image auto-check and reject noncompliance with 422. ★Do not create character images/prop sheets/motion templates before storyboards—storyboard is pure text and depends on no images; only after storyboards is the cast fixed, so delete non-appearing characters before images to save (motion templates must be after storyboards anyway). Paid steps follow the existing quote confirmation flow. Ads additionally need add_product+generate_product_sheet; MV flow is set_mv_lyrics→generate_mv_story→generate_mv_script (if no existing song: after set_mv_lyrics run suggest_mv_song_styles→quote_mv_song→generate_mv_song→get_mv_song→select_mv_song). ★★【④⑤ two new hard gates + agent hands-on QC】④Asset layer: after character sheets/turnarounds/scene images/prop images → review_assets (before generate_frames / generate_shot_frame; its token is asset_review_token and is passed together with the storyboard-layer review_token); ⑤Video and audio layer: after videos/voiceover/music → review_videos (before compose_episode); after final cut, run review_final_cut. ★After every review layer you must also **personally QC**: follow returned agent_qc, inspect each asset yourself (download images, sample video frames, read text), answer checklist items, submit via submit_qc_report; for gray-release dramas, a review_token without the report cannot enter the next step; report problems block by default just like error. Platform judges whether it exists; you judge whether it looks right and is correct. ★★【Single-shot path is also review-gated】: generate_shot_frame also requires storyboard-layer review_token; regenerate_shot_video also requires shot-image-layer review_token—do not expect single-shot tools to bypass reviews (production observed a workflow generating all 25 shots via single-shot frames without hitting any gate, and all final-cut rework was truly charged). Generating frames **does not** invalidate the storyboard-layer token (fingerprint only checks storyboard content); only changing storyboard content—update_shot / import / add-delete shots / change character bindings—requires one re-review (free, seconds). Generating one shot's frame invalidates the **shot-image-layer** token; before regenerate_shot_video for the next shot, just run review_frames once. ★★【For native-audio dramas, lock voices before batch video】When use_clip_audio=true (default), each shot's voice is sampled by that video vendor, and will drift if not locked; unifying later requires regenerating shot by shot. With customer-authorized source audio → clone_voice+set_character_voice before generate_videos; without it → for each speaking character, first use single-shot quote_regenerate_shot_video→regenerate_shot_video on a shot with relatively long dialogue (generate_videos has no per-shot parameters and only batch-fills missing videos; single-shot regeneration also works on shots with no video yet), use set_voice_anchor_from_shot to select the voice from that shot, then generate remaining shots. get_pipeline_status native_voice_anchor lists unanchored_speakers and stale_shots generated before locking that need regeneration. ★World concept image = required by default (improves whole-drama consistency; many third-party platforms skip it): after storyboards, call generate_world_concept by default; still follows quote confirmation (tell customer estimated credits and confirm before charging)—do not silently charge, and do not skip. ★★【Color script】generate_color_script unifies color grading for the whole film; do after storyboards and before frames. Text step has no quote_* and is usage-postpaid. Progress self-check: get_pipeline_status generate_color_script; review_storyboards reports color-script gaps. ★Motion templates are optional experimental: call generate_motion_templates (motion template extraction) only when customer explicitly requests, after storyboards; text step usage-postpaid. First/tail frames do not inject motion templates by default; missing templates need not be created and do not block images, videos, or final cut. Video templates may be cropped; delivery or benefit is not guaranteed. ★Scene Bible (detailed per-scene settings) order is **after scene images are generated**—refine based on generated scene images (no MCP tool yet; do on official site); do not do Scene Bible before scene images. ★Audio defaults to native video audio (use_clip_audio default on; skip TTS and use AI video's built-in audio): when creating drama/changing settings, AI should proactively tell customer \"default uses native video audio; set use_clip_audio false if TTS dubbing is needed\" and let customer choose. ★Default image model is ChatGPT Image 2.5 Flare (gpt-image-2.5-flare · unified style across drama): set image_model in create_drama/update_project_settings; default if omitted. Options: gpt-image-2.5-sunburst (same price · better Chinese glyphs and details)/gemini-3.1-flash-image (Banana 2 · 71 credits)/gemini-3-pro-image (Banana Pro · more detailed · 175 credits)/gemini-3.1-flash-lite-image (Banana 2 Lite · cheaper · 31 credits)/doubao-seedream-5-0-260128 (Seedream5.0); generate_frames can temporarily override for one run. ★2.5 charges by input volume (base 11 credits + 18 credits per reference image); Banana/Seedream are fixed-price—budget must account for many-reference shots. ★Four video engine options (drama-level · when AI creates drama, must proactively guide selection by drama and show price differences for customer decision): 【Selection tree】★Call get_production_menu first: whether each engine is currently available for realistic live-action / anime and other subject classes is decided by the availability it returns (unavailable entries carry customer_note and expected_until—relay them to the customer verbatim); do not assume from this description that any model is unavailable, and do not recommend models the menu marks unavailable. ①Realistic live-action drama→seedance-2.5 (strongest instruction following / face detail · 720p 212 credits/sec), or hailuo-3 when budget-sensitive (about 1/3 cost, 70 credits/sec · strong fidelity editing · can output 2K · but about 6 minutes per shot); ★After choosing, pass video_engine explicitly in create_drama / update_project_settings (the one the menu lists as available for this subject class)—if omitted, the platform only applies a style-based fallback stamp that is not guaranteed to be an engine the menu marks available; ②Stylized/animation/3D cartoon dramas · empty shots · product shots→wan3.0 (about 40% price, 84 credits/sec · max 30 sec · min 2 sec billing · about 2 minutes per shot), for urgent delivery use wan3.0-prime (126 credits/sec · about 1 minute); ③★Never choose wan3.0/prime for realistic live-action dramas—WAN output-side human-face review rejects consistently at 720p+, retries cannot fix; ④★★Use caution with wan3.0/prime for narrative dramas (dialogue, coherent story, stable shot rhythm needed): WAN will **hard-cut to new camera angles inside a single storyboard shot** (observed 11/12 shots with intra-shot cuts, vs seedance-2.5 only 1/6, hailuo-3 0/5); final-cut feel is \"image jumps around within one shot, cuts too fast\". This is weak vendor instruction following; prompt-level blocking cannot solve it (our negative constraints already included and tested ineffective). Only remedy after generation is regenerate with another engine. WAN suits fast short stylized/empty/product shots; for stable single-shot narrative choose seedance-2.5 or hailuo-3. After generation use scan_intra_shot_cuts to check; ④b★★Use caution with hailuo-3 for dialogue-heavy dramas (different from the previous \"intra-shot self-editing\"; this is about **whether all dialogue is spoken**): native-audio engine stops when the shot ends and may ad-lib; observed \"dialogue not fully spoken\" rate hailuo-3 **50%** (26 shots, all generated after 8-30 native-audio fix, so engine-inherent), seedance-2.5 **23%** (294 shots); wan3.0 has **insufficient sample size, untested** on this dimension (26 samples all before the same fix; only 2 after fix)—do not infer WAN is bad from this. When customer reports \"line was not finished\", first run scan_dialogue_coverage to segment causes; do not default to lengthening shots (observed that among shots with enough duration, 32% still did not speak all lines); ⑤★Shot duration control (all engines, especially obvious on WAN): keep each shot 3~5 sec. The longer the shot, the more freedom the model has—observed one 16-sec single shot (neighbors were 3~5 sec) changed scene 4 times inside the shot, a character disappeared for 4 sec then grew back from frame edge; customer perceives \"someone appeared out of nowhere\". For long performances, split into multiple short shots and connect with frame chaining; do not write single shots longer than 15 sec. 【Resolution decisions】Draft/iteration: WAN dramas 480p (42 credits/sec cheapest), others 720p; final delivery: seedance dramas 720p (HD tier discontinued), hailuo-3 dramas 1080p (=2K · 112 credits/sec), WAN dramas 1080p (168 credits/sec); hailuo-3 has no separate 480p tier (choosing it still bills as 768P). Set video_engine/video_resolution in create_drama/update_project_settings; ★both must be decided before video generation—switching does not retroactively change generated shots; mixing in one drama causes style/identity drift. ★Slow image generation ≠ failure: each image takes tens of seconds to minutes, a whole episode may take over ten minutes; poll get_storyboards for frame_status—pending=still generating (wait patiently, do not repeat generate_frames and waste credits), ready=done, failed=real failure. ★To change one shot's image / make a new character sheet take effect, use **single-shot regeneration generate_shot_frame** (platform automatically includes that shot's identity anchors · scene/prop references · style anchor, preserving whole-film consistency); generate_frames only batch-fills shots with **missing frames** and skips existing first frames (normal, not \"rejection\"). ★After first frames, call free tail_frame_plan to see which shots need independent tail frames, then batch-fill with frame_type=last_frame. After set_character_portrait, stale_frames in the response are shots polluted by the old image and must be regenerated shot by shot. ★Never use external tools to make first/tail frames and upload_shot_frame to \"change image\"—external images lack identity/style anchors, so characters/costumes/style will drift, which is the real source of bad films; upload_shot_frame is only for customer-owned real footage. ③【Optional enhancements · AI proactively informs customer · quote confirmation required】Art Bible generation / visual lock extraction / scene groups / lip sync / posters / sound effects / music / subtitle translation—these improve consistency/quality and are mostly charged. ★AI should proactively tell customer these are available and provide quotes (whether to run follows execution mode: pro mode / unconfirmed plan / customer-controlled step → explain to customer and do only with customer approval, do not decide for them; autopilot step → do not ask customer, follow get_production_plan autopilot.default_decisions, platform records in get_autopilot_log); neither silently skip nor charge without permission. ★Two locking rules: ①**Aspect ratio** is set at create_drama, locked at drama level; all later images/videos/final cut use it, **do not change midstream** (changing makes generated content aspect-inconsistent and drift); default 9:16 if unset. ②**5-7 sec per shot in shot breakdown is normal duration optimized for AI video generation**; do not misjudge as \"shots too long\" and rebreak—generate_storyboards **replaces all storyboards in the episode** and wastes generated images; backend blocks if storyboards already exist and requires confirm_replace. ★Rewrite fidelity (default auto smart routing): when set_script source is **already in script form** (scene headings/dialogue-line structure), rewrite_script automatically uses two-pass fidelity—customer dialogue is locked line by line by a machine gate (missing any line triggers internal rejection and redo), AI never adds plot; dramaturgical gaps (hooks/emotional anchors) are not auto-filled, but written into dramaturgy_suggestions returned by get_script (whether to adopt follows execution mode: pro mode / unconfirmed plan / customer-controlled step → explain to customer and do only with customer approval, do not decide for them; autopilot step → do not ask customer, follow get_production_plan autopilot.default_decisions, platform records in get_autopilot_log). If source is novel/outline, automatically uses creative rewrite (AI lays hooks and emotional points). Both customer types get appropriate handling with no manual switch. To override default, use update_project_settings rewrite_pipeline(auto/two_pass/single_forced) and fidelity_enforce(1=fidelity hard gate). If customer says \"AI changed my script off-track\": ①confirm full source was put into set_script; ②set rewrite_pipeline to two_pass to force fidelity, then rerun rewrite_script; ③after customer confirms character appearance, use update_character profile_locked=1 to lock profile and prevent later extraction from overwriting appearance and changing the face in character sheets. ★If customer wants to rewrite on **another AI platform** (common: third-party model judges our rewrite \"changed too much\", customer wants to control change degree): first call get_script_format_spec to get the platform-accepted format contract (markdown template + external_prompt directly forwardable to external model + blank skeleton), send external_prompt+template+customer source to that platform; after receiving organized script, **first call check_script_format to self-check** (free · rule-only · no model). Once errors are zero, two exits: 【A】adopt_external_script to directly adopt as shootable script (our AI not involved · seconds-level · no charge, requires external script includes production-layer annotations); 【B】set_script back into source slot + rewrite_script with two-pass fidelity (choose this when external only handles plot layer; platform fills annotations; customer-written annotations on this path are stripped and rewritten). ★Do not put external organized script into edit_rewritten_script (400 rejected if rewrite has never run), and do not skip check_script_format and ingest directly—noncompliant scripts are still blocked by gates and waste a run. ★★If the customer provides a **finished storyboard table** (per-shot duration/shot size/camera movement), neither path above applies—use import_storyboard_table directly to create storyboards, skipping rewrite and shot breakdown. The rewrite path strips duration/shot size/camera movement/STYLE/text cards as non-plot content (production observed 8 shots 36 sec → 20 shots 109 sec). ★Both import channels are deterministic—even wrong content is created as-is, so **get contract first, then self-check, then import**: storyboard table path is get_storyboard_table_spec → check_storyboard_table → import_storyboard_table; if customer's own tools/spreadsheets can export structured data, or external AI can directly produce JSON, use get_bulk_import_spec → check_bulk_import → bulk_import_storyboards (creates storyboards only; characters/scenes/props are extracted by extract_assets from the script; import binds existing ones by name—extract first, then import). Both imports default with auto_complete (backend AI fills professional fields + image/video prompts, text step postpaid; inform customer before call): if receipt started=true, poll get_autofill_status until done, then review_storyboards—autofill changes shots, so any earlier review token expires. Use get_pipeline_status for progress (returns project-type-specific steps). ★★【Opening plan · first thing after creating drama · free】First ask basic video parameters (project type/aspect ratio/episode count × minutes per episode/subject: realistic_human · stylized anime · product empty-shot/native audio or dubbing), then call get_production_menu to get the **currently available** three package tiers (effect notes + real-time estimate including text steps + recommended budget + exclusions) and explain to customer—do not recommend models from memory; some models may be temporarily unavailable for certain subjects, menu is already filtered. Then let customer choose execution mode (pro controls every step / auto one-click final cut / custom choose autopilot steps), budget budget_points, and automatic overrun cap (0/10/20/30/50%): **default recommendation** budget=selected tier's recommended_budget (upper bound excluding text ×1.2 plus text estimate), overrun=menu recommended_overrun_pct (30%)—QC regenerations are not in the upper bound and are covered by overrun. Recommendations are only recommendations; final numbers are set by customer, and if customer changes them, use customer's values. Explain the summary clearly; only after explicit customer agreement call confirm_production_plan(customer_confirmed:true)—never confirm for the customer. For dramas with confirmed plans: before paid dispatch, platform rechecks model availability and that quote upper bound ≤ budget×(1+overrun%); if blocked (402 BUDGET_WOULD_EXCEED / 409 MODEL_UNAVAILABLE), stop and ask customer; do not change model or budget yourself. confirm returning 403 PRODUCTION_PLAN_NOT_OPEN = this drama is not enabled (gray release); follow the original step-by-step confirmation flow.",
|
|
5
|
+
"set_script": "Set the **original script** (content) for an episode. This is the input for AI rewriting, not the final shootable draft. Free. Put synopsis/outline/self-written finished draft here; after setting it you **must call rewrite_script for AI rewriting**—do not skip rewriting and paste the draft directly into edit_rewritten_script (it will be rejected). ★★【Execution-mode master guide·read before starting】For dramas with a confirmed opening plan, first call get_production_plan and read autopilot: professional mode (pro, or autopilot.enabled=false, or plan not confirmed) → every later “tell the customer; proceed only after customer agrees” is literal; one-click (auto)/hybrid (custom) **managed stages** → do not ask the customer: proceed in order by get_pipeline_status next_action, self-confirm quotes within the hard budget cap, and after each layer still run review_* + agent QC; the review/QC returned autopilot.next_step tells you how to proceed for that layer (whitelisted error with auto_acknowledge:true / self-fix round number / pause and ask customer), follow it; for choices follow autopilot.default_decisions; autopilot.never_auto_actions (mode=replace, delete assets, overwrite customer-uploaded images, allow_era_ref_conflict, voice cloning, delivery acceptance) always require customer approval in every mode. ★In managed stages, re-generating frames for the same shot (generate_shot_frame) is capped at 3 rounds, re-generating videos (regenerate_shot_video / edit_video_shot) capped at 3 times; at the cap the platform returns 409 AUTOPILOT_SHOT_REGEN_LIMIT (no charge)—do not bypass with another tool; stop and ask the customer: if they agree to more, quote normally and pass customer_approved_more_regens:true when generating (grants another cap); if they accept the current result, continue, and pass acknowledge_review:true on the next paid call to record confirmation. 402 BUDGET_WOULD_EXCEED / 409 MODEL_UNAVAILABLE / 409 AUTOPILOT_SHOT_REGEN_LIMIT / 400 AUTOPILOT_MUST_ASK with must_ask_customer=true / non-empty pending_questions → pause and ask the customer **once with a consolidated summary** of get_autopilot_log pending_questions; customer-controlled stages follow professional-mode asking. After final cut, deliver to customer using get_autopilot_log report. ★Three-tier execution strategy (do not mix the tiers when asking the customer): ①【Basic project settings·free·mandatory foundation·set when creating the drama; do not create an empty shell】project_type/setting_brief (worldview·ERA LOCK)/ethnicity/aspect ratio and resolution, plus consistency anchors cinematography_prompt (cinematography DNA)·art_bible (art bible)·visual_lock (visual lock)—all free, the foundation driving full-chain consistency; if not set, all later generation drifts and rework costs money. Set directly with create_drama/update_project_settings. ★visual_lock/art_bible should only contain frame-level/world-level locks (camera language·environment·art tone·forbidden elements), **never pin clothing/hairstyle/appearance details for specific characters**—the only source of truth for character appearance is the character profiles from extract_assets (change via update_character); writing both inevitably conflicts: character sheets vs profiles, concept images vs visual lock, consistency gates reject by character sheet → concept images/shot frames get **structurally rejected repeatedly**, no number of rerolls will pass, pure wasted spend. ★★【Era contract·free·mandatory before image generation for non-contemporary or surreal subjects】The worldview in setting_brief is **free text**, only provides background and cannot constrain images; the real override stronger than visual lock is the **structured era contract**: use set_era_contract to set the episode tier (modern/republican/historical/fantasy/surreal), get_era_contract to read current value. **Unset means empty**—the platform can only stack words in prompts; modern objects appearing in ancient images, scene images rendered in the wrong era, are mostly caused by this being empty. ★Xianxia/fantasy/wonderland types **must use fantasy, not historical**: historical demands evidence-based realism and will mark glowing aura, floating terrain, non-human forms as “not era-compliant”, pulling images toward realistic antiquity. For a single scene exception (e.g. modern flashback in a fantasy world), use update_scene era_contract to override; scene-level overrides episode-level. ★★【Per-stage review protocol·all free·main line preventing waste, not optional】After each stage output, review first, tell the customer the conclusion verbatim, then proceed. **Five hard gates (failing causes 400 rejection; ④⑤ and agent QC below)**: ① after rewritten draft → review_script (before extract_assets / generate_storyboards); ② after storyboards → review_storyboards (before generate_frames); ③ after shot images → review_frames (before generate_videos). Each review returns review_token; pass it to downstream paid tools. Explain findings one by one to customer (code=issue type·shots=hit shot numbers·action=which tool to fix with); after fixing per action, **review again** before proceeding. If content changes after review → token invalidates automatically; re-review once (free). error blocks by default; only if the customer is explicitly informed and insists may you pass acknowledge_review:true (acknowledge_review only means the customer personally agreed; every execution mode requires explicit customer agreement, including managed). Managed stages may use auto_acknowledge:true only for whitelisted heuristic errors (see 【Execution-mode master guide】). **Soft guidance (non-blocking but strongly recommended, also free)**: before image/video generation run run_precheck (finds shots vendors will reject, prevents wasted spend)—★**for whole-drama scan, first run run_drama_precheck** (drama-level summary·free·read-only): get issue counts per episode and attention (which episodes to fix first), prioritize accordingly, then run run_precheck on those episodes for details; do not blindly scan episode by episode. Note not_covered—the drama-level scan skips the only lint requiring images; “0 drama issues” ≠ “everything checked”. ★After issues are found, do not blindly edit yourself: plan_precheck_fix lets the platform compute proposals → apply_precheck_fix commits selected ones (for managed=accept all according to execution mode: professional mode / unconfirmed plan / customer-controlled current stage → tell customer and proceed only after agreement; do not decide for them; managed current stage → do not ask, follow get_production_plan autopilot.default_decisions, platform records in get_autopilot_log); after storyboards run get_health_report; after character sheets are done use get_characters to verify every on-screen character has image/sheet; after frames use get_storyboards to inspect frame_status and fail_reason/fail_hint (fix failed shots before continuing; do not make videos from bad frames); after videos inspect video_status similarly; before final cut use get_pipeline_status to confirm no missing shots. ★**Never generate all the way through blindly**: pushing generate calls without review amplifies issues at every layer and can waste the whole episode; every image/video rework is charged. Reviews are all free; catching issues costs nothing. ★Changing clothing edits structured bindings: update_shot active_wardrobe_id (whole shot) / appearance_wardrobes (per character in multi-character shots), can override or clear—text description changes do not change clothes, and the customer need not edit on the website. ②【Production mainline·in order, no skipping·★storyboard before assets】set_script→rewrite_script→★review_script→extract_assets→storyboards (storyboard first·pure-text shot breakdown)→★review_storyboards→★Script discipline (endpoint-enforced, cannot be bypassed): all raw material (synopsis/outline/finished draft) goes in set_script, **must pass rewrite_script to produce the AI rewritten draft**—pasting a self-written script directly into edit_rewritten_script to bypass rewriting will be rejected with 400 (without a rewritten draft there is nothing to edit); extract_assets also requires the rewritten draft. All post-rewrite edits must use AI-output structured formats: script edits via edit_rewritten_script (polish/correct), character profiles via update_character, storyboards via update_shot/replace_shot_dialogue—do not replace the whole script again or write a second truth source in settings; conflicting truth sources are the #1 consistency accident. ★★**After one successful rewrite, do not rerun rewrite_script**: it restarts from the whole original, discards all current fixes, and the new version is not guaranteed to preserve fixed parts (three-version tests oscillate). To fix, use edit_rewritten_script targeted edits (get_script full text → change only those scenes, copy all else verbatim → submit whole text), free, instant, deterministic; if rerun by mistake, use get_script(include_previous=1) to recover the previous version. generate_portraits_and_sheets (character sheets + turnaround sheets·build after storyboards: first use delete_character to delete on-screen characters that **do not appear in any episode of the whole drama and are not planned for later episodes** before image generation—characters are drama-level; after deletion, every episode’s frame assembly will no longer include them; you cannot judge by this episode’s storyboards alone, keep if unsure (one character sheet costs far less than losing an identity anchor in a later episode); this step generates images for **all undeleted on-screen characters**, regardless of storyboard binding, and charges for all kept characters; off-screen voice characters (char_type=voiceover narrator/phone voice) do not get images and have no storyboard binding, **do not delete them**, dubbing still needs them)→★generate_color_script (color script·unified grading)→assign_voices (assign voice colors; if narrator/character library has no suitable voice → design_voice by description, then set_character_voice after sample confirmation)→★quote_scene_images+generate_scene_images (empty scene plates·mandatory before frames)→frames (default only first frames)→★tail_frame_plan (free·which shots need independent last frames)→frames(frame_type=last_frame)→★chain_frames (seams·dry_run:true first)→★review_frames→videos→generate_tts→compose; ★★【Do not skip seams·after last frames complete, before review_frames】After first/last frames are ready, call chain_frames(dry_run:true, free) to see the platform seam plan and estimated_points (copy free, reframe costs one image per seam), tell customer and after confirmation execute without dry_run; already chained seams are excluded from the plan, repeated calls do not double-charge. ★After execution, reframe is **async image generation**: use get_jobs to watch the first_frame generation rows for shots in the plan, wait until all pending/processing finish (for failed, inspect error_msg; use chain_shot_from for a single seam), then run review_frames—while the old first frame remains, get_storyboards frame_status is still ready and cannot show whether the new image is generating or failed. After get_jobs is clear, use get_storyboards to verify seam_state: replacement images rejected during promotion are not kept in get_jobs, that seam remains unchained (review_frames also reports seam_unchained); reconnect per its action. If you review before it lands, you review the old first frame; the token invalidates when the new first frame lands. Episodes with per-shot/batch frame generation usually were not auto-chained (get_storyboards seam_state=unchained means this); skipping it does not error—the cost is discontinuity between shots and jump cuts in final cut. ★★【Do not skip last frames·frame generation is two-pass】generate_frames defaults to first frames only. About 30% of shots have **end state ≠ start state** (large camera move/object released/state change); these need an independent last frame, and the criterion is platform-side, not guessable from storyboard text—therefore after first frames finish you must call the free tail_frame_plan once for the per-shot list, then fill with frame_type=last_frame (shots_needing_last_frame in generate_frames response is this number; if not 0, do not go directly to review_frames). Skipping does not error or block—the cost is those videos having only the first frame as anchor, leaving end state to the model: action incomplete, large camera moves end by returning to start composition. Production tests: in 32 episodes, 30 generated only first frames; 23 of those proceeded all the way through video. ★★【When last frames are blocked by TERMINAL_DESC_GATE: edit text, do not retry】For shots reporting “this shot is marked as state change but nowhere says what it looks like at the end”, use update_shot to write **what the image looks like at the end** into that shot’s last_frame_prompt, then regenerate the last frame. ★Better: **avoid hitting it**—before last frames, call get_storyboards and list all terminal_desc_missing=true shots for the episode at once (free), fill their last_frame_prompt first, then generate; zero rejections needed. Per-shot also possible via get_shot_prompts same field, but do not do that for dozens of shots. Retrying without the description is ineffective—the vendor prompt has no terminal-state segment, so it still draws the first-frame pose and will fail terminal review again, with normal charges each time (production test: last-frame success 9.4% without terminal text, 40.2% with it). Only for shots that truly “almost do not change” use generate_shot_frame allow_missing_terminal. ★★【Do not skip empty scene plates·third parties often miss this】Scene images are **background anchors**: every shot frame in the same scene anchors to them. Frames can still be generated without plates, with no error and no block—the cost is **the first shot of every scene has no background anchor at all** (platform fallback is “if missing image is discovered, generate one in background”; that generated plate is used by later shots in the same scene, but the triggering first shot cannot wait for it), and the first shot is often the tone-setting shot; backgrounds also drift among later shots. They pair with character sheets: character sheets anchor people, scene images anchor environments; whichever is missing drifts. Progress self-check: generate_scene_images step in get_pipeline_status (completed/total); review_storyboards also reports scene_plate_missing before frames. ★★【Do not skip turnaround sheets·character sheet ≠ turnaround sheet】A character sheet is a single-person single-image identity anchor; a turnaround sheet is a multi-view turnaround generated by the platform from the character sheet, the root consistency anchor for shot frames/videos (angle changes·lighting changes·clothing mostly depend on it). Frames can still be generated with only character sheets, no error—the cost is characters drift when angle changes and clothing differs every shot. Use generate_portraits_and_sheets for one-click two-step (each call advances one step; after character sheets are complete, call again to generate turnaround sheets), or call generate_character_sheets after character sheets. Progress self-check: get_pipeline_status generate_character_sheets step (completed/total, portrait_only=characters with only character sheets). ★Customer-provided images: character sheets must be single person, single image, single angle, no text; scene images must be empty scenes with no people and no overlay text—set_character_portrait/upload_scene_image auto-check and reject noncompliance with 422. ★Do not build character images/prop sheets/motion templates before storyboards—storyboards are pure text and need no images; the cast is finalized after storyboards, so delete non-appearing characters first to save (motion templates also must be after storyboards). Paid steps follow current quote confirmation flow. Ads additionally need add_product+generate_product_sheet; MV uses set_mv_lyrics→generate_mv_story→generate_mv_script (if no existing song: after set_mv_lyrics first suggest_mv_song_styles→quote_mv_song→generate_mv_song→get_mv_song→select_mv_song). ★★【④⑤ two new hard gates + agent personal QC】④ asset layer: after character sheets/turnaround sheets/scene images/prop images → review_assets (before generate_frames / generate_shot_frame; its token is asset_review_token and is passed together with the storyboard-layer review_token); ⑤ video and audio layer: after videos/dubbing/music → review_videos (before compose_episode); after final cut run review_final_cut. ★After every layer review you must also **personally QC**: follow returned agent_qc, inspect assets one by one (download images, sample video frames, read text), answer the checklist, submit via submit_qc_report; for grayscale dramas, without the report the review_token cannot enter the next step; report issues block by default like errors. The platform judges existence; you judge likeness and correctness. ★★【Single-shot path is also gated】generate_shot_frame must also pass storyboard-layer review_token; regenerate_shot_video must also pass shot-image-layer review_token—do not expect per-shot tools to bypass reviews (a tested workflow generated all 25 shots by single-shot frames without any gate; all final-cut rework cost real credits). Generating frames does **not** invalidate storyboard-layer token (fingerprint only looks at storyboard content); only changing storyboard content—update_shot / import / add-delete shots / change character bindings—requires one free quick re-review. Generating one shot’s frame invalidates the **shot-image-layer** token; before regenerate_shot_video for the next shot, run review_frames once. ★★【For native-audio dramas, lock voices before batch videos】When use_clip_audio=true (default), each shot’s voice is sampled separately by the video vendor; without locking, it will drift and later unification requires per-shot video regeneration. If customer-authorized source audio exists → clone_voice+set_character_voice before generate_videos; otherwise → for each speaking character first use single-shot quote_regenerate_shot_video→regenerate_shot_video to generate one shot with longer dialogue (generate_videos has no per-shot parameters and only batch-fills missing videos; single-shot regeneration also works for shots with no video yet), use set_voice_anchor_from_shot to choose that voice line, then generate remaining shots. get_pipeline_status native_voice_anchor lists unanchored_speakers still unlocked and stale_shots generated before locking that need regeneration. ★Worldview concept image = mandatory by default (improves whole-drama consistency; many third-party platforms miss this): after storyboards, call generate_world_concept by default, still following quote confirmation (tell customer estimated credits, confirm before charging)—do not silently charge, and do not skip. ★★【Color script】generate_color_script unifies grading across the whole film, done after storyboards and before frames; text step has no quote_* and is postpaid by usage. Progress self-check: get_pipeline_status generate_color_script; review_storyboards reports color-script gaps. ★Motion templates are optional experimental: call generate_motion_templates (motion template extraction) only when the customer explicitly requests it, after storyboards; text step postpaid by usage. First/last frames do not inject motion templates by default; missing templates do not need backfill and do not block images/videos/final cut. Video templates may be cropped; no delivery or gain is guaranteed. ★Scene Bible (detailed scene settings) order is **after scene images are generated**—complete it based on finished scene images (no MCP tool yet; do on official site); do not do Scene Bible before scene images. ★Audio defaults to video native audio (use_clip_audio on by default; skip TTS and use AI video’s built-in audio): when creating/updating a drama, the AI should proactively tell the customer “Default uses video native audio; if TTS dubbing is needed set use_clip_audio to false” and let them choose. ★Default image model is ChatGPT Image 2.5 Flare (gpt-image-2.5-flare·unified whole-drama style): set image_model in create_drama/update_project_settings; omitted means this default; options: gpt-image-2.5-sunburst (same price·more accurate Chinese glyphs/details)/gemini-3.1-flash-image (Nano Banana 2·71 credits)/gemini-3-pro-image (Nano Banana Pro·more detailed·175 credits)/gemini-3.1-flash-lite-image (Nano Banana 2 Lite·cheap·31 credits)/doubao-seedream-5-0-260128 (Seedream5.0); generate_frames can temporarily override for one run. ★2.5 charges by input volume (base 11 credits + 18 credits per reference image), Nano Banana/Seedream are flat-price—budget must include this for shots with many references. ★Four video engine choices (drama-level·when AI creates a drama it must proactively guide selection by genre and show price differences for customer decision):【Selection decision tree】★Call get_production_menu first: whether each engine is currently available for realistic live-action / anime and other subject classes is decided by the availability it returns (unavailable entries carry customer_note and expected_until—relay them to the customer verbatim); do not assume from this description that any model is unavailable, and do not recommend models the menu marks unavailable. ①Realistic live-action drama→seedance-2.5 (strongest instruction following / face detail · pricing baseline 720p = 1×), or hailuo-3 when budget-sensitive (about 1/3 cost, 720p ≈0.33× · strong fidelity editing · can output 2K · but about 6 minutes per shot); ★After choosing, pass video_engine explicitly in create_drama / update_project_settings (the one the menu lists as available for this subject class)—if omitted, the platform only applies a style-based fallback stamp that is not guaranteed to be an engine the menu marks available; ② stylized/animation/3D cartoon drama·empty shots·product shots→wan3.0 (about 40% cost, 720p ≈0.4×ond·max 30 seconds·min 2-second billing·each shot ~2 minutes), use wan3.0-prime for rush delivery (720p ≈0.6×·~1 minute); ★Always quote prices as relative multiples (seedance-2.5 720p = 1×); call quote_* before giving the customer absolute credits; ③★Never choose wan3.0/prime for realistic live-action drama—WAN output-side real-human face review consistently rejects at 720p+ and retries cannot fix; ④★★Use wan3.0/prime cautiously for narrative dramas (dialogue, coherent story, stable shot rhythm): WAN will **self-cut hard camera changes inside a single storyboard shot** (test: 11/12 shots had intra-shot jump cuts, vs seedance-2.5 only 1/6 and hailuo-3 0/5), final cut feels like “the image jumps around within one shot and cuts too fast”; this is weak vendor instruction following and cannot be stopped by prompt constraints (our negative constraints are already included and tested ineffective), fix afterward only by regenerating with another engine. WAN suits inherently short-fast stylized/empty/product shots; for stable single-shot narrative choose seedance-2.5 or hailuo-3. After generation, use scan_intra_shot_cuts to inspect; ④b★★Use hailuo-3 cautiously for dialogue-heavy drama (different from the previous “intra-shot self-cut”; this is about **whether all dialogue is spoken**): native-audio engine stops reading when the shot ends and may ad-lib; tests show “dialogue not fully spoken” rate hailuo-3 **50%** (26 shots, all generated after 8-30 native-audio fixes, so engine-intrinsic), seedance-2.5 **23%** (294 shots); wan3.0 has **insufficient sample, not tested** on this dimension (26 samples all before same fix, only 2 shots after fix)—do not conclude WAN is bad from this. When customer says “line not finished”, first run scan_dialogue_coverage and categorize; do not default to lengthening shots (even with sufficient shot length, 32% still missed full lines). ⑤★Shot duration control (all engines, especially visible on WAN): keep each shot 3~5 seconds. Longer shots give the model more room to improvise—test: one 16-second shot (neighboring shots 3~5 seconds) changed scenes 4 times inside the shot, the character disappeared for 4 seconds and then grew back from the edge; customer sees “a person appeared out of nowhere”. For long performance, split into multiple short shots and connect with frame chaining; do not write single shots over 15 seconds. 【Resolution decision】Draft/iteration: WAN dramas 480p (≈0.2× cheapest), others 720p; final delivery: seedance dramas 720p (for HD delivery choose 1080p, about 2.5× 720p), hailuo-3 dramas 1080p (=2K·≈0.53×ond), WAN dramas 1080p (≈0.8×ond); hailuo-3 has no independent 480p tier (selecting it bills as 768P); set video_engine/video_resolution in create_drama/update_project_settings, ★both must be decided before video generation—switching does not back-propagate to generated shots, and mixing within one drama causes style/identity drift. ★Slow image generation ≠ failure: each image takes tens of seconds to minutes; a full episode may take over ten minutes. Poll get_storyboards frame_status—pending=still generating (wait patiently; do not call generate_frames repeatedly and waste credits), ready=done, failed=real failure. ★To change a specific shot image / make a new character sheet take effect, use **single-shot regeneration generate_shot_frame** (platform automatically includes identity anchors, scene/prop references, style anchors for that shot, preserving whole-film consistency); generate_frames only batch-fills shots with **missing frames** and skips shots that already have first frames (normal, not “refusal”). ★After first frames, call free tail_frame_plan to see which shots need independent last frames, then batch-fill with frame_type=last_frame. After changing a character sheet (set_character_portrait), response stale_frames are shots polluted by the old image and requiring per-shot regeneration. ★Never use external tools to make first/last frames and upload_shot_frame to “change the image”—external images lack identity/style anchors, so characters/clothing/style will drift; that is the real root of waste. upload_shot_frame is only for customer-owned real footage/assets. ③【Optional enhancements·AI proactively tells customer·quote confirmation required】Art bible generation / visual lock extraction / scene groups / lip sync / poster / sound effects / music / subtitle translation—these improve consistency/quality and are mostly paid. ★AI should proactively tell the customer these are available and quote them (whether to run depends on execution mode: professional mode / unconfirmed plan / customer-controlled current stage → tell customer and proceed only after agreement; do not decide for them; managed current stage → do not ask, follow get_production_plan autopilot.default_decisions, platform records in get_autopilot_log); neither silently skip nor charge without permission. ★Two lock disciplines: ①**Aspect ratio** is set in create_drama, locked at drama level, used by all later images/videos/final cuts, **do not change midstream** (generated content would have inconsistent aspect ratios and drift); default 9:16 if unset. ②**5-7 seconds per storyboard shot is a normal AI-video-optimized duration**, do not mistakenly re-split because “shots seem long”—generate_storyboards **replaces all storyboards in the episode**, wasting generated images; backend blocks if storyboards already exist and requires confirm_replace. ★Rewrite fidelity (default auto intelligent routing): when the set_script original **is already script-shaped** (scene headers/dialogue-line structure), rewrite_script automatically runs two-pass fidelity—customer dialogue is machine-gate locked line by line (dropping one line triggers internal rejection and redo), AI never adds plot; dramaturgical gaps (hooks/emotional anchors) are not auto-filled but listed in get_script dramaturgy_suggestions (whether to adopt depends on execution mode: professional mode / unconfirmed plan / customer-controlled current stage → tell customer and proceed only after agreement; do not decide for them; managed current stage → do not ask, follow get_production_plan autopilot.default_decisions, platform records in get_autopilot_log). If original is novel/outline, it auto-runs creative rewriting (AI builds hooks/emotional beats). Both customer types get the right path; no manual switch needed. To override defaults, use update_project_settings rewrite_pipeline (auto/two_pass/single_forced) and fidelity_enforce (1=hard fidelity gate). Handling “AI changed my script too much”: ①confirm full original is in set_script; ②set rewrite_pipeline to two_pass and rerun rewrite_script; ③after customer confirms character appearance, use update_character profile_locked=1 to lock profiles and prevent later extraction from overwriting appearance and changing the character sheet face. ★If customer wants to rewrite the script on **another AI platform** (common: third-party model judges our rewrite “changed too much”, customer wants control over change degree): first call get_script_format_spec to get the platform-accepted format contract (markdown template + external_prompt directly forwardable to the external model + blank skeleton), send external_prompt+template+customer original to that platform; after receiving the organized draft, **first call check_script_format** for self-check (free·rules only·no model). After errors clear, two exits: 【A】adopt_external_script directly commits it as shootable draft (our AI not involved·instant·free, provided the external draft contains production-layer annotations); 【B】set_script back into the original slot + rewrite_script through two-pass fidelity (choose this when the external draft only handles story layer; platform adds annotations; customer-written annotations are stripped and rewritten on this path). ★Do not put externally organized drafts into edit_rewritten_script (400 if no rewrite has run), and do not skip check_script_format before ingesting—noncompliant scripts are still gate-blocked and waste a run. ★★If the customer provides an **already finished storyboard table** (per-shot seconds/shot size/camera movement), neither path above applies—use import_storyboard_table directly to create storyboards, skipping rewrite and shot breakdown. The rewrite path will strip seconds/shot size/camera movement/STYLE/text cards as non-story content (production test: 8 shots 36 seconds → 20 shots 109 seconds). ★Both import channels are deterministic—errors are imported as-is, so **get the contract first, self-check, then import**: storyboard table path uses get_storyboard_table_spec → check_storyboard_table → import_storyboard_table; if customer tools/tables export structured data, or external AI can produce JSON directly, use get_bulk_import_spec → check_bulk_import → bulk_import_storyboards (storyboards only; characters/scenes/props are extracted from script by extract_assets, import binds existing items by name—extract first, then import). Both imports default with auto_complete (background AI fills professional fields + image/video prompts, text step postpaid; inform customer before calling): if receipt started=true, poll get_autofill_status until done before review_storyboards—autofill changes shots, so a token reviewed earlier invalidates. Use get_pipeline_status for progress (returns project-type-specific steps). ★★【Opening plan·first thing after creating drama·free】First ask basic video parameters (project type/aspect ratio/episode count × minutes per episode/genre: realistic_human·stylized·product/native audio or dubbing), then call get_production_menu to fetch the **currently available** three-tier packages (effect description + real-time estimate including text steps + recommended budget + excluded items) and present them to customer—do not recommend models from memory; some models may be temporarily unavailable for some genres, and the menu is already filtered. Then ask customer to choose execution mode (pro control every step / auto one-click final cut / custom select managed stages), budget budget_points, and automatic overrun cap (0/10/20/30/50%): **default recommendation** budget=selected tier recommended_budget (non-text upper bound ×1.2 plus text estimate), overrun=menu recommended_overrun_pct (30%)—QC regenerations are not in the upper bound and are covered by overrun; recommendation is only recommendation, final numbers are customer-decided; if customer changes them, follow customer. Clearly summarize and only after explicit customer agreement call confirm_production_plan(customer_confirmed:true)—never confirm on behalf of customer. For dramas with confirmed plans: before paid dispatch, platform rechecks model availability and quote upper bound ≤ budget×(1+overrun%); if blocked (402 BUDGET_WOULD_EXCEED / 409 MODEL_UNAVAILABLE), stop and ask customer, do not switch models or adjust budget yourself. confirm returns 403 PRODUCTION_PLAN_NOT_OPEN = drama not open (grayscale); follow original step-by-step confirmation flow.",
|
|
6
|
+
"rewrite_script": "AI rewrite: convert the source script into a shootable script (read content → write script_content). Automatically selects the rewrite agent by project type. ★Fidelity auto-routing: if the source is already in script form, automatically uses two-pass fidelity (dialogue locked line by line by machine, AI does not add plot; dramaturgical gaps go into dramaturgy_suggestions; whether to adopt follows execution mode: pro mode / unconfirmed plan / customer-controlled step → explain to customer and do only with customer approval, do not decide for them; autopilot step → do not ask customer, follow get_production_plan autopilot.default_decisions, platform records in get_autopilot_log); if the source is a novel/outline, uses creative rewrite. (Ads use ad rewrite; MV is blocked from standard rewrite.) Backend async (minutes), text step is token postpaid, no arrears, no quote needed. After completion use get_script to review, edit_rewritten_script to revise. ★Typical time 2~4 minutes (production observed ≈169 seconds). **No result within 60 seconds is normal, not failure**—use get_run_status to check whether it is still running; do not rush to resubmit. ★★**This tool is \"redo from the entire source\", not \"make another revision\"**: rerunning when a shootable script already exists overwrites the current script and all prior fixes, and the new version **does not guarantee preserving parts already fixed in the old version** (production test across three versions: long narration split in the previous version was merged back in the next; correct period costume in the previous version drifted in the next). overwrites_existing_script=true in the response means exactly this. Therefore **after the first successful rewrite, all later changes must use edit_rewritten_script for targeted edits**—free, seconds-level, only touches the specified scenes, everything else remains byte-identical, deterministic with no lottery; rerun this tool only when a \"completely different version\" is required. If rerun by mistake, use get_script(include_previous=1) to retrieve the previous version. ★★【Execution-mode master rules · read before starting】For dramas with a confirmed opening plan, first get_production_plan and read autopilot: pro mode (pro, or autopilot.enabled=false, unconfirmed plan) → every later \"explain to customer and do only with customer approval\" is literal; auto / custom **autopilot steps** → do not ask customer: advance in order per get_pipeline_status next_action, self-confirm quotes within the hard budget cap, after each layer still run review_* + agent QC, and follow autopilot.next_step returned by review/QC (whitelisted error with auto_acknowledge:true / which self-fix round / pause to ask customer); for choices follow autopilot.default_decisions; autopilot.never_auto_actions(mode=replace, asset deletion, overwrite customer-uploaded images, allow_era_ref_conflict, voice cloning, delivery acceptance) always require customer approval in every mode. ★For the same shot in autopilot steps, generate_shot_frame regeneration max 3 rounds and regenerate_shot_video / edit_video_shot max 3 times; at the limit platform returns 409 AUTOPILOT_SHOT_REGEN_LIMIT (no charge)—do not bypass with another tool; stop and ask customer: if customer approves more regenerations, quote normally and generate with customer_approved_more_regens:true (grants another limit); if customer accepts current state, continue, and include acknowledge_review:true on the next paid call to record confirmation. 402 BUDGET_WOULD_EXCEED / 409 MODEL_UNAVAILABLE / 409 AUTOPILOT_SHOT_REGEN_LIMIT / 400 AUTOPILOT_MUST_ASK with must_ask_customer=true / nonempty pending_questions → pause, summarize get_autopilot_log pending_questions **once** and ask customer; customer-controlled steps follow pro mode. After final cut, deliver to customer using get_autopilot_log report. ★Three execution tiers (do not mix the three when asking customer): ①【Basic project settings · free · mandatory foundation · set when creating drama, do not create an empty shell】project_type/setting_brief (worldview · ERA LOCK)/ethnicity/aspect ratio resolution, plus consistency anchors cinematography_prompt (cinematography DNA) · art_bible · visual_lock— all free, the foundation driving full-pipeline consistency; if not set, all later generation drifts and rework costs again. Set directly with create_drama/update_project_settings. ★visual_lock/art_bible should contain only image-level/world-level locks (shot language · environment · art direction · forbidden elements), **never pin costume/hairstyle/appearance details for specific characters**—the single source of truth for character appearance is the character profiles output by extract_assets (change via update_character); writing both inevitably conflicts, character sheet vs profile and turnaround vs visual lock, consistency gates reject by character sheet → turnarounds/shot frames get **structural consecutive rejection**, no number of rerolls can pass, pure wasted money. ★★【Era contract · free · must set before image generation for non-contemporary or surreal subjects】The worldview in setting_brief is **free text**: it only provides background and cannot constrain images; what can truly override visual lock is the **structured era contract**: use set_era_contract to set this episode tier (modern/republican/historical/fantasy/surreal), get_era_contract to read current value. **Unset means empty**—the platform can only stack prompt text to fight the model; modern objects entering ancient images and scene images drawn as another era are mostly caused by this being empty. ★Xianxia/fantasy/fairyland **must use fantasy, not historical**: historical requires researched realism and will judge glowing aura, floating terrain, nonhuman forms as \"era-inconsistent\", pulling images toward realistic ancient style. For an exception in one scene (e.g. a modern memory in a fantasy world), use update_scene era_contract override; scene-level overrides episode-level. ★★【Per-step review protocol · all free · main line preventing bad films, not optional】After each step output, review first, tell customer the conclusion verbatim, then proceed. **Five hard gates (otherwise 400 rejected; ④⑤ and agent QC below)**: ①After rewritten script → review_script (before extract_assets / generate_storyboards); ②After storyboards → review_storyboards (before generate_frames); ③After shot images → review_frames (before generate_videos). Each review returns review_token; pass it to downstream paid tools. Explain findings to customer item by item (code=issue type · shots=hit shot numbers · action=which tool to fix with); after fixing per action, **review again** before proceeding. If content changed after review → token auto-invalidates; one re-review is enough (free). error blocks by default; only if customer is explicitly informed and insists may you pass acknowledge_review:true (acknowledge_review only means the customer personally agreed; any execution mode requires explicit customer approval, autopilot included). In autopilot steps only whitelisted heuristic errors may carry auto_acknowledge:true (see 【Execution-mode master rules】). **Soft guidance (non-blocking but strongly recommended, also free)**: before images/videos run run_precheck (catches shots vendors will certainly reject, avoiding wasted credits)—★**to scan the whole drama, run run_drama_precheck first** (drama-level summary · free · read-only): get issue counts and attention per episode in one call (which episodes to fix first), prioritize by it, then run run_precheck on those episodes for itemized details; do not blind-scan episode by episode. Note its not_covered—drama-level skips the only lint that needs images, so \"0 issues for whole drama\" ≠ \"everything checked\". ★After findings, do not blindly edit yourself: plan_precheck_fix lets platform compute proposals → apply_precheck_fix persists them (which to accept; autopilot=accept all per execution mode: pro mode / unconfirmed plan / customer-controlled step → explain to customer and do only with customer approval, do not decide for them; autopilot step → do not ask customer, follow get_production_plan autopilot.default_decisions, platform records in get_autopilot_log); after storyboards run get_health_report; after character sheets are done, use get_characters to verify every appearing character has image/sheet; after frames, use get_storyboards to inspect frame_status and fail_reason/fail_hint (fix failed shots before proceeding; do not generate videos from bad frames); after videos likewise inspect video_status; before final cut use get_pipeline_status to confirm no missing shots. ★**Never just generate all the way through**: pushing without reviews amplifies issues at every layer and finally forces redoing the whole episode—every image/video retry is charged. Reviews are all free; catching early costs nothing. ★Changing costume is a structured binding edit: update_shot active_wardrobe_id (whole shot) / appearance_wardrobes (per-character in multi-character shots), can override or clear—editing text description does not change clothes, and customers need not change it on the web. ②【Production trunk · ordered, no skipping · ★storyboard before asset creation】set_script→rewrite_script→★review_script→extract_assets→storyboards (storyboard first · pure text shot breakdown)→★review_storyboards→★Script discipline (endpoint-enforced, cannot bypass): all raw material (synopsis/outline/finished script all count) goes into set_script and **must pass rewrite_script to produce an AI rewritten script**—pasting your own script directly into edit_rewritten_script to bypass rewrite will be 400 rejected (no rewritten script means no editable object); extract_assets likewise requires the rewritten script. All post-rewrite edits use the structured AI-output format: edit_rewritten_script (polish/correct), update_character, update_shot/replace_shot_dialogue—do not go back and replace the whole script or write another truth source in settings; dual sources of truth are the top cause of consistency accidents. ★★**After one successful rewrite, do not rerun rewrite_script**: it redoes the whole source, losing all current fixes, and the new version does not guarantee preserving old fixed parts (three-version tests drift back and forth). To fix, use edit_rewritten_script targeted edit (get_script full text → change only those scenes, copy the rest byte-identically → submit full script), free and seconds-level, deterministic; if rerun by mistake, recover previous with get_script(include_previous=1). generate_portraits_and_sheets (character sheets + turnarounds · create after storyboards: first use delete_character to remove appearing characters that **do not appear in any episode of the whole drama and are not intended for later episodes** before image generation—characters are drama-level; once deleted, frame assembly for every episode will no longer include them; this cannot be judged from this episode's storyboards alone, keep if unsure (one character sheet costs far less than losing the identity anchor in a later episode); the character sheet step generates images for **all undeleted appearing characters**, regardless of storyboard bindings, and all kept characters are charged; voiceover characters (char_type=voiceover narrator/phone voice) are not imaged and have no storyboard binding, **do not delete**, audio still needs them)→★generate_color_script (color script · unified grading)→assign_voices (assign voice types; no suitable narrator/character-library voice → design_voice from description, then set_character_voice after sample approval)→★quote_scene_images+generate_scene_images (empty scene plates · required before frames)→frames (default first frames only)→★tail_frame_plan (free · which shots need independent tail frames)→frames(frame_type=last_frame)→★chain_frames (seams · first dry_run:true)→★review_frames→videos→generate_tts→compose; ★★【Do not skip seams · complete tail frames before review_frames】After first/tail frames are ready, call chain_frames(dry_run:true, free) to see the platform's seam plan and estimated_points (copy free, reframe costs one image per seam); explain to customer and, after confirmation, execute without dry_run. Already chained seams are excluded, repeat calls do not double charge. ★After execution, reframe is **async image generation**: use get_jobs to watch the planned shots' first_frame jobs, wait until all pending/processing are done (for failed, inspect error_msg; use chain_shot_from for a single seam), then review_frames—the old first frame still exists so get_storyboards frame_status remains ready and cannot show whether the new image is running or failed. After get_jobs clears, use get_storyboards to check seam_state: replacement images rejected on promotion do not remain in get_jobs; that seam remains unchained (review_frames will also report seam_unchained), reconnect per its action. If you review before landing, you review old first frames; the token expires when the new first frame lands. Episodes generated shot-by-shot/batch often have not been auto-chained (get_storyboards seam_state=unchained); skipping causes no error—the cost is visual mismatch between shots and jump cuts throughout the final cut. ★★【Do not skip tail frames · frames are two passes】generate_frames defaults to first frames only. About 30% of shots have **end state ≠ start state** (large camera moves/object release/state change) and need an independent tail frame; the criterion is platform-side and cannot be guessed from storyboard text. Therefore after first frames, you must call the free tail_frame_plan once for a per-shot list, then fill frame_type=last_frame (shots_needing_last_frame in generate_frames response is this count; if not 0, do not go directly to review_frames). Skipping causes no error and does not block you—the cost is those shots only have a first-frame anchor when generating video, so the model improvises the end state: actions miss, large camera moves end back at the starting composition. Production observed 30 of 32 episodes generated only first frames; 23 still generated videos all the way. ★★【When tail frame is blocked by TERMINAL_DESC_GATE: edit text, do not retry】For shots reporting \"this shot is marked as state-changing but nowhere describes what the end looks like\", use update_shot to write **what the image looks like at the end** into that shot's last_frame_prompt, then regenerate the tail frame. ★Better: **avoid hitting it**—before tail frames, call get_storyboards once; terminal_desc_missing=true lists all such shots in the episode (free). Fill their last_frame_prompt first, then generate, with zero rejections. You can also query per shot via get_shot_prompts same field, but do not do that for dozens of shots. Retrying without adding description is ineffective—the vendor prompt has no terminal-state segment, so it still draws the starting pose and will be rejected again by terminal review, while each try is still charged (production observed tail-frame success 9.4% without terminal description, 40.2% with it). Only for shots that truly should be \"almost unchanged\" use generate_shot_frame allow_missing_terminal to bypass. ★★【Do not skip empty scene plates · this step is often missed by third parties】Scene images are **background anchors**: every shot frame in the same scene anchors to them. Frames can still be generated without plates, with no error and no blocking—the cost is **the first shot of each scene has no background anchor at all** (platform fallback image generation is \"when missing image detected, generate one in background\"; later shots in the same scene use it, but the triggering shot itself cannot wait for it), and the first shot is often the tone-setting shot; backgrounds also drift across later shots. It pairs with character sheets: character sheets anchor people, scene images anchor setting; whichever is missing drifts. Progress self-check: `get_pipeline_status` generate_scene_images step (completed/total); `review_storyboards` also reports scene_plate_missing before frames. ★★【Do not skip turnarounds · character sheet ≠ turnaround】A character sheet is a single-person single-image identity anchor; a turnaround is a multi-view turnaround generated by the platform from the character sheet, the root consistency anchor for shot frames/videos (angle changes · lighting changes · costumes mostly rely on it). Frames can still be generated with only character sheets and no error—the cost is character drift when angle changes and costumes differ every shot. Use generate_portraits_and_sheets for both steps (each call advances one step; after character sheets are complete, call again to generate turnarounds), or call generate_character_sheets after character sheets. Progress self-check: get_pipeline_status generate_character_sheets step (completed/total, portrait_only=characters with only character sheets). ★Customer-provided images: character sheet must be single person, single image, single angle, no text; scene image must be empty environment, no people, no overlaid text—set_character_portrait/upload_scene_image auto-check and reject noncompliance with 422. ★Do not create character images/prop sheets/motion templates before storyboards—storyboard is pure text and depends on no images; only after storyboards is the cast fixed, so delete non-appearing characters before images to save (motion templates must be after storyboards anyway). Paid steps follow the existing quote confirmation flow. Ads additionally need add_product+generate_product_sheet; MV flow is set_mv_lyrics→generate_mv_story→generate_mv_script (if no existing song: after set_mv_lyrics run suggest_mv_song_styles→quote_mv_song→generate_mv_song→get_mv_song→select_mv_song). ★★【④⑤ two new hard gates + agent hands-on QC】④Asset layer: after character sheets/turnarounds/scene images/prop images → review_assets (before generate_frames / generate_shot_frame; its token is asset_review_token and is passed together with the storyboard-layer review_token); ⑤Video and audio layer: after videos/voiceover/music → review_videos (before compose_episode); after final cut, run review_final_cut. ★After every review layer you must also **personally QC**: follow returned agent_qc, inspect each asset yourself (download images, sample video frames, read text), answer checklist items, submit via submit_qc_report; for gray-release dramas, a review_token without the report cannot enter the next step; report problems block by default just like error. Platform judges whether it exists; you judge whether it looks right and is correct. ★★【Single-shot path is also review-gated】: generate_shot_frame also requires storyboard-layer review_token; regenerate_shot_video also requires shot-image-layer review_token—do not expect single-shot tools to bypass reviews (production observed a workflow generating all 25 shots via single-shot frames without hitting any gate, and all final-cut rework was truly charged). Generating frames **does not** invalidate the storyboard-layer token (fingerprint only checks storyboard content); only changing storyboard content—update_shot / import / add-delete shots / change character bindings—requires one re-review (free, seconds). Generating one shot's frame invalidates the **shot-image-layer** token; before regenerate_shot_video for the next shot, just run review_frames once. ★★【For native-audio dramas, lock voices before batch video】When use_clip_audio=true (default), each shot's voice is sampled by that video vendor, and will drift if not locked; unifying later requires regenerating shot by shot. With customer-authorized source audio → clone_voice+set_character_voice before generate_videos; without it → for each speaking character, first use single-shot quote_regenerate_shot_video→regenerate_shot_video on a shot with relatively long dialogue (generate_videos has no per-shot parameters and only batch-fills missing videos; single-shot regeneration also works on shots with no video yet), use set_voice_anchor_from_shot to select the voice from that shot, then generate remaining shots. get_pipeline_status native_voice_anchor lists unanchored_speakers and stale_shots generated before locking that need regeneration. ★World concept image = required by default (improves whole-drama consistency; many third-party platforms skip it): after storyboards, call generate_world_concept by default; still follows quote confirmation (tell customer estimated credits and confirm before charging)—do not silently charge, and do not skip. ★★【Color script】generate_color_script unifies color grading for the whole film; do after storyboards and before frames. Text step has no quote_* and is usage-postpaid. Progress self-check: get_pipeline_status generate_color_script; review_storyboards reports color-script gaps. ★Motion templates are optional experimental: call generate_motion_templates (motion template extraction) only when customer explicitly requests, after storyboards; text step usage-postpaid. First/tail frames do not inject motion templates by default; missing templates need not be created and do not block images, videos, or final cut. Video templates may be cropped; delivery or benefit is not guaranteed. ★Scene Bible (detailed per-scene settings) order is **after scene images are generated**—refine based on generated scene images (no MCP tool yet; do on official site); do not do Scene Bible before scene images. ★Audio defaults to native video audio (use_clip_audio default on; skip TTS and use AI video's built-in audio): when creating drama/changing settings, AI should proactively tell customer \"default uses native video audio; set use_clip_audio false if TTS dubbing is needed\" and let customer choose. ★Default image model is ChatGPT Image 2.5 Flare (gpt-image-2.5-flare · unified style across drama): set image_model in create_drama/update_project_settings; default if omitted. Options: gpt-image-2.5-sunburst (same price · better Chinese glyphs and details)/gemini-3.1-flash-image (Banana 2 · 71 credits)/gemini-3-pro-image (Banana Pro · more detailed · 175 credits)/gemini-3.1-flash-lite-image (Banana 2 Lite · cheaper · 31 credits)/doubao-seedream-5-0-260128 (Seedream5.0); generate_frames can temporarily override for one run. ★2.5 charges by input volume (base 11 credits + 18 credits per reference image); Banana/Seedream are fixed-price—budget must account for many-reference shots. ★Four video engine options (drama-level · when AI creates drama, must proactively guide selection by drama and show price differences for customer decision): 【Selection tree】★Call get_production_menu first: whether each engine is currently available for realistic live-action / anime and other subject classes is decided by the availability it returns (unavailable entries carry customer_note and expected_until—relay them to the customer verbatim); do not assume from this description that any model is unavailable, and do not recommend models the menu marks unavailable. ①Realistic live-action drama→seedance-2.5 (strongest instruction following / face detail · pricing baseline 720p = 1×), or hailuo-3 when budget-sensitive (about 1/3 cost, 720p ≈0.33× · strong fidelity editing · can output 2K · but about 6 minutes per shot); ★After choosing, pass video_engine explicitly in create_drama / update_project_settings (the one the menu lists as available for this subject class)—if omitted, the platform only applies a style-based fallback stamp that is not guaranteed to be an engine the menu marks available; ②Stylized/animation/3D cartoon dramas · empty shots · product shots→wan3.0 (about 40% price, 720p ≈0.4× · max 30 sec · min 2 sec billing · about 2 minutes per shot), for urgent delivery use wan3.0-prime (720p ≈0.6× · about 1 minute); ★Always quote prices as relative multiples (seedance-2.5 720p = 1×); call quote_* before giving the customer absolute credits; ③★Never choose wan3.0/prime for realistic live-action dramas—WAN output-side human-face review rejects consistently at 720p+, retries cannot fix; ④★★Use caution with wan3.0/prime for narrative dramas (dialogue, coherent story, stable shot rhythm needed): WAN will **hard-cut to new camera angles inside a single storyboard shot** (observed 11/12 shots with intra-shot cuts, vs seedance-2.5 only 1/6, hailuo-3 0/5); final-cut feel is \"image jumps around within one shot, cuts too fast\". This is weak vendor instruction following; prompt-level blocking cannot solve it (our negative constraints already included and tested ineffective). Only remedy after generation is regenerate with another engine. WAN suits fast short stylized/empty/product shots; for stable single-shot narrative choose seedance-2.5 or hailuo-3. After generation use scan_intra_shot_cuts to check; ④b★★Use caution with hailuo-3 for dialogue-heavy dramas (different from the previous \"intra-shot self-editing\"; this is about **whether all dialogue is spoken**): native-audio engine stops when the shot ends and may ad-lib; observed \"dialogue not fully spoken\" rate hailuo-3 **50%** (26 shots, all generated after 8-30 native-audio fix, so engine-inherent), seedance-2.5 **23%** (294 shots); wan3.0 has **insufficient sample size, untested** on this dimension (26 samples all before the same fix; only 2 after fix)—do not infer WAN is bad from this. When customer reports \"line was not finished\", first run scan_dialogue_coverage to segment causes; do not default to lengthening shots (observed that among shots with enough duration, 32% still did not speak all lines); ⑤★Shot duration control (all engines, especially obvious on WAN): keep each shot 3~5 sec. The longer the shot, the more freedom the model has—observed one 16-sec single shot (neighbors were 3~5 sec) changed scene 4 times inside the shot, a character disappeared for 4 sec then grew back from frame edge; customer perceives \"someone appeared out of nowhere\". For long performances, split into multiple short shots and connect with frame chaining; do not write single shots longer than 15 sec. 【Resolution decisions】Draft/iteration: WAN dramas 480p (≈0.2× cheapest), others 720p; final delivery: seedance dramas 720p (for HD delivery choose 1080p, about 2.5× 720p), hailuo-3 dramas 1080p (=2K · ≈0.53×), WAN dramas 1080p (≈0.8×); hailuo-3 has no separate 480p tier (choosing it still bills as 768P). Set video_engine/video_resolution in create_drama/update_project_settings; ★both must be decided before video generation—switching does not retroactively change generated shots; mixing in one drama causes style/identity drift. ★Slow image generation ≠ failure: each image takes tens of seconds to minutes, a whole episode may take over ten minutes; poll get_storyboards for frame_status—pending=still generating (wait patiently, do not repeat generate_frames and waste credits), ready=done, failed=real failure. ★To change one shot's image / make a new character sheet take effect, use **single-shot regeneration generate_shot_frame** (platform automatically includes that shot's identity anchors · scene/prop references · style anchor, preserving whole-film consistency); generate_frames only batch-fills shots with **missing frames** and skips existing first frames (normal, not \"rejection\"). ★After first frames, call free tail_frame_plan to see which shots need independent tail frames, then batch-fill with frame_type=last_frame. After set_character_portrait, stale_frames in the response are shots polluted by the old image and must be regenerated shot by shot. ★Never use external tools to make first/tail frames and upload_shot_frame to \"change image\"—external images lack identity/style anchors, so characters/costumes/style will drift, which is the real source of bad films; upload_shot_frame is only for customer-owned real footage. ③【Optional enhancements · AI proactively informs customer · quote confirmation required】Art Bible generation / visual lock extraction / scene groups / lip sync / posters / sound effects / music / subtitle translation—these improve consistency/quality and are mostly charged. ★AI should proactively tell customer these are available and provide quotes (whether to run follows execution mode: pro mode / unconfirmed plan / customer-controlled step → explain to customer and do only with customer approval, do not decide for them; autopilot step → do not ask customer, follow get_production_plan autopilot.default_decisions, platform records in get_autopilot_log); neither silently skip nor charge without permission. ★Two locking rules: ①**Aspect ratio** is set at create_drama, locked at drama level; all later images/videos/final cut use it, **do not change midstream** (changing makes generated content aspect-inconsistent and drift); default 9:16 if unset. ②**5-7 sec per shot in shot breakdown is normal duration optimized for AI video generation**; do not misjudge as \"shots too long\" and rebreak—generate_storyboards **replaces all storyboards in the episode** and wastes generated images; backend blocks if storyboards already exist and requires confirm_replace. ★Rewrite fidelity (default auto smart routing): when set_script source is **already in script form** (scene headings/dialogue-line structure), rewrite_script automatically uses two-pass fidelity—customer dialogue is locked line by line by a machine gate (missing any line triggers internal rejection and redo), AI never adds plot; dramaturgical gaps (hooks/emotional anchors) are not auto-filled, but written into dramaturgy_suggestions returned by get_script (whether to adopt follows execution mode: pro mode / unconfirmed plan / customer-controlled step → explain to customer and do only with customer approval, do not decide for them; autopilot step → do not ask customer, follow get_production_plan autopilot.default_decisions, platform records in get_autopilot_log). If source is novel/outline, automatically uses creative rewrite (AI lays hooks and emotional points). Both customer types get appropriate handling with no manual switch. To override default, use update_project_settings rewrite_pipeline(auto/two_pass/single_forced) and fidelity_enforce(1=fidelity hard gate). If customer says \"AI changed my script off-track\": ①confirm full source was put into set_script; ②set rewrite_pipeline to two_pass to force fidelity, then rerun rewrite_script; ③after customer confirms character appearance, use update_character profile_locked=1 to lock profile and prevent later extraction from overwriting appearance and changing the face in character sheets. ★If customer wants to rewrite on **another AI platform** (common: third-party model judges our rewrite \"changed too much\", customer wants to control change degree): first call get_script_format_spec to get the platform-accepted format contract (markdown template + external_prompt directly forwardable to external model + blank skeleton), send external_prompt+template+customer source to that platform; after receiving organized script, **first call check_script_format to self-check** (free · rule-only · no model). Once errors are zero, two exits: 【A】adopt_external_script to directly adopt as shootable script (our AI not involved · seconds-level · no charge, requires external script includes production-layer annotations); 【B】set_script back into source slot + rewrite_script with two-pass fidelity (choose this when external only handles plot layer; platform fills annotations; customer-written annotations on this path are stripped and rewritten). ★Do not put external organized script into edit_rewritten_script (400 rejected if rewrite has never run), and do not skip check_script_format and ingest directly—noncompliant scripts are still blocked by gates and waste a run. ★★If the customer provides a **finished storyboard table** (per-shot duration/shot size/camera movement), neither path above applies—use import_storyboard_table directly to create storyboards, skipping rewrite and shot breakdown. The rewrite path strips duration/shot size/camera movement/STYLE/text cards as non-plot content (production observed 8 shots 36 sec → 20 shots 109 sec). ★Both import channels are deterministic—even wrong content is created as-is, so **get contract first, then self-check, then import**: storyboard table path is get_storyboard_table_spec → check_storyboard_table → import_storyboard_table; if customer's own tools/spreadsheets can export structured data, or external AI can directly produce JSON, use get_bulk_import_spec → check_bulk_import → bulk_import_storyboards (creates storyboards only; characters/scenes/props are extracted by extract_assets from the script; import binds existing ones by name—extract first, then import). Both imports default with auto_complete (backend AI fills professional fields + image/video prompts, text step postpaid; inform customer before call): if receipt started=true, poll get_autofill_status until done, then review_storyboards—autofill changes shots, so any earlier review token expires. Use get_pipeline_status for progress (returns project-type-specific steps). ★★【Opening plan · first thing after creating drama · free】First ask basic video parameters (project type/aspect ratio/episode count × minutes per episode/subject: realistic_human · stylized anime · product empty-shot/native audio or dubbing), then call get_production_menu to get the **currently available** three package tiers (effect notes + real-time estimate including text steps + recommended budget + exclusions) and explain to customer—do not recommend models from memory; some models may be temporarily unavailable for certain subjects, menu is already filtered. Then let customer choose execution mode (pro controls every step / auto one-click final cut / custom choose autopilot steps), budget budget_points, and automatic overrun cap (0/10/20/30/50%): **default recommendation** budget=selected tier's recommended_budget (upper bound excluding text ×1.2 plus text estimate), overrun=menu recommended_overrun_pct (30%)—QC regenerations are not in the upper bound and are covered by overrun. Recommendations are only recommendations; final numbers are set by customer, and if customer changes them, use customer's values. Explain the summary clearly; only after explicit customer agreement call confirm_production_plan(customer_confirmed:true)—never confirm for the customer. For dramas with confirmed plans: before paid dispatch, platform rechecks model availability and that quote upper bound ≤ budget×(1+overrun%); if blocked (402 BUDGET_WOULD_EXCEED / 409 MODEL_UNAVAILABLE), stop and ask customer; do not change model or budget yourself. confirm returning 403 PRODUCTION_PLAN_NOT_OPEN = this drama is not enabled (gray release); follow the original step-by-step confirmation flow.",
|
|
7
7
|
"get_script": "Read the raw episode content + AI-rewritten shootable script + rewrite status + dramaturgy_suggestions (dramatic gaps AI identified but did not auto-fill in two-step fidelity mode—hooks/emotional anchors; whether to adopt them depends on execution mode: professional mode / unconfirmed plan / client-controlled step → explain to client and do only after client agrees; do not decide for client; hosted step → do not ask client, follow get_production_plan autopilot.default_decisions, platform records it in get_autopilot_log; ignoring them does not affect the production pipeline). Free. ★Revision workflow: first use this tool to retrieve the full rewritten_script → edit only the scenes the client wants changed → submit with edit_rewritten_script (do not rerun rewrite). previous_script_available=true means a previous-version snapshot exists; pass include_previous=1 to retrieve the full previous version (recovery path for accidental rerun/bad edits; omitted by default to avoid doubling the response).",
|
|
8
8
|
"edit_rewritten_script": "★Preferred channel for revisions: edit the AI-rewritten shootable script(write script_content). Free, instant, deterministic—**after one successful rewrite, all modifications go here; do not rerun rewrite_script**(that restarts from raw source, loses fixes, may revert improvements). ★Point-edit method(3 steps, do not skip): ① get_script to fetch **full** rewritten_script; ② **only edit target scenes**—within them change wording/split scenes/delete wrong motif/add [SFX]/move hand-held objects to [道具], and copy all other scenes byte-for-byte including punctuation; ③ submit the **entire** modified script here(this is full overwrite; do not send snippets or let model “also polish” untouched parts). Typical fixes: scene too long/split needed, dialogue line breaks across shots, wrong time/era, motif attached to scene without element, [角色档案] clothing mixed with held object, missing [SFX]/[BGM]. Only edits AI-rewritten output; if rewrite_script has not run, 400—this is not a bypass. Recover with get_script(include_previous=1). Free.",
|
|
9
9
|
"get_script_format_spec": "Fetch the platform-accepted **script format contract**: full markdown template + external_prompt(can forward verbatim to any external AI) + skeleton(with 〈…〉 placeholders) + filled_example. Free · static · no credits. ★Since template v2, **production-layer annotations** are included([角色档案] six-part format/[外貌] line prefix/[道具]/[SFX][BGM][VFX]/motif/fourth lighting segment in scene header/end metadata). v1 only covered story layer, causing external AI drafts to fail checks. When forwarding, **include filled_example**—LLM format accuracy depends on complete examples, not rules. ★Use when client wants to control rewrite degree, use another AI platform, or says “your AI changed my script too much”. ★Two exits(ask client first; determines whether external AI should write annotations): 【A Direct adoption】external AI produces complete script **with production annotations** → check_script_format all green → adopt_external_script as shootable script, no StarReel AI, instant, free, client [角色档案] preserved. For clients requiring zero changes. 【B Send to AI rewrite】external AI produces story layer only(**no annotations**) → set_script as raw → rewrite_script two-pass fidelity to add annotations. ★In B, client-written annotations **are stripped and rebuilt by G1**, so tell external AI not to write them. ★Workflow: ① get external_prompt + filled_example + markdown and send with raw script to other platform; ② run check_script_format on returned draft until errors=0; ③ use adopt_external_script for A, or set_script + rewrite_script for B. ★Contract includes scene header three-part format/location naming/environment first sentence three elements/first-appearance appearance line/sound line prefixes/single-line dialogue length/ban on camera moves and end-credit edit markers, plus four fidelity requirements(keep dialogue line by line, do not drop characters, do not drop action beats, do not add scenes) already in external_prompt.",
|
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
"bulk_import_storyboards": "Create/update this episode’s storyboards from one structured JSON payload in a single pass(dedupe/update by storyboard_number). **Does not create characters/scenes/props**—they are extracted from the script by extract_assets; import only binds by name to existing ones(receipt characters_unmatched / char_refs_unresolved lists unbound refs; extract first, then import). Free · deterministic · no AI call. ★Three steps: ① get_bulk_import_spec for contract and finished example; ② check_bulk_import until errors=0; ③ call this tool. ★mode=merge(default) keeps shots not mentioned; mode=replace replaces **all** storyboards in this episode(old shots and generated images/videos are archived and recoverable, not auto-relinked)—replace requires explicit client consent in any execution mode, including autopilot. ★If you want to write image_prompt / video_prompt yourself, put them on each shot; they are used **verbatim and not overwritten**. Empty shots get platform-built base descriptions(receipt base_prompts_built says how many); after import use get_shot_prompts to read and update_shot to edit. (frame_visual_contract is an internal frame contract and ignored on import.) ★After import: speech timing may raise durations for shots whose dialogue does not fit(receipt speech_duration_raised / speech_duration_overflow). ★After import, **auto-completion is on by default**(auto_complete, follows the drama’s \"auto-complete auxiliary assets\" switch, default on): one background batch fills empty professional fields across all shots(AI, fill-empty only) and expands full image/video prompts only for shots with no image_prompt that used a platform base description(client-written prompts are never overwritten; receipt auto_complete.prompt_shots). Text step is postpaid by token; **tell the client before calling**. If you only want import, pass auto_complete:false(**cost: no composition contract is generated**—visible headcount, subject type character/part/prop, and shot size can only be inferred from text; hand insert shots and off-screen narration shots are easily rendered/audited as full characters; receipt contract_coverage lists missing shots **and gives current viable fixes; trust its note**—when contract auto-complete is enabled it calls autofill_storyboards). If receipt started=true, poll get_autofill_status until done **before** review_storyboards.",
|
|
17
17
|
"get_autofill_status": "Check this episode’s background completion batch(import auto_complete / autofill_storyboards AI one-click fill-empty): { status: running|done|failed|idle, total, done, ok, fail }. Free. ★After import with auto-complete, wait for status=done before review_storyboards / generate_frames—the batch rewrites shot fields one by one, so any earlier review_token becomes invalid when content changes. Each shot takes tens of seconds; a full episode can take 10+ minutes. Poll interval ≥10 seconds; do not tight-loop. If status=failed or fail>0, inspect fail count; a few failed shots can be rerun with autofill_storyboards(fill-empty only; already-filled fields are not charged again).",
|
|
18
18
|
"adopt_external_script": "[Exit A] Adopt a draft produced by an external AI from the template **directly as the shootable script**; StarReel AI does not intervene. Seconds, no charge. ★Hard pre-gate: server first runs a format self-check; non-empty errors return 400 with the list unchanged—use check_script_format until fully green before this tool. warnings do not block(same strictness as default lenient save_script). ★When to use: client demands \"do not change a single word\" and the external AI already produced a complete draft with production-layer annotations. ★When **not** to use: client only organized the story layer(no [角色档案]/[外貌])—direct adoption would leave downstream without character profiles and appearance anchors; use Exit B(set_script + rewrite_script) so the platform adds annotations. ★Difference from edit_rewritten_script: that is a point-edit channel for an **existing rewritten script**(400 if rewrite was never run). This tool is the **first script ingestion** channel, only for \"the script was prepared externally\". It is not a backdoor around rewriting—the server gate decides; if it fails, it fails. Old script is saved into previous_script; if adopted by mistake, recover with get_script(include_previous=1).",
|
|
19
|
-
"extract_assets": "Extract characters/scenes/props from the shootable script (writes three tables in one pass; the foundation for downstream consistency). Backend async; text step postpaid, no arrears. Prerequisite: rewrite_script has produced the rewritten script (mandatory for new projects; character profiles must be extracted from the rewritten script to stay self-consistent with script and storyboards). ★Minute-level backend task; use get_run_status to decide whether it is still running; do not treat 60 seconds as failure.\n★【Rewritten-script review hard gate · free】Before this step, you must call review_script first: report every returned finding to the customer verbatim (each with code=issue type, shots=hit shot numbers, action=which tool to use to fix), then pass review_token into this tool. Skipping review will be rejected with 400. If content changed after review → token auto-invalidates; review again once (still free). If there is error, block by default; only if the customer is informed and insists on continuing as-is may you pass acknowledge_review:true—pushing forward with known issues will likely produce unusable footage and is still charged normally (acknowledge_review only means the customer personally agreed; every execution mode still requires explicit customer consent, including managed mode); in managed steps, only allowlisted heuristic error can pass with auto_acknowledge:true (platform decides; if not allowlisted returns 400 AUTOPILOT_MUST_ASK:must_ask_customer=true then pause and ask customer, false = self-fix per action then review again). ★Gray-release dramas also require you (agent) to QC personally: inspect assets item by item per agent_qc returned by review_script, answer the checklist, and submit via submit_qc_report before this token can be used (not submitted → 400 agent_qc_required; bad report → blocked by default like error).★★【Execution-mode master rules · read before starting】For dramas with a confirmed opening plan, first get_production_plan and read autopilot: pro mode (pro, or autopilot.enabled=false, or no confirmed plan) → every later 'tell customer, proceed only after customer agrees' is literal; one-click (auto) / hybrid (custom) managed steps → do not ask customer: follow get_pipeline_status next_action in order, self-confirm quotes within the hard budget cap, after each layer still run review_* + agent QC, and let review/QC autopilot.next_step tell you how to proceed at this layer (allowlisted error with auto_acknowledge:true / which self-fix round / pause to ask customer); for choices follow autopilot.default_decisions; autopilot.never_auto_actions(mode=replace, deleting assets, overwriting customer-uploaded images, allow_era_ref_conflict, cloning voices, delivery acceptance) always require customer consent in every mode. ★In managed steps, regenerating frames for the same shot (generate_shot_frame) max 3 rounds, regenerating video (regenerate_shot_video / edit_video_shot) max 3 times; at the limit the platform returns 409 AUTOPILOT_SHOT_REGEN_LIMIT (not charged)—do not bypass with another tool; stop and ask customer: if customer approves more, quote normally and pass customer_approved_more_regens:true when generating (grants another limit); if customer accepts current state, continue, and pass acknowledge_review:true on the next paid call to record confirmation. 402 BUDGET_WOULD_EXCEED / 409 MODEL_UNAVAILABLE / 409 AUTOPILOT_SHOT_REGEN_LIMIT / 400 AUTOPILOT_MUST_ASK with must_ask_customer=true / non-empty pending_questions → pause and ask the customer the pending_questions from get_autopilot_log **summarized all at once**; customer-controlled steps follow pro mode. After final output, deliver to customer using the get_autopilot_log report. ★Three-tier execution strategy (do not mix the three when asking customer):①【Basic project settings · free · mandatory foundation · set when creating drama, do not create an empty shell】project_type/setting_brief(worldview · ERA LOCK)/ethnicity/aspect ratio resolution, plus consistency anchors cinematography_prompt(photography DNA)·art_bible(art bible)·visual_lock(visual lock)—all free, foundation for full-pipeline consistency; if not set properly, all later generation drifts and rework costs again. Set directly via create_drama/update_project_settings. ★visual_lock/art_bible only write image-level/world-level locks (shot language · environment · art tone · forbidden elements), **never pin clothing/hairstyle/appearance details for specific characters**—the single source of truth for character appearance is the character profiles produced by extract_assets (change via update_character); writing both places inevitably conflicts, character sheet vs profile, concept image vs visual lock, consistency gate rejects by character sheet → concept images/shot frames get **structurally rejected in chains**, no amount of rerolls passes, pure waste.★★【Era contract · free · required before image generation for non-contemporary or surreal subjects】The worldview in setting_brief is **free text**; it can provide background but cannot constrain images. The real override over visual_lock is the **structured era contract**: use set_era_contract to set this episode’s tier (modern/republican/historical/fantasy/surreal), get_era_contract to read current value. **Unset means empty**—the platform can only rely on prompt text to fight drift; modern objects entering ancient images or scene images drawn in the wrong era is usually caused by this being empty. ★Xianxia/fantasy/immortal-realm content **must use fantasy, not historical**: historical requires textual realistic accuracy and will classify glowing aura, floating landforms, and non-human transformations as 'era-inconsistent', pulling images toward realistic ancient style. To make an exception for one scene (e.g. a modern flashback inside a fantasy world), use update_scene era_contract to override at scene level; scene-level beats episode-level.★★【Per-stage review protocol · all free · main line to prevent unusable film, not optional】After every stage output, review first, report conclusions verbatim to customer, then proceed. **Five hard gates (not passing causes 400; ④⑤ and agent QC below)**:① after rewritten script → review_script (before extract_assets / generate_storyboards);② after storyboards → review_storyboards (before generate_frames);③ after shot images → review_frames (before generate_videos). Each review returns review_token; pass it with downstream paid tools; explain findings one by one to customer (code=issue type · shots=hit shot numbers · action=which tool to fix), fix per action, then **review again** before proceeding. If content changed after review → token auto-invalidates; review once again (free). If error exists, block by default; only if customer explicitly understands and insists may pass acknowledge_review:true (acknowledge_review only means customer personally agreed; every execution mode still needs explicit customer consent, including managed mode); in managed steps, only allowlisted heuristic error can pass auto_acknowledge:true (see 【Execution-mode master rules】). **Soft guidance (non-blocking but strongly recommended, also free)**: before image/video generation run run_precheck (catches shots vendors will definitely reject, preventing wasted credits)—★**to run whole-drama first use run_drama_precheck** (drama-level summary · free · read-only): get issue counts per episode and attention (which episodes to fix first), prioritize by it, then run run_precheck on those episodes for details; do not blindly scan episode by episode. Note not_covered—drama-level skips the only lint that requires images, so '0 whole-drama issues' ≠ 'everything checked'. ★After findings, do not blindly edit yourself: plan_precheck_fix lets platform compute proposals → apply_precheck_fix writes them (choose which to adopt; managed=adopt all per execution mode: pro mode / no confirmed plan / this step customer-controlled → tell customer and proceed only after consent; do not decide for customer; managed step → do not ask, follow get_production_plan autopilot.default_decisions, platform logs in get_autopilot_log); after storyboards run get_health_report; after character sheets use get_characters to verify every appearing character has image/sheet; after frames use get_storyboards to inspect frame_status and fail_reason/fail_hint (fix failed shots before continuing; do not make video from bad frames); after videos inspect video_status similarly; before final cut use get_pipeline_status to confirm no missing shots. ★**Never generate straight through**: pushing layer after layer without review amplifies issues at every layer, and the whole episode may need redoing—every repeated image/video generation is real charged. Reviews are all free; catching issues costs nothing. ★Clothing changes are structured bindings: update_shot active_wardrobe_id (whole shot) / appearance_wardrobes (multi-character per role), can override or clear—editing text descriptions does not change clothes, and do not send customer to web UI.②【Production mainline · sequential, no skipping · ★storyboards before assets】set_script→rewrite_script→★review_script→extract_assets→storyboards(first storyboards · pure-text shot breakdown)→★review_storyboards→★Script discipline (endpoint-enforced, cannot bypass): all raw material (synopsis/outline/finished script all count) goes into set_script, **must go through rewrite_script to produce AI rewritten script**—pasting your own finished script directly into edit_rewritten_script to bypass rewrite will be rejected 400 (no rewritten script means nothing to edit); extract_assets likewise requires the rewritten script. All post-rewrite changes must use the structured format of AI output: edit script via edit_rewritten_script (polish/correct), character profiles via update_character, storyboards via update_shot/replace_shot_dialogue—do not go back and replace the whole script or write another truth source in settings; dueling truth sources are the top cause of consistency failures.★★**After rewrite_script succeeds once, do not rerun rewrite_script**: it restarts from the original full manuscript, discarding all current edits, and the new version is not guaranteed to preserve prior fixes (three-version tests oscillate). To fix, use edit_rewritten_script point edits (get_script full text → change only those scenes, copy the rest verbatim → submit whole text), free, seconds-level, deterministic; if rerun by mistake use get_script(include_previous=1) to recover previous version. generate_portraits_and_sheets(character sheet + concept images · build after storyboards: first use delete_character to delete appearing characters who **do not appear in any episode of the whole drama and are not planned for later episodes** before image generation—characters are drama-level; once deleted, no episode’s frame assembly includes them; this cannot be judged from current episode storyboards alone, keep if unsure (one character sheet costs far less than losing identity anchors in a later episode); the character sheet step generates images for **all undeleted appearing characters**, ignoring storyboard bindings, so kept characters are charged normally; voiceover characters (char_type=voiceover narrators/phone voices) are not image-generated and have no storyboard binding; **do not delete** them, dubbing relies on them)→★generate_color_script(color script · unified grading)→assign_voices(assign voice types; if narrator/character library has no fit → design_voice by description, then set_character_voice after sample approval)→★quote_scene_images+generate_scene_images(empty scene plates · required before frames)→frames(default first frames only)→★tail_frame_plan(free · which shots need independent last frames)→frames(frame_type=last_frame)→★chain_frames(seams · dry_run:true first)→★review_frames→videos→generate_tts→compose;★★【Do not skip seams · after last-frame completion, before review_frames】After first/last frames are ready, call chain_frames(dry_run:true, free) to view platform seam plan and estimated_points (copy free, reframe one image per seam), tell customer and execute without dry_run after confirmation; already chained seams are not planned, repeated calls do not charge again. ★After execution, reframe is **async image generation**: use get_jobs to watch first_frame generation rows for planned shots; wait until all pending/processing finish (failed: check error_msg; use chain_shot_from to rechains a single seam), then review_frames—while old first frame remains, get_storyboards frame_status is still ready, so it cannot show whether the new image is generating or failed. After get_jobs is clear, use get_storyboards to verify seam_state: replacement images rejected from promotion will not remain in get_jobs; that seam remains unchained (review_frames also reports seam_unchained); rechains per its action. If you review before landing, you reviewed old first frames; the token becomes invalid after new first frames land. Episodes generated shot-by-shot/batch likely were not auto-chained (get_storyboards seam_state=unchained means so); skipping does not error—the cost is mismatch between adjacent shots and jump cuts throughout final cut.★★【Do not skip last frames · frames are two passes】generate_frames defaults to first frames only. About 30% of shots have **end state ≠ start state** (large camera moves/object released/state changes) and need an independent last frame; the criterion is platform-side and cannot be guessed from storyboard text—therefore after first frames finish, you must call the free tail_frame_plan once to get per-shot list, then fill frame_type=last_frame (shots_needing_last_frame in generate_frames response is this count; if not 0 do not go straight to review_frames). Skipping does not error or block—the cost is that videos for those shots have only one anchor, so the model invents the end state: actions fail, large camera moves end back at the starting composition. Production tests: in 32 episodes, 30 generated only first frames for the whole episode, and 23 went all the way through video.★★【When last frame is blocked by TERMINAL_DESC_GATE: edit text, do not retry】For shots reporting 'this shot is marked as state-changing, but nowhere describes what it looks like at the end', use update_shot to write **what the image looks like at the end** into that shot’s last_frame_prompt, then regenerate last frame. ★Better: **avoid hitting it**—before last-frame generation, first inspect get_storyboards; shots with terminal_desc_missing=true are listed for the whole episode at once (free), fill their last_frame_prompt before generating and avoid any rejection. Per-shot query also exists (get_shot_prompts same field), but do not do that for dozens of shots. Retrying without filling the description is useless—the vendor prompt has no terminal-state section, so it still draws the first-frame pose and will be rejected again by terminal review, and each attempt is charged normally (production tests: last-frame success 9.4% without terminal description, 40.2% with it). Only use generate_shot_frame allow_missing_terminal for shots that truly should be 'almost unchanged'.★★【Do not skip empty scene plates · this step is often missed by third parties】Scene images are **background anchors**: every shot frame in the same scene anchors on it. Frames can still generate without plates, with no error and no block—the cost is **the first shot of every scene has no background anchor at all** (platform fallback is 'if missing image is discovered, generate one in background'; that plate is used by subsequent shots in the same scene, but the triggering first shot cannot wait for it), and the first shot is often the tone-setter; later backgrounds drift too. It is paired with character sheets: character sheets anchor people, scene images anchor locations; whichever is missing drifts. Progress self-check: get_pipeline_status generate_scene_images step (completed/total); review_storyboards also reports scene_plate_missing before frame generation.★★【Do not skip concept images · character sheet ≠ concept image】A character sheet is a single-person identity anchor; concept image is the platform-generated multi-angle turnaround from the character sheet, the root consistency anchor for shot frames/videos (angles, lighting, clothing rely on it). Frames can still generate with only character sheets, with no error—the cost is characters drift when angle changes and clothing differs every shot. Use generate_portraits_and_sheets for one-click two-step (each call advances one step; after character sheets are complete, call again to create concept images), or generate_character_sheets after character sheets. Progress self-check: get_pipeline_status generate_character_sheets step (completed/total, portrait_only=characters with character sheet only). ★Customer images: character sheet must be single person, single image, single angle, no text; scene image must be empty location with no people and no overlaid text—set_character_portrait/upload_scene_image auto-checks and rejects invalid with 422. ★Do not create character visuals/prop concept images/action templates before storyboards—storyboards are pure text and do not depend on any images; after storyboards the cast is known, delete non-appearing characters before image generation to save cost (action templates must be after storyboards anyway). Paid steps follow existing quote confirmation flow. Ads additionally need add_product+generate_product_sheet; MV uses set_mv_lyrics→generate_mv_story→generate_mv_script (if no finished song: after set_mv_lyrics first suggest_mv_song_styles→quote_mv_song→generate_mv_song→get_mv_song→select_mv_song).★★【④⑤ two new hard gates + agent personal QC】④Asset layer: after character sheets/concept images/scene images/prop images finish → review_assets (before generate_frames / generate_shot_frame; its token is asset_review_token and passed together with storyboard-layer review_token);⑤Video and dubbing layer: after video/dubbing/music finish → review_videos (before compose_episode); after final cut, run review_final_cut. ★After every review layer you must also **personally QC**: inspect assets item by item per returned agent_qc (download images, sample video frames, read text), answer checklist item by item, submit via submit_qc_report; for gray-release dramas, a review_token cannot enter the next step without the report; bad report is blocked by default like error. Platform judges existence; you judge likeness and correctness.★★【Single-shot path is also gated by reviews】: generate_shot_frame also requires storyboard-layer review_token; regenerate_shot_video also requires shot-image-layer review_token—do not expect single-shot tools to bypass review (production observed a workflow generating all 25 shots with single-shot frame tools and no gates; all final rework was fully charged). Generated frames **do not** invalidate the storyboard-layer token (fingerprint only covers storyboard content); only storyboard content edits—update_shot / import / add-delete shots / change character bindings—require one more review (free, seconds). Generating one shot’s frames invalidates the **shot-image-layer** token; before regenerating the next shot video, review_frames once.★★【For native-audio dramas, lock voices before batch video】When use_clip_audio=true(default), each shot’s voice is sampled independently by the video vendor; if not locked it will drift, and unifying after the fact requires per-shot regeneration. If customer-authorized voice source exists → clone_voice+set_character_voice before generate_videos; if not → for each speaking character first use single-shot quote_regenerate_shot_video→regenerate_shot_video on a shot with longer dialogue (generate_videos has no per-shot parameters and only batch-fills missing-video shots; single-shot regeneration also works for shots without video), then use set_voice_anchor_from_shot to select the voice from that shot, then generate remaining shots. get_pipeline_status native_voice_anchor lists unanchored_speakers not yet locked and stale_shots generated before locking that need regeneration. ★Worldview concept image = required by default (improves whole-drama consistency; many third-party platforms miss it): after storyboards, call generate_world_concept by default; still follows quote confirmation (tell customer estimated credits, confirm before charging)—do not charge silently and do not skip.★★【Color script】generate_color_script unifies grading across the whole film; run after storyboards and before frames; text step has no quote_*, postpaid by usage. Progress self-check: get_pipeline_status generate_color_script; review_storyboards reports color-script gaps. ★Action templates are optional experimental: call generate_motion_templates(action template extraction) after storyboards only if customer explicitly requests; text step postpaid by usage. First/last frames do not inject action templates by default; missing templates need not be made up and do not block image/video/final cut. Video templates may be cropped; delivery or quality gain is not guaranteed. ★Scene Bible(detailed per-scene setting) comes **after scene image generation**—refine based on generated scene images (no MCP tool yet; do on official site); do not make Scene Bible before scene images. ★Audio defaults to video native audio (use_clip_audio default on; skip TTS and use AI video’s built-in audio): when creating/updating drama settings, AI should proactively tell customer 'default uses video native audio; set use_clip_audio false if TTS dubbing is needed' and let customer choose. ★Default image model is ChatGPT Image 2.5 Flare(gpt-image-2.5-flare · unified whole-drama style): set image_model in create_drama/update_project_settings; omitted means default. Options: gpt-image-2.5-sunburst(same price · better Chinese glyphs/details)/gemini-3.1-flash-image(Banana 2 · 71 credits)/gemini-3-pro-image(Banana Pro · finer · 175 credits)/gemini-3.1-flash-lite-image(Banana 2 Lite · cheap · 31 credits)/doubao-seedream-5-0-260128(Seedream5.0); generate_frames can temporarily override one run. ★2.5 charges by input volume (base 11 credits + 18 credits per reference image); Banana/Seedream are flat price—shots with many reference images must include this in budget. ★Four video engine choices (drama-level · when AI creates a drama it must proactively guide engine choice by drama type and quote price differences for customer decision):【Decision tree】★Call get_production_menu first: whether each engine is currently available for realistic live-action / anime and other subject classes is decided by the availability it returns (unavailable entries carry customer_note and expected_until—relay them to the customer verbatim); do not assume from this description that any model is unavailable, and do not recommend models the menu marks unavailable. ①Realistic live-action drama→seedance-2.5 (strongest instruction following / face detail · 720p 212 credits/sec), or hailuo-3 when budget-sensitive (about 1/3 cost, 70 credits/sec · strong fidelity editing · can output 2K · but about 6 minutes per shot); ★After choosing, pass video_engine explicitly in create_drama / update_project_settings (the one the menu lists as available for this subject class)—if omitted, the platform only applies a style-based fallback stamp that is not guaranteed to be an engine the menu marks available; ②Stylized/animation/3D cartoon dramas · empty shots · product shots→wan3.0(about 40% price, 84 credits/sec · max 30 sec · minimum 2 sec billing · about 2 minutes per shot), use wan3.0-prime for rush delivery (126 credits/sec · about 1 minute);③★Never choose wan3.0/prime for realistic live-action dramas—WAN output-side human-face review consistently rejects at 720p+, retry cannot fix;④★★For narrative dramas (dialogue, continuous story, stable shot rhythm), choose wan3.0/prime cautiously: WAN may **hard-cut camera positions inside a single storyboard shot** (tests: 11/12 shots had intra-shot jump cuts, versus seedance-2.5 1/6 and hailuo-3 0/5); final cut feels like 'the image jumps around within one shot, cuts too fast'. This is weak vendor instruction following and cannot be blocked at prompt level (our negative constraints are already included and tested ineffective); afterwards the only fix is regenerating with another engine. WAN fits stylized/empty/product shots that are inherently short and fast; for stable single-shot narrative choose seedance-2.5 or hailuo-3. After generation use scan_intra_shot_cuts to check;④b★★Dialogue-heavy dramas should choose hailuo-3 cautiously (different from above 'intra-shot self-cut'; this is about **whether all lines are spoken**): native-audio engine stops speaking at shot end and may ad-lib; tests show 'dialogue not fully spoken' rates hailuo-3 **50%** (26 shots, all generated after 8-30 native-audio repair, so engine itself), seedance-2.5 **23%** (294 shots); wan3.0 sample **insufficient, untested** for this dimension (26 samples all before same repair, only 2 after)—do not infer WAN is bad. When customer reports 'line not finished', first run scan_dialogue_coverage by family; do not default to lengthening shots (even among sufficiently long shots, 32% still missed full lines);⑤★Shot length control (all engines, especially WAN): keep each shot 3~5 seconds. The longer the shot, the more room the model has to improvise—test: one 16-second shot (neighbors all 3~5 sec) changed scenes 4 times within the shot; character disappeared for 4 sec then grew back from frame edge; customer sees 'a person appeared from nowhere'. For long performances, split into multiple short shots and connect with frame chains; do not write single shots over 15 sec;【Resolution decision】Draft/iteration: WAN dramas 480p (42 credits/sec cheapest), others 720p; final delivery: seedance dramas 720p (HD tier discontinued), hailuo-3 dramas 1080p(=2K · 112 credits/sec), WAN dramas 1080p(168 credits/sec); hailuo-3 has no separate 480p tier (if selected, billed as 768P); set video_engine/video_resolution in create_drama/update_project_settings, ★must be decided before video generation—switching does not retroactively affect generated shots, and mixing within one drama causes style/identity drift. ★Slow image generation ≠ failure: each image takes tens of seconds to minutes; whole episode may take 10+ minutes. Poll get_storyboards frame_status—pending=still generating (wait patiently; do not call generate_frames again and waste credits), ready=done, failed=real failure. ★To change one shot’s image / make new character sheet take effect, use **single-shot regeneration generate_shot_frame** (platform automatically includes identity anchors, scene/prop references, style anchors for that shot to preserve whole-film consistency); generate_frames only batch-fills shots with **missing frames** and skips shots that already have first frames (normal, not 'rejected'). ★After first frames finish, call free tail_frame_plan to see which shots need independent last frames, then batch-fill with frame_type=last_frame. After changing a character sheet (set_character_portrait), stale_frames in the response are shots polluted by the old image and must be regenerated shot by shot. ★Never use external tools to make first/last frames and upload_shot_frame to 'change the image'—external images lack identity/style anchors, so characters/clothing/style will drift; that is the real source of unusable film. upload_shot_frame is only for customer-owned real footage.③【Optional enhancements · AI proactively informs customer · do only after quote confirmation】Art bible generation / visual lock extraction / scene groups / lip sync / posters / sound effects / music / subtitle translation—these improve consistency/quality and are mostly paid. ★AI should proactively tell customer these are available and provide quote (whether to run depends on execution mode: pro mode / no confirmed plan / this step customer-controlled → tell customer and proceed only after consent; do not decide for customer; managed step → do not ask, follow get_production_plan autopilot.default_decisions, platform logs in get_autopilot_log); neither silently skip nor charge without authorization. ★Two locking rules:①**Aspect ratio** is set at create_drama, locked at drama level; all later image/video/final cut use it, **do not change midstream** (generated content will have inconsistent aspect ratio and drift); default 9:16 if unset.②**5-7 sec per shot in shot breakdown is normal length optimized for AI video**, do not wrongly re-split because 'shots are long'—generate_storyboards **replaces all storyboards in the episode**, wasting generated images; backend blocks when storyboards already exist unless confirm_replace is supplied. ★Rewrite fidelity (default auto smart routing): when the set_script original is **already script-shaped** (scene headers/dialogue-line structure), rewrite_script automatically uses two-pass fidelity—customer dialogue is machine-gate locked line by line (missing one line causes internal rejection and redo), AI never adds plot; dramaturgical gaps (hooks/emotional anchors) are not auto-filled, but written into dramaturgy_suggestions returned by get_script (whether to adopt follows execution mode: pro mode / no confirmed plan / this step customer-controlled → tell customer and proceed only after consent; do not decide for customer; managed step → do not ask, follow get_production_plan autopilot.default_decisions, platform logs in get_autopilot_log). If original is novel/outline, it auto uses creative rewrite (AI lays hooks/emotional beats); both customer types get intended behavior, no manual switch needed. To override default use update_project_settings rewrite_pipeline(auto/two_pass/single_forced) and fidelity_enforce(1=hard fidelity gate). When customer says 'AI changed my script too much':①confirm full original entered set_script;②set rewrite_pipeline two_pass to force fidelity, then rerun rewrite_script;③after customer confirms character appearance, use update_character profile_locked=1 to lock profiles and prevent later extraction from overwriting appearance and changing faces in character sheets. ★If customer wants to rewrite script on **another AI platform** (common: third-party model says our rewrite 'changed too much', customer wants control): first call get_script_format_spec to obtain platform-accepted format contract (markdown template + external_prompt directly forwardable to external model + blank skeleton), give external_prompt+template+customer original to that platform; after receiving organized draft, **first call check_script_format** self-check (free · rule-only · no model); after errors are zero, two exits:【A】adopt_external_script directly adopts as shootable script (our AI not involved · seconds · no charge, requires external draft contains production-layer annotations);【B】set_script puts it back into original slot + rewrite_script two-pass fidelity (choose when external only handles story layer; platform fills annotations; customer-written annotations are stripped and rewritten on this path). ★Do not put external organized draft into edit_rewritten_script (400 if rewrite not run), and do not skip check_script_format before ingestion—noncompliant scripts are still blocked by gates, wasting a run.★★If the customer’s material is **already a finished storyboard table** (per-shot durations/framing/camera moves), neither path applies—use import_storyboard_table directly to create storyboards and skip rewrite and shot breakdown. The rewrite path will strip durations/framing/camera moves/STYLE/text cards as non-story content (production test: 8 shots 36 sec → 20 shots 109 sec). ★Both import channels are deterministic—wrong input is created as-is, so **get contract, self-check, then import**: storyboard table path uses get_storyboard_table_spec → check_storyboard_table → import_storyboard_table; if customer tools/spreadsheets can export structured data, or external AI can directly produce JSON, use get_bulk_import_spec → check_bulk_import → bulk_import_storyboards (only creates storyboards; characters/scenes/props are extracted from script by extract_assets; import binds by name to existing ones—extract first, then import). Both imports default with auto_complete(background AI fills professional fields + image/video prompts, text step postpaid; tell customer before call): if receipt started=true, poll get_autofill_status until done, then review_storyboards—autofill changes shots, so any earlier review token invalidates. Use get_pipeline_status for progress (returns project-type-specific steps).★★【Opening plan · first thing after creating drama · free】First ask basic video parameters (project type/aspect ratio/episodes × minutes per episode/subject: realistic_human realistic live-action · stylized anime/stylized · product/empty shots · native audio or dubbing), then call get_production_menu to get **currently available** three packages (effect description + real-time estimate including text steps + recommended budget + excluded items) and explain to customer—do not recommend models from memory; some models may be temporarily unavailable for some subjects, menu already filters them. Then let customer choose execution mode (pro self-control every step / auto one-click final cut / custom managed selected steps), budget budget_points, and automatic overrun cap (0/10/20/30/50%): **default recommendation** budget=selected package recommended_budget (upper bound excluding text ×1.2 plus text estimate), overrun=menu recommended_overrun_pct(30%)—QC regenerations are not in upper bound and are covered by overrun; recommendation is only recommendation, final numbers are customer’s, and if customer changes them use customer values. Explain summary clearly; only after explicit customer consent call confirm_production_plan(customer_confirmed:true)—never confirm for customer. For dramas with confirmed plan: before paid dispatch the platform rechecks model availability and quote upper bound ≤ budget×(1+overrun%); if blocked (402 BUDGET_WOULD_EXCEED / 409 MODEL_UNAVAILABLE), stop and ask customer; do not change model or budget yourself. confirm returns 403 PRODUCTION_PLAN_NOT_OPEN = this drama not open (gray release), follow original step-by-step confirmation flow.\n★【Post-completion QC】After extraction, use get_characters / get_scenes / get_props to verify profiles (names, appearance, era) match the customer script; after character sheets/concept images/scene images/prop images finish, review_assets handles coverage and quality review uniformly.",
|
|
19
|
+
"extract_assets": "Extract characters/scenes/props from the shootable script (writes three tables in one pass; the foundation for downstream consistency). Backend async; text step postpaid, no arrears. Prerequisite: rewrite_script has produced the rewritten script (mandatory for new projects; character profiles must be extracted from the rewritten script to stay self-consistent with script and storyboards). ★Minute-level backend task; use get_run_status to decide whether it is still running; do not treat 60 seconds as failure.\n★【Rewritten-script review hard gate · free】Before this step, you must call review_script first: report every returned finding to the customer verbatim (each with code=issue type, shots=hit shot numbers, action=which tool to use to fix), then pass review_token into this tool. Skipping review will be rejected with 400. If content changed after review → token auto-invalidates; review again once (still free). If there is error, block by default; only if the customer is informed and insists on continuing as-is may you pass acknowledge_review:true—pushing forward with known issues will likely produce unusable footage and is still charged normally (acknowledge_review only means the customer personally agreed; every execution mode still requires explicit customer consent, including managed mode); in managed steps, only allowlisted heuristic error can pass with auto_acknowledge:true (platform decides; if not allowlisted returns 400 AUTOPILOT_MUST_ASK:must_ask_customer=true then pause and ask customer, false = self-fix per action then review again). ★Gray-release dramas also require you (agent) to QC personally: inspect assets item by item per agent_qc returned by review_script, answer the checklist, and submit via submit_qc_report before this token can be used (not submitted → 400 agent_qc_required; bad report → blocked by default like error).★★【Execution-mode master rules · read before starting】For dramas with a confirmed opening plan, first get_production_plan and read autopilot: pro mode (pro, or autopilot.enabled=false, or no confirmed plan) → every later 'tell customer, proceed only after customer agrees' is literal; one-click (auto) / hybrid (custom) managed steps → do not ask customer: follow get_pipeline_status next_action in order, self-confirm quotes within the hard budget cap, after each layer still run review_* + agent QC, and let review/QC autopilot.next_step tell you how to proceed at this layer (allowlisted error with auto_acknowledge:true / which self-fix round / pause to ask customer); for choices follow autopilot.default_decisions; autopilot.never_auto_actions(mode=replace, deleting assets, overwriting customer-uploaded images, allow_era_ref_conflict, cloning voices, delivery acceptance) always require customer consent in every mode. ★In managed steps, regenerating frames for the same shot (generate_shot_frame) max 3 rounds, regenerating video (regenerate_shot_video / edit_video_shot) max 3 times; at the limit the platform returns 409 AUTOPILOT_SHOT_REGEN_LIMIT (not charged)—do not bypass with another tool; stop and ask customer: if customer approves more, quote normally and pass customer_approved_more_regens:true when generating (grants another limit); if customer accepts current state, continue, and pass acknowledge_review:true on the next paid call to record confirmation. 402 BUDGET_WOULD_EXCEED / 409 MODEL_UNAVAILABLE / 409 AUTOPILOT_SHOT_REGEN_LIMIT / 400 AUTOPILOT_MUST_ASK with must_ask_customer=true / non-empty pending_questions → pause and ask the customer the pending_questions from get_autopilot_log **summarized all at once**; customer-controlled steps follow pro mode. After final output, deliver to customer using the get_autopilot_log report. ★Three-tier execution strategy (do not mix the three when asking customer):①【Basic project settings · free · mandatory foundation · set when creating drama, do not create an empty shell】project_type/setting_brief(worldview · ERA LOCK)/ethnicity/aspect ratio resolution, plus consistency anchors cinematography_prompt(photography DNA)·art_bible(art bible)·visual_lock(visual lock)—all free, foundation for full-pipeline consistency; if not set properly, all later generation drifts and rework costs again. Set directly via create_drama/update_project_settings. ★visual_lock/art_bible only write image-level/world-level locks (shot language · environment · art tone · forbidden elements), **never pin clothing/hairstyle/appearance details for specific characters**—the single source of truth for character appearance is the character profiles produced by extract_assets (change via update_character); writing both places inevitably conflicts, character sheet vs profile, concept image vs visual lock, consistency gate rejects by character sheet → concept images/shot frames get **structurally rejected in chains**, no amount of rerolls passes, pure waste.★★【Era contract · free · required before image generation for non-contemporary or surreal subjects】The worldview in setting_brief is **free text**; it can provide background but cannot constrain images. The real override over visual_lock is the **structured era contract**: use set_era_contract to set this episode’s tier (modern/republican/historical/fantasy/surreal), get_era_contract to read current value. **Unset means empty**—the platform can only rely on prompt text to fight drift; modern objects entering ancient images or scene images drawn in the wrong era is usually caused by this being empty. ★Xianxia/fantasy/immortal-realm content **must use fantasy, not historical**: historical requires textual realistic accuracy and will classify glowing aura, floating landforms, and non-human transformations as 'era-inconsistent', pulling images toward realistic ancient style. To make an exception for one scene (e.g. a modern flashback inside a fantasy world), use update_scene era_contract to override at scene level; scene-level beats episode-level.★★【Per-stage review protocol · all free · main line to prevent unusable film, not optional】After every stage output, review first, report conclusions verbatim to customer, then proceed. **Five hard gates (not passing causes 400; ④⑤ and agent QC below)**:① after rewritten script → review_script (before extract_assets / generate_storyboards);② after storyboards → review_storyboards (before generate_frames);③ after shot images → review_frames (before generate_videos). Each review returns review_token; pass it with downstream paid tools; explain findings one by one to customer (code=issue type · shots=hit shot numbers · action=which tool to fix), fix per action, then **review again** before proceeding. If content changed after review → token auto-invalidates; review once again (free). If error exists, block by default; only if customer explicitly understands and insists may pass acknowledge_review:true (acknowledge_review only means customer personally agreed; every execution mode still needs explicit customer consent, including managed mode); in managed steps, only allowlisted heuristic error can pass auto_acknowledge:true (see 【Execution-mode master rules】). **Soft guidance (non-blocking but strongly recommended, also free)**: before image/video generation run run_precheck (catches shots vendors will definitely reject, preventing wasted credits)—★**to run whole-drama first use run_drama_precheck** (drama-level summary · free · read-only): get issue counts per episode and attention (which episodes to fix first), prioritize by it, then run run_precheck on those episodes for details; do not blindly scan episode by episode. Note not_covered—drama-level skips the only lint that requires images, so '0 whole-drama issues' ≠ 'everything checked'. ★After findings, do not blindly edit yourself: plan_precheck_fix lets platform compute proposals → apply_precheck_fix writes them (choose which to adopt; managed=adopt all per execution mode: pro mode / no confirmed plan / this step customer-controlled → tell customer and proceed only after consent; do not decide for customer; managed step → do not ask, follow get_production_plan autopilot.default_decisions, platform logs in get_autopilot_log); after storyboards run get_health_report; after character sheets use get_characters to verify every appearing character has image/sheet; after frames use get_storyboards to inspect frame_status and fail_reason/fail_hint (fix failed shots before continuing; do not make video from bad frames); after videos inspect video_status similarly; before final cut use get_pipeline_status to confirm no missing shots. ★**Never generate straight through**: pushing layer after layer without review amplifies issues at every layer, and the whole episode may need redoing—every repeated image/video generation is real charged. Reviews are all free; catching issues costs nothing. ★Clothing changes are structured bindings: update_shot active_wardrobe_id (whole shot) / appearance_wardrobes (multi-character per role), can override or clear—editing text descriptions does not change clothes, and do not send customer to web UI.②【Production mainline · sequential, no skipping · ★storyboards before assets】set_script→rewrite_script→★review_script→extract_assets→storyboards(first storyboards · pure-text shot breakdown)→★review_storyboards→★Script discipline (endpoint-enforced, cannot bypass): all raw material (synopsis/outline/finished script all count) goes into set_script, **must go through rewrite_script to produce AI rewritten script**—pasting your own finished script directly into edit_rewritten_script to bypass rewrite will be rejected 400 (no rewritten script means nothing to edit); extract_assets likewise requires the rewritten script. All post-rewrite changes must use the structured format of AI output: edit script via edit_rewritten_script (polish/correct), character profiles via update_character, storyboards via update_shot/replace_shot_dialogue—do not go back and replace the whole script or write another truth source in settings; dueling truth sources are the top cause of consistency failures.★★**After rewrite_script succeeds once, do not rerun rewrite_script**: it restarts from the original full manuscript, discarding all current edits, and the new version is not guaranteed to preserve prior fixes (three-version tests oscillate). To fix, use edit_rewritten_script point edits (get_script full text → change only those scenes, copy the rest verbatim → submit whole text), free, seconds-level, deterministic; if rerun by mistake use get_script(include_previous=1) to recover previous version. generate_portraits_and_sheets(character sheet + concept images · build after storyboards: first use delete_character to delete appearing characters who **do not appear in any episode of the whole drama and are not planned for later episodes** before image generation—characters are drama-level; once deleted, no episode’s frame assembly includes them; this cannot be judged from current episode storyboards alone, keep if unsure (one character sheet costs far less than losing identity anchors in a later episode); the character sheet step generates images for **all undeleted appearing characters**, ignoring storyboard bindings, so kept characters are charged normally; voiceover characters (char_type=voiceover narrators/phone voices) are not image-generated and have no storyboard binding; **do not delete** them, dubbing relies on them)→★generate_color_script(color script · unified grading)→assign_voices(assign voice types; if narrator/character library has no fit → design_voice by description, then set_character_voice after sample approval)→★quote_scene_images+generate_scene_images(empty scene plates · required before frames)→frames(default first frames only)→★tail_frame_plan(free · which shots need independent last frames)→frames(frame_type=last_frame)→★chain_frames(seams · dry_run:true first)→★review_frames→videos→generate_tts→compose;★★【Do not skip seams · after last-frame completion, before review_frames】After first/last frames are ready, call chain_frames(dry_run:true, free) to view platform seam plan and estimated_points (copy free, reframe one image per seam), tell customer and execute without dry_run after confirmation; already chained seams are not planned, repeated calls do not charge again. ★After execution, reframe is **async image generation**: use get_jobs to watch first_frame generation rows for planned shots; wait until all pending/processing finish (failed: check error_msg; use chain_shot_from to rechains a single seam), then review_frames—while old first frame remains, get_storyboards frame_status is still ready, so it cannot show whether the new image is generating or failed. After get_jobs is clear, use get_storyboards to verify seam_state: replacement images rejected from promotion will not remain in get_jobs; that seam remains unchained (review_frames also reports seam_unchained); rechains per its action. If you review before landing, you reviewed old first frames; the token becomes invalid after new first frames land. Episodes generated shot-by-shot/batch likely were not auto-chained (get_storyboards seam_state=unchained means so); skipping does not error—the cost is mismatch between adjacent shots and jump cuts throughout final cut.★★【Do not skip last frames · frames are two passes】generate_frames defaults to first frames only. About 30% of shots have **end state ≠ start state** (large camera moves/object released/state changes) and need an independent last frame; the criterion is platform-side and cannot be guessed from storyboard text—therefore after first frames finish, you must call the free tail_frame_plan once to get per-shot list, then fill frame_type=last_frame (shots_needing_last_frame in generate_frames response is this count; if not 0 do not go straight to review_frames). Skipping does not error or block—the cost is that videos for those shots have only one anchor, so the model invents the end state: actions fail, large camera moves end back at the starting composition. Production tests: in 32 episodes, 30 generated only first frames for the whole episode, and 23 went all the way through video.★★【When last frame is blocked by TERMINAL_DESC_GATE: edit text, do not retry】For shots reporting 'this shot is marked as state-changing, but nowhere describes what it looks like at the end', use update_shot to write **what the image looks like at the end** into that shot’s last_frame_prompt, then regenerate last frame. ★Better: **avoid hitting it**—before last-frame generation, first inspect get_storyboards; shots with terminal_desc_missing=true are listed for the whole episode at once (free), fill their last_frame_prompt before generating and avoid any rejection. Per-shot query also exists (get_shot_prompts same field), but do not do that for dozens of shots. Retrying without filling the description is useless—the vendor prompt has no terminal-state section, so it still draws the first-frame pose and will be rejected again by terminal review, and each attempt is charged normally (production tests: last-frame success 9.4% without terminal description, 40.2% with it). Only use generate_shot_frame allow_missing_terminal for shots that truly should be 'almost unchanged'.★★【Do not skip empty scene plates · this step is often missed by third parties】Scene images are **background anchors**: every shot frame in the same scene anchors on it. Frames can still generate without plates, with no error and no block—the cost is **the first shot of every scene has no background anchor at all** (platform fallback is 'if missing image is discovered, generate one in background'; that plate is used by subsequent shots in the same scene, but the triggering first shot cannot wait for it), and the first shot is often the tone-setter; later backgrounds drift too. It is paired with character sheets: character sheets anchor people, scene images anchor locations; whichever is missing drifts. Progress self-check: get_pipeline_status generate_scene_images step (completed/total); review_storyboards also reports scene_plate_missing before frame generation.★★【Do not skip concept images · character sheet ≠ concept image】A character sheet is a single-person identity anchor; concept image is the platform-generated multi-angle turnaround from the character sheet, the root consistency anchor for shot frames/videos (angles, lighting, clothing rely on it). Frames can still generate with only character sheets, with no error—the cost is characters drift when angle changes and clothing differs every shot. Use generate_portraits_and_sheets for one-click two-step (each call advances one step; after character sheets are complete, call again to create concept images), or generate_character_sheets after character sheets. Progress self-check: get_pipeline_status generate_character_sheets step (completed/total, portrait_only=characters with character sheet only). ★Customer images: character sheet must be single person, single image, single angle, no text; scene image must be empty location with no people and no overlaid text—set_character_portrait/upload_scene_image auto-checks and rejects invalid with 422. ★Do not create character visuals/prop concept images/action templates before storyboards—storyboards are pure text and do not depend on any images; after storyboards the cast is known, delete non-appearing characters before image generation to save cost (action templates must be after storyboards anyway). Paid steps follow existing quote confirmation flow. Ads additionally need add_product+generate_product_sheet; MV uses set_mv_lyrics→generate_mv_story→generate_mv_script (if no finished song: after set_mv_lyrics first suggest_mv_song_styles→quote_mv_song→generate_mv_song→get_mv_song→select_mv_song).★★【④⑤ two new hard gates + agent personal QC】④Asset layer: after character sheets/concept images/scene images/prop images finish → review_assets (before generate_frames / generate_shot_frame; its token is asset_review_token and passed together with storyboard-layer review_token);⑤Video and dubbing layer: after video/dubbing/music finish → review_videos (before compose_episode); after final cut, run review_final_cut. ★After every review layer you must also **personally QC**: inspect assets item by item per returned agent_qc (download images, sample video frames, read text), answer checklist item by item, submit via submit_qc_report; for gray-release dramas, a review_token cannot enter the next step without the report; bad report is blocked by default like error. Platform judges existence; you judge likeness and correctness.★★【Single-shot path is also gated by reviews】: generate_shot_frame also requires storyboard-layer review_token; regenerate_shot_video also requires shot-image-layer review_token—do not expect single-shot tools to bypass review (production observed a workflow generating all 25 shots with single-shot frame tools and no gates; all final rework was fully charged). Generated frames **do not** invalidate the storyboard-layer token (fingerprint only covers storyboard content); only storyboard content edits—update_shot / import / add-delete shots / change character bindings—require one more review (free, seconds). Generating one shot’s frames invalidates the **shot-image-layer** token; before regenerating the next shot video, review_frames once.★★【For native-audio dramas, lock voices before batch video】When use_clip_audio=true(default), each shot’s voice is sampled independently by the video vendor; if not locked it will drift, and unifying after the fact requires per-shot regeneration. If customer-authorized voice source exists → clone_voice+set_character_voice before generate_videos; if not → for each speaking character first use single-shot quote_regenerate_shot_video→regenerate_shot_video on a shot with longer dialogue (generate_videos has no per-shot parameters and only batch-fills missing-video shots; single-shot regeneration also works for shots without video), then use set_voice_anchor_from_shot to select the voice from that shot, then generate remaining shots. get_pipeline_status native_voice_anchor lists unanchored_speakers not yet locked and stale_shots generated before locking that need regeneration. ★Worldview concept image = required by default (improves whole-drama consistency; many third-party platforms miss it): after storyboards, call generate_world_concept by default; still follows quote confirmation (tell customer estimated credits, confirm before charging)—do not charge silently and do not skip.★★【Color script】generate_color_script unifies grading across the whole film; run after storyboards and before frames; text step has no quote_*, postpaid by usage. Progress self-check: get_pipeline_status generate_color_script; review_storyboards reports color-script gaps. ★Action templates are optional experimental: call generate_motion_templates(action template extraction) after storyboards only if customer explicitly requests; text step postpaid by usage. First/last frames do not inject action templates by default; missing templates need not be made up and do not block image/video/final cut. Video templates may be cropped; delivery or quality gain is not guaranteed. ★Scene Bible(detailed per-scene setting) comes **after scene image generation**—refine based on generated scene images (no MCP tool yet; do on official site); do not make Scene Bible before scene images. ★Audio defaults to video native audio (use_clip_audio default on; skip TTS and use AI video’s built-in audio): when creating/updating drama settings, AI should proactively tell customer 'default uses video native audio; set use_clip_audio false if TTS dubbing is needed' and let customer choose. ★Default image model is ChatGPT Image 2.5 Flare(gpt-image-2.5-flare · unified whole-drama style): set image_model in create_drama/update_project_settings; omitted means default. Options: gpt-image-2.5-sunburst(same price · better Chinese glyphs/details)/gemini-3.1-flash-image(Banana 2 · 71 credits)/gemini-3-pro-image(Banana Pro · finer · 175 credits)/gemini-3.1-flash-lite-image(Banana 2 Lite · cheap · 31 credits)/doubao-seedream-5-0-260128(Seedream5.0); generate_frames can temporarily override one run. ★2.5 charges by input volume (base 11 credits + 18 credits per reference image); Banana/Seedream are flat price—shots with many reference images must include this in budget. ★Four video engine choices (drama-level · when AI creates a drama it must proactively guide engine choice by drama type and quote price differences for customer decision):【Decision tree】★Call get_production_menu first: whether each engine is currently available for realistic live-action / anime and other subject classes is decided by the availability it returns (unavailable entries carry customer_note and expected_until—relay them to the customer verbatim); do not assume from this description that any model is unavailable, and do not recommend models the menu marks unavailable. ①Realistic live-action drama→seedance-2.5 (strongest instruction following / face detail · pricing baseline 720p = 1×), or hailuo-3 when budget-sensitive (about 1/3 cost, 720p ≈0.33× · strong fidelity editing · can output 2K · but about 6 minutes per shot); ★After choosing, pass video_engine explicitly in create_drama / update_project_settings (the one the menu lists as available for this subject class)—if omitted, the platform only applies a style-based fallback stamp that is not guaranteed to be an engine the menu marks available; ②Stylized/animation/3D cartoon dramas · empty shots · product shots→wan3.0(about 40% price, 720p ≈0.4× · max 30 sec · minimum 2 sec billing · about 2 minutes per shot), use wan3.0-prime for rush delivery (720p ≈0.6× · about 1 minute); ★Always quote prices as relative multiples (seedance-2.5 720p = 1×); call quote_* before giving the customer absolute credits;③★Never choose wan3.0/prime for realistic live-action dramas—WAN output-side human-face review consistently rejects at 720p+, retry cannot fix;④★★For narrative dramas (dialogue, continuous story, stable shot rhythm), choose wan3.0/prime cautiously: WAN may **hard-cut camera positions inside a single storyboard shot** (tests: 11/12 shots had intra-shot jump cuts, versus seedance-2.5 1/6 and hailuo-3 0/5); final cut feels like 'the image jumps around within one shot, cuts too fast'. This is weak vendor instruction following and cannot be blocked at prompt level (our negative constraints are already included and tested ineffective); afterwards the only fix is regenerating with another engine. WAN fits stylized/empty/product shots that are inherently short and fast; for stable single-shot narrative choose seedance-2.5 or hailuo-3. After generation use scan_intra_shot_cuts to check;④b★★Dialogue-heavy dramas should choose hailuo-3 cautiously (different from above 'intra-shot self-cut'; this is about **whether all lines are spoken**): native-audio engine stops speaking at shot end and may ad-lib; tests show 'dialogue not fully spoken' rates hailuo-3 **50%** (26 shots, all generated after 8-30 native-audio repair, so engine itself), seedance-2.5 **23%** (294 shots); wan3.0 sample **insufficient, untested** for this dimension (26 samples all before same repair, only 2 after)—do not infer WAN is bad. When customer reports 'line not finished', first run scan_dialogue_coverage by family; do not default to lengthening shots (even among sufficiently long shots, 32% still missed full lines);⑤★Shot length control (all engines, especially WAN): keep each shot 3~5 seconds. The longer the shot, the more room the model has to improvise—test: one 16-second shot (neighbors all 3~5 sec) changed scenes 4 times within the shot; character disappeared for 4 sec then grew back from frame edge; customer sees 'a person appeared from nowhere'. For long performances, split into multiple short shots and connect with frame chains; do not write single shots over 15 sec;【Resolution decision】Draft/iteration: WAN dramas 480p (≈0.2× cheapest), others 720p; final delivery: seedance dramas 720p (for HD delivery choose 1080p, about 2.5× 720p), hailuo-3 dramas 1080p(=2K · ≈0.53×), WAN dramas 1080p(≈0.8×); hailuo-3 has no separate 480p tier (if selected, billed as 768P); set video_engine/video_resolution in create_drama/update_project_settings, ★must be decided before video generation—switching does not retroactively affect generated shots, and mixing within one drama causes style/identity drift. ★Slow image generation ≠ failure: each image takes tens of seconds to minutes; whole episode may take 10+ minutes. Poll get_storyboards frame_status—pending=still generating (wait patiently; do not call generate_frames again and waste credits), ready=done, failed=real failure. ★To change one shot’s image / make new character sheet take effect, use **single-shot regeneration generate_shot_frame** (platform automatically includes identity anchors, scene/prop references, style anchors for that shot to preserve whole-film consistency); generate_frames only batch-fills shots with **missing frames** and skips shots that already have first frames (normal, not 'rejected'). ★After first frames finish, call free tail_frame_plan to see which shots need independent last frames, then batch-fill with frame_type=last_frame. After changing a character sheet (set_character_portrait), stale_frames in the response are shots polluted by the old image and must be regenerated shot by shot. ★Never use external tools to make first/last frames and upload_shot_frame to 'change the image'—external images lack identity/style anchors, so characters/clothing/style will drift; that is the real source of unusable film. upload_shot_frame is only for customer-owned real footage.③【Optional enhancements · AI proactively informs customer · do only after quote confirmation】Art bible generation / visual lock extraction / scene groups / lip sync / posters / sound effects / music / subtitle translation—these improve consistency/quality and are mostly paid. ★AI should proactively tell customer these are available and provide quote (whether to run depends on execution mode: pro mode / no confirmed plan / this step customer-controlled → tell customer and proceed only after consent; do not decide for customer; managed step → do not ask, follow get_production_plan autopilot.default_decisions, platform logs in get_autopilot_log); neither silently skip nor charge without authorization. ★Two locking rules:①**Aspect ratio** is set at create_drama, locked at drama level; all later image/video/final cut use it, **do not change midstream** (generated content will have inconsistent aspect ratio and drift); default 9:16 if unset.②**5-7 sec per shot in shot breakdown is normal length optimized for AI video**, do not wrongly re-split because 'shots are long'—generate_storyboards **replaces all storyboards in the episode**, wasting generated images; backend blocks when storyboards already exist unless confirm_replace is supplied. ★Rewrite fidelity (default auto smart routing): when the set_script original is **already script-shaped** (scene headers/dialogue-line structure), rewrite_script automatically uses two-pass fidelity—customer dialogue is machine-gate locked line by line (missing one line causes internal rejection and redo), AI never adds plot; dramaturgical gaps (hooks/emotional anchors) are not auto-filled, but written into dramaturgy_suggestions returned by get_script (whether to adopt follows execution mode: pro mode / no confirmed plan / this step customer-controlled → tell customer and proceed only after consent; do not decide for customer; managed step → do not ask, follow get_production_plan autopilot.default_decisions, platform logs in get_autopilot_log). If original is novel/outline, it auto uses creative rewrite (AI lays hooks/emotional beats); both customer types get intended behavior, no manual switch needed. To override default use update_project_settings rewrite_pipeline(auto/two_pass/single_forced) and fidelity_enforce(1=hard fidelity gate). When customer says 'AI changed my script too much':①confirm full original entered set_script;②set rewrite_pipeline two_pass to force fidelity, then rerun rewrite_script;③after customer confirms character appearance, use update_character profile_locked=1 to lock profiles and prevent later extraction from overwriting appearance and changing faces in character sheets. ★If customer wants to rewrite script on **another AI platform** (common: third-party model says our rewrite 'changed too much', customer wants control): first call get_script_format_spec to obtain platform-accepted format contract (markdown template + external_prompt directly forwardable to external model + blank skeleton), give external_prompt+template+customer original to that platform; after receiving organized draft, **first call check_script_format** self-check (free · rule-only · no model); after errors are zero, two exits:【A】adopt_external_script directly adopts as shootable script (our AI not involved · seconds · no charge, requires external draft contains production-layer annotations);【B】set_script puts it back into original slot + rewrite_script two-pass fidelity (choose when external only handles story layer; platform fills annotations; customer-written annotations are stripped and rewritten on this path). ★Do not put external organized draft into edit_rewritten_script (400 if rewrite not run), and do not skip check_script_format before ingestion—noncompliant scripts are still blocked by gates, wasting a run.★★If the customer’s material is **already a finished storyboard table** (per-shot durations/framing/camera moves), neither path applies—use import_storyboard_table directly to create storyboards and skip rewrite and shot breakdown. The rewrite path will strip durations/framing/camera moves/STYLE/text cards as non-story content (production test: 8 shots 36 sec → 20 shots 109 sec). ★Both import channels are deterministic—wrong input is created as-is, so **get contract, self-check, then import**: storyboard table path uses get_storyboard_table_spec → check_storyboard_table → import_storyboard_table; if customer tools/spreadsheets can export structured data, or external AI can directly produce JSON, use get_bulk_import_spec → check_bulk_import → bulk_import_storyboards (only creates storyboards; characters/scenes/props are extracted from script by extract_assets; import binds by name to existing ones—extract first, then import). Both imports default with auto_complete(background AI fills professional fields + image/video prompts, text step postpaid; tell customer before call): if receipt started=true, poll get_autofill_status until done, then review_storyboards—autofill changes shots, so any earlier review token invalidates. Use get_pipeline_status for progress (returns project-type-specific steps).★★【Opening plan · first thing after creating drama · free】First ask basic video parameters (project type/aspect ratio/episodes × minutes per episode/subject: realistic_human realistic live-action · stylized anime/stylized · product/empty shots · native audio or dubbing), then call get_production_menu to get **currently available** three packages (effect description + real-time estimate including text steps + recommended budget + excluded items) and explain to customer—do not recommend models from memory; some models may be temporarily unavailable for some subjects, menu already filters them. Then let customer choose execution mode (pro self-control every step / auto one-click final cut / custom managed selected steps), budget budget_points, and automatic overrun cap (0/10/20/30/50%): **default recommendation** budget=selected package recommended_budget (upper bound excluding text ×1.2 plus text estimate), overrun=menu recommended_overrun_pct(30%)—QC regenerations are not in upper bound and are covered by overrun; recommendation is only recommendation, final numbers are customer’s, and if customer changes them use customer values. Explain summary clearly; only after explicit customer consent call confirm_production_plan(customer_confirmed:true)—never confirm for customer. For dramas with confirmed plan: before paid dispatch the platform rechecks model availability and quote upper bound ≤ budget×(1+overrun%); if blocked (402 BUDGET_WOULD_EXCEED / 409 MODEL_UNAVAILABLE), stop and ask customer; do not change model or budget yourself. confirm returns 403 PRODUCTION_PLAN_NOT_OPEN = this drama not open (gray release), follow original step-by-step confirmation flow.\n★【Post-completion QC】After extraction, use get_characters / get_scenes / get_props to verify profiles (names, appearance, era) match the customer script; after character sheets/concept images/scene images/prop images finish, review_assets handles coverage and quality review uniformly.",
|
|
20
20
|
"get_pipeline_status": "Check the complete workflow progress for one episode(script_rewrite/extraction/storyboards/voice/image/video/compose/music/final merge… each step done/partial/pending/not_required). Follow it in order; do not skip. Free. ★For auto / custom mode(hosted rollout), also returns next_action(action=run do hosted step directly / wait_running background still running, wait for persistence and do not dispatch duplicate / wait_customer client-controlled step or no budget precheck, ask first / ask_customer pending questions, summarize and ask first / done all steps complete—first run tool=review_final_cut, fix issues and re-compose/re-review, then deliver report; tool=which tool to call) and pending_questions; advance exactly by next_action. asset_versions_summary separates generated, input_consistent, review_valid, adopted, and current_effective; do not treat generate_videos.completed as current valid count. ★generate_images / generate_videos status=done only means \"generated\", not deliverable: inspect validity for that step(current_effective / input_changed with changed_by listing drama-level settings, shot itself, or which character changed / input_unknown / unreviewed / review_failed). If validity.note is non-empty, tell the client first. Changed input may not affect visuals; do not regenerate whole episode paid just for that—use get_asset_versions per shot to inspect causes. ★not_required means this mode does not need the step(e.g. TTS steps for native-audio drama, generate_bgm when music disabled), not unfinished; do not fill it. Image/video denominators exclude blocked shots(shots_not_applicable). merge_episode.bgm_stale=true means music is newer than final cut; just compose_episode again.",
|
|
21
21
|
"quote_character_portraits": "Quote: how many credits to batch-generate character sheets for characters missing them. Returns portraits_to_generate, estimated_points, quote_id. No charge. Character sheets are identity consistency anchors(missing them makes characters drift); strongly recommended before video. ★This quote only covers character sheets; after character sheets are ready, you **must** also generate_character_sheets for turnarounds(no quote required · image step postpaid; response sheets_to_generate_after is pending count). Only character sheets without turnarounds will drift when characters change angle/lighting/clothing—tell client about this step during quote. ★Returns two numbers: estimated_points is the **upper bound**(estimated at max reference images, enough balance avoids mid-run 402), typical_points is **typical cost**. Tell the client both; only quoting upper bound makes it seem much more expensive. For fixed-price models(e.g. Nano Banana series), they are equal.",
|
|
22
22
|
"generate_character_portraits": "After confirmation, batch-generate character sheets(★character sheets only): background async. A character sheet is a single identity anchor—shot consistency(especially wardrobe) also needs **turnarounds**. After this, strongly recommend generate_character_sheets, or use generate_portraits_and_sheets for both. Check progress via get_pipeline_status/get_storyboards. ⚠️ Batch quote-confirm flow: first call the corresponding quote_* tool to get estimated_points and quote_id, then call this tool with quote_id(quote confirmation by execution mode: pro / no confirmed plan / client-controlled step → tell client and get consent; hosted step → do not ask, follow get_production_plan.autopilot.default_decisions; platform logs in get_autopilot_log). Hosted quotes must fit within budget hard cap; if blocked by 402 BUDGET_WOULD_EXCEED, stop and ask client. ★**Image-generation quotes(character sheets/scene images/frames) return two numbers**: estimated_points is the **upper bound**(estimated at that model’s max reference images, prevents starting with too-low budget and hitting 402 mid-run); typical_points in same response is **typical cost**. Tell both—only upper bound sounds far too expensive(max-ref upper bound can exceed typical by 2x+), only typical may leave insufficient balance. For fixed-price models they are equal; then one number is enough.\n★[Post-completion QC · free] After images persist(poll corresponding get_*; if pending do not repeat call), run review_assets for asset-layer review(missing / generating / failed / rejected by consistency gate / prop era conflict / color script). Relay findings verbatim, fix per action and re-review; then personally inspect each image per agent_qc(does it match profile, same person, era correct; turnaround has all angles and correct proportions/structure; props and scene images make sense in story—compare used_in_shots). Submit QC with submit_qc_report. When generating shot images, pass its review_token as asset_review_token to generate_frames / generate_shot_frame.",
|
|
@@ -137,7 +137,7 @@
|
|
|
137
137
|
"rederive_shot_contract": "Using this shot's **current** prompt body and character binding, let the platform re-derive the composition contract (how many visible people, whether the subject is a person or a partial/object, shot size). The contract itself is internal: cannot be read or edited directly. This tool only returns outcome: updated (changed and effective) / unchanged (derived result same as current) / rejected (derived result self-contradictory, not adopted, original contract kept) / no_candidate (no usable result, original contract kept) / stale (shot changed during derivation, result not written; call again after edits), plus note for next step. Insufficient credits returns 402. ★When to use: image generation/precheck/review repeatedly says the number of people is wrong, or a partial shot (hand/prop close-up) is treated as a full-person shot in generation or review, and you have already edited text or bindings—the autofiller only fills blanks and does not overwrite existing contracts; without this tool, edits will not enter the contract. ★Correct order: first update_shot to make the image text correct (who is visible, who is voice-only via character_presence voice_only, unbind anyone who should not appear from character_ids), then call this tool; calling without text edits usually returns unchanged. ★One text AI call, postpaid by token (same chain as autofill_storyboards); inform the customer before calling. ★Only changes this one contract field; does not touch dialogue/prompts/other specialized fields. Generated first/last frames are not auto-regenerated; to update visuals, regenerate frames for this shot (quote first). ★updated invalidates unconsumed frame/video quotes for this shot and the same episode; quote again afterward.",
|
|
138
138
|
"get_shot_prompts": "Read the four prompt **bodies** for one shot (image_prompt=first-frame image / video_prompt=dynamic performance / first_frame_prompt=what it looks like at start / last_frame_prompt=what it looks like at end), for direct fine-tuning then writing back with update_shot. Free. ★terminal_desc_missing=true in the response means this shot is marked as a \"state change\" but none of the three places describes the terminal state—last-frame generation will be blocked by the pre-gate. Fix by writing the end state into last_frame_prompt (do not retry image generation; retry will inevitably be rejected again and still charged). ★Also returns expression_hint (author-specified facial expression for this shot; null=unspecified, platform infers from dialogue). Edit it with update_shot. expression_inferred is the storyboard AI's inferred expression when the script did not specify expression (read-only; null=no inference, or this shot's dialogue/action/mood/description/intensity changed and the inference is expired and no longer used); it has lower priority than expression_hint—if inference is unsatisfactory, write expression_hint with update_shot to override it. ★Per-shot on demand: read only the shot you edit (episode list get_storyboards does not include prompts). ★Returned asset_tokens are supplemental reference markers in the body (@char:N / @scene:M); keep them unchanged when rewriting. Which character sheet is injected is determined by bindings (character_ids / scene_id in get_storyboards); deleting markers will not remove bound characters. Markers with #variant are the only source for that variant image. Writing a marker for an unbound character will inject that character's image. ★This is the body layer in the storyboard sheet; during image/video generation the platform also appends identity anchors, consistency constraints, and reference-image instructions (not here, and you do not need to write them). Changing prompts does not auto-regenerate images/video; to update visuals, regen the corresponding shot.",
|
|
139
139
|
"rerender_episode": "Recompose the final cut from the current timeline (use after shot edits/cropping). **Free** (pure ffmpeg+COS), asynchronous in background.",
|
|
140
|
-
"replace_shot_dialogue": "Replace a shot's dialogue timbre/voice (transcribe + clone + redub). **Synchronous call**, returns product in about 1 minute, postpaid by usage with no debt. Requires this shot to have native-audio video + character voice character sheet audio. ★This is also the cheapest fix for \"this shot did not finish the line / spoke something else\": redub the full line with cloned voice and mute the native-audio segment, **without regenerating video**—charged at TTS tier (per thousand characters), orders of magnitude cheaper than regenerate_shot_video (
|
|
140
|
+
"replace_shot_dialogue": "Replace a shot's dialogue timbre/voice (transcribe + clone + redub). **Synchronous call**, returns product in about 1 minute, postpaid by usage with no debt. Requires this shot to have native-audio video + character voice character sheet audio. ★This is also the cheapest fix for \"this shot did not finish the line / spoke something else\": redub the full line with cloned voice and mute the native-audio segment, **without regenerating video**—charged at TTS tier (per thousand characters), orders of magnitude cheaper than regenerate_shot_video (billed per second; over a hundred credits per second at 720p). Tradeoff: the image lip-sync was performed to the original audio, so after replacement it may mismatch; almost lossless when lips are unclear (back view/long shot/voice-over), use caution on extreme close-ups. ★Product is automatically written back to the shot (returns persisted:true), but written back ≠ included in final cut: rely on productEffective from get_dialogue_repair_status—if true, rerender_episode to recompose; if false, first perform pendingCompose as instructed, then recompose, otherwise the final cut still uses old audio. ★If this shot already has a lip-sync product, the final cut prioritizes the lip-sync version, so replacing track will not take effect. For episode batch use repair_episode_dialogue.\n★Before writeback, the product is verified (same criteria as scan_dialogue_coverage): still truncated, repeated/extra speech (extra_speech), or not the line (off_script) → **not written back**, this cost automatically refunded, and error returns which category—these shots cannot be fixed by voice replacement; use regenerate_shot_video. On success, verify:verified=false means it could not be judged (transcription failed/line too short); it is still written back, but unverified, so listen yourself.",
|
|
141
141
|
"revoice_narration": "Replace the voice for a shot's **narration/voice-over** (or re-synthesize after editing narration text). **Does not regenerate video**: keeps visuals and on-screen dialogue, only mutes the narration segments, synthesizes them with the current narration voice, mixes back, then verifies. Synchronous call, charged at TTS tier (per thousand characters). ★Edit first, then call: to change voice, first set_character_voice for the \"narration\" character (or design_voice to create one); to change text, first update_shot the narration line in dialogue. ★Pure narration shots (only narration in this shot) work directly; **mixed shots** (on-screen dialogue plus narration) require sentence count to match the speech segments in the video. If not, it errors instead of guessing (a wrong guess could mute on-screen dialogue too)—then only regenerate_shot_video can fix it. ★If the dialogue field has no narration line, it errors directly; if the vendor randomly speaks in a no-dialogue shot, use replace_shot_dialogue mute_only. ★After writeback, the final cut uses it directly (no extra switch); rerender_episode is enough to recompose. If verification fails, it is not written back, and narration synthesis cost is not refunded.",
|
|
142
142
|
"repair_episode_dialogue": "★Batch-fix \"line not finished / spoke something else\" for the whole episode. By default only fixes shots scan_dialogue_coverage judges defective (truncated/off_script/extra_speech); the minor_gap family is transcription error and native audio is usually fine, so it is untouched. Same principle as replace_shot_dialogue: redub the full line with cloned voice + mute native-audio segment, **without regenerating video**—charged at TTS tier (per thousand characters), orders of magnitude cheaper than episode-wide regenerate_shot_video, and the preferred fix for these defects. ★Tradeoff is lip-sync: visuals were performed to original audio and may mismatch after replacement. Almost lossless when lips are unclear (back view/long shot/voice-over); if the whole episode is close-up dialogue, prefer regenerate_shot_video. Asynchronous serial background run (CosyVoice synthesis is not concurrent); check progress with dialogue-repair-status. Insufficient balance aborts without charging. Each shot is verified after replacement; if still truncated/repeated/wrong, product is not written back, cost refunded, and listed in status verify_rejected. After completion, first check get_dialogue_repair_status productEffective:true before recomposing final cut (compose_episode / rerender_episode); if false, follow pendingCompose to complete composition first, otherwise the final cut still uses old audio.",
|
|
143
143
|
"get_dialogue_repair_status": "Check dialogue repair progress (free). repair_episode_dialogue runs asynchronously in serial background; poll with this.\n★This tool previously **did not exist**, while repair_episode_dialogue's description said \"check progress with dialogue-repair-status\"—third parties following it would find nothing (caught by MCP override gate on 2026-09-21).\n★Response includes **aborted** = last batch was stopped early due to account-level failure (kind=account_overdue upstream platform account overdue / credits insufficient credits), remaining shots not executed. In this state, **resubmitting unchanged will definitely fail for the same reason**: for credits, recharge first; account_overdue is not your credits issue—stop and tell the user to try later, do not repeatedly resubmit; model_unavailable=the vendor for the selected video model is paused or temporarily unavailable, error lists available alternative models; ask the user, then switch model and submit.\n★Includes **verify_rejected** = these shots failed verification after replacement (truncated/repeated/wrong), product not written back and cost refunded—voice replacement cannot fix them; use regenerate_shot_video.",
|