跳到主要内容
知仓学习社ZHICANG

meta-short-drama

Create a complete AI short-drama package from a topic: shot script, review/approval pause, consistent images and clips, titles, subtitles, and final…

不碰外部(只输出文字)无严重或高危命中TokenRhythm/opensquilla

它会碰到什么

扫了多少1 个文本文件,107 KB
它会碰到什么不碰外部(只输出文字)
命中总数0 处
命中统计严重 0 · 高 0 · 中 0 · 低 0

这一栏是扫描器报的事实,不是结论。命中多不等于有毒(安全工具、规则库、示例脚本本来就会包含危险写法),命中少也不等于干净。它和你手上的凭据、文件、网络有什么关系,需要你自己看。

技能内容

meta-short-drama

End-to-end short-drama generator with an explicit-consent review flow before

any paid external-media step. 1-10 shots (default 5), title card + ending

card, in-language burned subtitles, and the generated script is saved to disk

regardless of outcome. A direct approval continues immediately; an edit only

produces a revised preview and requires a second explicit approval.

What it does

  1. intake_extract scans the user message for RENDER_STYLE,

IDENTITY_ANCHOR, and N_SHOTS (1-10). Fills in defaults when missing.

  1. script_draft calls ai-video-script with the inferred values

pasted verbatim into every shot prompt.

  1. review_gate — free-form draft review. The user can approve,

request changes to render style / character / shot count / shot details,

or cancel in plain language.

  1. review_intent is local and deterministic. Explicit approval may

proceed, while a recognizable adjustment emits DECISION: revise; the

adjustment never authorizes an external call.

  1. script_revised (conditional) applies requested overrides, then

revision_confirm_gate shows the revised preview and requires a new

explicit approval. review_normalize is the final paid-media consent

authority; cancel, missing, ambiguous, off-topic, and further-edit replies

fail closed without provider calls.

  1. final_script freezes the canonical scheduler snapshot in memory; it

never re-reads the user-editable artifact.

  1. script_save writes that same canonical content to script.txt in the run folder

(always — even on cancel, so the user keeps the draft).

  1. title_extract / subtitle_extract / ending_text_extract

pull cover/ending text in the script's language.

  1. cover_image + cover_video — Pillow title card + 2s Ken-Burns

clip (0_cover.mp4 — sorts first in merge).

  1. Per-shot extracts × 10 — all slots are declared, but an exact

=== SHOT_N === header check deterministically skips absent script blocks

before calling the LLM. Active extracts still use __SHOT_ABSENT__ as a

second fail-closed guard, and paid image/video steps repeat the exact-header

check so an LLM cannot activate an unused slot.

  1. Image generation per active shotnano-banana-pro, at most one paid

submit, followed by a local placeholder PNG on a verified policy refusal

(the image step never aborts the DAG). Provider responses and ambiguous

transport outcomes never trigger an automatic second paid request.

  1. reference_prompt_extract + reference_image — one extra

nano-banana-pro call produces reference.png, a full-cast neutral

lineup of every named character on a neutral backdrop. Used as the

universal IDENTITY anchor for every shot's seedance call so the

character does not drift across cuts (nano-banana would otherwise

re-roll subtly different character designs per shot).

  1. Video generation per active shotseedance-2.0; paid submit

failures are never retried automatically because an ambiguous response may

already represent a billed job. After a job id is issued, transient polling

failures may retry that same job up to the configured limit. Any provider-policy

refusals stop immediately without another paid submission. The Ken-Burns

substitute then fires using the

shot's PNG. Each shot passes TWO reference images to seedance,

AND the per-shot prompt is wrapped with an explicit "Assets

Mapping" preamble in the upstream JiMeng convention so seedance

knows the role of each reference:

reference[1] = reference.png (full-cast fictional design anchor —

preserves silhouette / hairstyle / costumes /

accessories without reproducing real-person likeness)

reference[2] = N_shot.png (this shot's scene composition

reference — used for camera angle, framing,

blocking, prop placement, background layout)

The Assets Mapping preamble is in English even when the per-shot

directive is Chinese — seedance parses English instruction prefixes

reliably regardless of the user-content language. Empty / missing

references are still filtered before the API call (so direct CLI

callers using a single anchor remain backwards-compatible).

  1. ending_image + ending_video — Pillow "完" / "THE END" card
  • 2s Ken-Burns clip (99_ending.mp4 — sorts last).
  1. mergevideo-merger stitches 0_cover + active shots
  • 99_ending via numeric-prefix sort. ffmpeg cross-fade transitions.
  1. subtitles_srt — SRT cues from VOICEOVER per shot, shifted by

