Easel is an open-source content workspace and AI agent for managing social media from trend discovery through planning, content creation, publishing, and performance analysis. It is intended for social media creators and maintains separate account profiles, content projects, platform adaptations, and publishing records. The catalogue skills support these content and publishing workflows.
Getting it into your agent
It runs from inside its repository, so the clone comes first — what it calls does not travel with the file alone.
git clone --depth 1 https://github.com/ZJU-REAL/Easelnpx agentmods add skills/zju-real/easel/short-dramaWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/zju-real/easel/short-drama)<a href="https://agentmods.dev/skills/zju-real/easel/short-drama"><img src="https://agentmods.dev/badge/skills/zju-real/easel/short-drama/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/zju-real/easel/short-drama"><img src="https://agentmods.dev/badge/skills/zju-real/easel/short-drama.svg" alt="Reviewed on agentmods" width="80" height="20"></a>- NVIDIA SkillSpector pass
What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00124 | $0.07701 |
| Opus 5.5 | $0.00050 | $0.03080 |
| Sonnet 5.5 | $0.00025 | $0.01540 |
| Haiku 4.5 | $0.00012 | $0.00770 |
Grade A, and why
short-drama scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 14d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 201 lines — stays where its author put it; the contents beside it link to each section on GitHub.
AI 短剧制作(横屏/竖屏微短剧,多集)
配置检查路径铁律:整条流水线开始前先
cd到运行时说明给出的 Easel 项目根,确认.env与skills/shared/scripts/存在。生图、视频、配音配置必须从这里运行注册表/check;不得在任何执行引擎的 workspace 或共享脚本副本中检查,不得用env/printenv判定缺少IMG_BASE_URL、VOICE_BASE_URL或 Key。发现缺项先核对pwd,回项目根并显式传--env-file .env重查。
⛔ 三条铁律(最容易翻车,动手前先记死)
- 每镜必须「图生视频」成动态片段——绝不能拿静态图冒充。 关键帧图(frame)只是 I2V 的首帧,必须再用 ai-video-gen
image2video驱动成会动的clip。跳过这步 = 一堆静态图配音,垃圾。合成前storyboard会硬拦只有 frame 没 clip 的镜头。 - 配音必须闭源云 provider(有情感、像真人)——绝不用 edge(AI 味平读)。 先
.env配VOICE_PROVIDER+voice_clone.py check验 key;配了 key 后dubbing align/dub合成前就硬拦 edge,任何角色(含旁白)想落到 edge 直接失败。只有完全没 key 才--allow-edge兜底。 - 原生音频优先、环境音每镜必留、台词务必喂给模型。 视频模型原生音频(环境音/脚步/物理音效)质量好,环境音默认整轨全用。头号要点:生视频必须把台词写进
generation_prompt(prepare生成)喂给模型,否则模型不知说啥、台词全错。默认 native-first(让模型逐字说、能说就用、不默认丢 TTS)→audit逐镜 ASR 核验:对上用原生对白(常态)、说错转dub换 TTS、旁白/动作镜走 TTS/环境音。决策与探针细节见步骤 16/18 及references/native-audio-workflow.md。 - 画面/声音/字幕按时间线对齐,自然播放。 画面用真实片段全长(台词只占其中一段,按实际说话时间放置),绝不慢放/循环/冻结;片段盖不住台词就重生成/拆镜(
align硬拦)。
⚠️ 不许抄近路(执行纪律,最常翻车):
prepare → drama_ops.py generate(生视频) → audit → align是不可跳的链,脚本已加链式硬门:① 生视频必须走drama_ops.py generate(它逐镜读generation_prompt自己调视频模型,agent 无从传成只有画面的 prompt)——别再逐镜手调 ai-video-gen;②generate/audit见有台词的镜缺generation_prompt→ 判定「没跑 prepare」直接失败;③align见缺clip-audit.json→ 判定「没跑 audit」直接失败(不再静默把全部对白降级成 TTS)。「手调生视频只传画面 prompt + 直接 TTS」这条错误捷径会被拦回来——才有「台词喂给模型 + 用视频原声」。
编排层 SKILL:创意(圣经/剧本/分镜/lines)你 LLM 写,生成动作全委派已有 SKILL(ai-image-gen/ai-video-gen/ai-music),确定性 IO 走
scripts/drama_ops.py+scripts/dubbing.py;角色一致性靠「先定参考图再 I2V」+ 剧集圣经锁成同一部剧。
输入
| 字段 | 必填 | 说明 |
|---|---|---|
| 题材/梗概 | 是 | 一句话剧情或改编源(没给就问) |
| 集数 | 否 | 由题材/需求定,不强制(微短剧常 10–30 集只是常见值;起号测试可先 1–3 集验证链路) |
| 单集时长 | 否 | 不强制固定分钟数——由题材/平台/剧情节奏定,几十秒到数分钟皆可;成片总时长 = 各镜片段时长之和(脚本不设上限,用户说多长就多长) |
| 画幅 | 是 | 用户或上游任务未明确横版/竖版(或 16:9/9:16/具体分辨率)时,制作前必须追问并等确认;不得按平台、Profile 或默认值静默推断,已明确则不重复问 |
| 视觉风格 | 否 | 都市港风/古装/校园/悬疑…(定统一风格前缀) |
What ships with it
15 files beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.
- EASEL-META.md 2.9 KB
- references/causal-beats.md 3.2 KB
- references/character-consistency.md 3.3 KB
- references/dialogue-craft.md 4.2 KB
- references/drama-review-rubric.md 5.1 KB
- references/four-act-drama.md 2.7 KB
- references/genre-hooks-handbook.md 5.4 KB
- references/native-audio-workflow.md 6.1 KB
- references/satisfaction-and-villain.md 3.8 KB
- references/series-bible-schema.md 5.5 KB
- references/shot-prompt-format.md 6.4 KB
- references/story-engine.md 5.8 KB
- references/vertical-pacing.md 2.0 KB
- scripts/drama_ops.py 41 KB runs code
- scripts/dubbing.py 46 KB runs code
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 14d ago Changed 8828940dff1c
- 1mo ago First seen · 201 lines · 124 tokens per session scan A 67d61b77b4ec
short-drama is a skill published in the GitHub repository ZJU-REAL/Easel (4,115 stars, last pushed 2d ago), licensed Apache-2.0. It adds 124 tokens to every session and 7,701 once invoked, about $0.0005 per session on Opus 5.5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.
Other skills, from other repositories
bmad-spec
Condense any input — an idea, brief, PRD, transcript, or mixed notes — into a short spec: one kernel file plus supporting files that downstream skills build from. Also updates and validates existing specs. Use when the user says "create a spec", "distill this into a spec", "validate this spec", or "update the spec".
bmad-advanced-elicitation
Push the LLM to reconsider, refine, and improve its recent output. Use when user asks for deeper critique or mentions a known deeper critique method, e.g. socratic, first principles, pre-mortem, red team.
jacky-motion2-0
A workflow for turning a Chinese spoken script and matching SRT subtitle file into a single 16:9 HTML information animation. SRT is a subtitle file that stores text with start and end times; the animation follows those times and adds recorded-screen placeholders when needed.
bmad-build
Turns implementation work into working code, reviewed and verified. Use when the user delegates a feature, story, bug fix, or meaningful change; a bare story or issue link counts. Skip obvious, low-risk mechanical maintenance such as small ignore-file, typo-only, formatting-only, or configuration-hygiene edits.…
bmad-retrospective
Review a finished epic folder in the ticket tree against the evidence it left behind — the epic file, each ticket plan, diffs, commits — and produce a retrospective with sourced findings, action items, and an acceptance decision. Use when the user says "run a retrospective" or "lets retro the epic [epic]". Supports…
bmad-review
Runs one or more installed review lenses — adversarial critique, edge cases, verification gaps, structure, prose — and reports triaged findings. Use when, and only when, the user asks you to review a diff, a pull request, or an artifact — code or documents, one or many — and actually says "review"; an explicit…