the 2-second cover duration so cue timing matches the merged

timeline.

  1. subtitled_finalsubtitle-burner burns the SRT into

final_subtitled.mp4.

  1. publish_final_video + publish_script — register the final

MP4 (video/mp4) and script (text/plain) with the active surface

so browser users receive artifact controls instead of only a local

path. The script is published even when the user cancels; the video

is published only after a successful proceed path.

  1. delivery_audit — deterministic receipt/fallback/ffprobe gate.

It combines validated receipts with the scheduler's bounded, parent-owned

paid-submission dispositions (safe_no_submit, maybe_accepted, or

receipt; only a conclusive receipt becomes confirmed). It is the sole

authority for API provenance and reports both story content duration and

the probed final duration (content + 4s bookends). A fallback after a

proven pre-submit failure does not trigger a billing warning; ambiguous

submission outcomes still emit only a sanitized asset list and

check-history warning.

  1. deliver — always runs, branches on DECISION, and waits for

the deterministic audit before composing delivery. It only restates

the machine-owned verdict and cannot promote fallback media to a

verified real-API result.

Outputs

<workspace>/meta_short_drama/<meta_run_id>/
    script.txt              # full final script (always; published artifact)
    reference.png           # full-cast identity reference (used by every shot_video)
    0_cover.png  0_cover.mp4
    1_shot.png   1_shot.mp4   ┐
    2_shot.png   2_shot.mp4   ├ only for active shots (1..N_SHOTS)
    ...                       ┘
    *.png.receipt.json       # image provider/request or placeholder status
    *.mp4.receipt.json       # video provider/model/job status
    99_ending.png 99_ending.mp4
    subs.srt
    final.mp4               # merged, no subtitles
    final_subtitled.mp4     # subtitled — published video deliverable

Dependencies

| Skill | Purpose | Models / Tools |

|---|---|---|

| ai-video-script | Structured shot list (1-10 shots) | LLM |

| short-drama-review-normalizer | Local fail-closed review/consent decision | Python stdlib |

| nano-banana-pro | Per-shot first-frame PNG | OpenRouter Gemini 3.1 / 3 pro |

| seedance-2-prompt | Per-shot MP4 | OpenRouter Seedance 2.0 (or Volcengine ARK) |

| video-still-animator | Ken-Burns fallback / cover & ending clips | ffmpeg ≥ 5.0 |

| video-merger | Stitch cover + shots + ending | ffmpeg ≥ 5.0 |

| srt-from-script | VOICEOVER → SRT with cover offset | Python stdlib |

| subtitle-burner | Burn SRT into MP4 | ffmpeg + libass |

| title-card-image | Pillow cover + ending PNG cards | Pillow |

| (builtin) write_file | Save script.txt (no skill needed) | OpenSquilla builtin |

| text-file-read | Re-read script.txt after review pause | Python stdlib |

Environment:

  • OPENROUTER_API_KEY must be set.
  • ffmpeg and ffprobe on PATH.
  • Pillow installed (already in opensquilla deps).

Risk

high — writes files, spends real OpenRouter credits, runs ffmpeg

subprocesses. The review gate plus deterministic normalizer ensures explicit

approval or a meaningful requested adjustment before any external media step.

Limits (v2)

  • 1-10 shots; default 5. The DAG always declares 10 slots but

__SHOT_ABSENT__ gating keeps unused slots dormant.

  • Per-shot duration follows the script's DURATION_S (clamped 3-15s by

seedance API). OVERVIEW.DURATION_S means story-shot content duration;

the final MP4 adds a fixed 2s title + 2s ending (content + 4s).

  • 9:16 portrait.
  • Per-shot seedance failures fall back to Ken-Burns. Image step

has its own placeholder fallback. Both are explicitly reported as

degraded and cannot satisfy the verified-real-API E2E status.

Prompt-extract llm_chats still abort the run if they return malformed

output.

  • Every run uses its runtime-owned meta_run_id subdirectory, so concurrent

runs and post-review additional_notes cannot redirect or collide outputs.

When NOT to use

  • Single image / single clip / script-only / stitch-only — use the

underlying skills directly.

想直接用这个技能?

本站把开放许可(MIT / Apache 等)的技能按仓库打包整理到网盘,点一下转存到你自己的网盘,不用一个个从 GitHub 拉。许可未声明的技能只给原始仓库链接,不打包。

它属于哪个仓库

星标★ 7,018
本站分层T1
该仓技能数68
原文件路径src/opensquilla/skills/bundled/meta-short-drama/SKILL.md

同一个仓库里的其他技能

看这个仓库的全部 68 个技能