Seedance Storyboard in Shanghai Animation Style
liangdabiao/smy-seedance-storyboard
Turns a story, novel or myth into a retro hand-drawn animation style short-drama script, episode breakdown, asset prompts and Seedance 2.0 storyboard prompts.
Seedance 2.0 video & image generation via LibTV Gateway - AI text-to-video, image-to-video, video continuation, style transfer, and text-to-image using Seedance 2.0 model.
$ npx skills add nexu-io/nexu --skill libtv-video -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install nexu-io/nexu libtv-video --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/nexu-io/nexu.git skills-src && mkdir -p .claude/skills && cp -r skills-src/apps/desktop/static/bundled-skills/libtv-video .claude/skills/libtv-video && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "libtv-video" agent skill from https://github.com/nexu-io/nexu/tree/main/apps/desktop/static/bundled-skills/libtv-video into .claude/skills/libtv-video/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "libtv-video", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/nexu-io/nexu/tree/main/apps/desktop/static/bundled-skills/libtv-videoType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add nexu-io/nexu --skill libtv-video -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install nexu-io/nexu libtv-video --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/nexu-io/nexu.git skills-src && mkdir -p .agents/skills && cp -r skills-src/apps/desktop/static/bundled-skills/libtv-video .agents/skills/libtv-video && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "libtv-video" agent skill from https://github.com/nexu-io/nexu/tree/main/apps/desktop/static/bundled-skills/libtv-video into .agents/skills/libtv-video/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "libtv-video", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add nexu-io/nexu --skill libtv-video -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install nexu-io/nexu libtv-video --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/nexu-io/nexu.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/apps/desktop/static/bundled-skills/libtv-video .cursor/skills/libtv-video && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "libtv-video" agent skill from https://github.com/nexu-io/nexu/tree/main/apps/desktop/static/bundled-skills/libtv-video into .cursor/skills/libtv-video/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "libtv-video", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/nexu-io/nexu.git --path apps/desktop/static/bundled-skills/libtv-video--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add nexu-io/nexu --skill libtv-video -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install nexu-io/nexu libtv-video --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/nexu-io/nexu.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/apps/desktop/static/bundled-skills/libtv-video .gemini/skills/libtv-video && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "libtv-video" agent skill from https://github.com/nexu-io/nexu/tree/main/apps/desktop/static/bundled-skills/libtv-video into .gemini/skills/libtv-video/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "libtv-video", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install nexu-io/nexu libtv-videoInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add nexu-io/nexu --skill libtv-video -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/nexu-io/nexu.git skills-src && mkdir -p .github/skills && cp -r skills-src/apps/desktop/static/bundled-skills/libtv-video .github/skills/libtv-video && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "libtv-video" agent skill from https://github.com/nexu-io/nexu/tree/main/apps/desktop/static/bundled-skills/libtv-video into .github/skills/libtv-video/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "libtv-video", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add nexu-io/nexu --skill libtv-video -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install nexu-io/nexu libtv-video --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/nexu-io/nexu.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/apps/desktop/static/bundled-skills/libtv-video .opencode/skills/libtv-video && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "libtv-video" agent skill from https://github.com/nexu-io/nexu/tree/main/apps/desktop/static/bundled-skills/libtv-video into .opencode/skills/libtv-video/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "libtv-video", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
libtv-videoSeedance 2.0 video & image generation via LibTV Gateway - AI text-to-video, image-to-video, video continuation, style transfer, and text-to-image using Seedance 2.0 model.
Libtv Video is an agent skill from nexu-io/nexu. Seedance 2.0 video & image generation via LibTV Gateway - AI text-to-video, image-to-video, video continuation, style transfer, and text-to-image using Seedance 2.0 model. Also supports Kling 3.0, Wan 2.6, Midjourney, Seedream 5.0. Trigger phrases: seedance, generate video, make a video, generate image, make an image, draw, libtv, liblib.
Its SKILL.md is about 3.5k tokens, which your agent loads only when the skill is triggered. The skill folder holds 3 other files, including scripts (for example `scripts/feishu_send_video.py` and `scripts/libtv_video.py`).
It sits in Media & Creative, covering AI video generation and Image generation. It works with Seedance, Midjourney, Feishu (Lark) and WeChat. The repository describes itself as: The simplest desktop client for OpenClaw 🦞 — bridge your Agent to WeChat, Feishu, Slack & Discord in one click. Works with Claude Code, Codex & any LLM. BYOK, Oauth… The licence is MIT.
4 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit dadfb1c. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Ships 2 files in scripts/ (Python), which the agent can run.
Shell commands in SKILL.md call:
python3From the folder's file list and the shell code blocks in SKILL.md.
Hosts in commands or code, which the agent is likely to contact:
seedance.nexu.ioim.liblib.tvlibtv-res.liblib.artFrom URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Libtv Video loads about 3.5k tokens when it runs. Until then it costs about 88 tokens; SKILL.md has 1,646 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); the scripts in this folder are not scanned.
The full file from nexu-io/nexu at commit dadfb1c, republished under its MIT licence (© nexu-io). 1,646 words, ~3,499 tokens.
.claude/skills/libtv-video/SKILL.md (or your agent's skills folder). This skill also uses 2 other files; get the full folder from GitHub.Generate AI images and videos through one bundled LibTV skill, powered by Seedance 2.0. Supports text-to-image, image-to-image, text-to-video, and image-to-video workflows, via both Nexu-managed Seedance execution and direct LibTV execution with a user-owned sk-libtv-... key.
Key routing:
mgk_... keys use Nexu-managed Seedance through https://seedance.nexu.io/sk-libtv-... keys use direct LibTV OpenAPI through https://im.liblib.tvDelivery architecture (currently Feishu only):
create-session captures OPENCLAW_CHANNEL_TYPE + OPENCLAW_CHAT_ID,
persists them as the session's delivery block, forks a detached
wait-and-deliver background process via subprocess.Popen(..., start_new_session=True), and returns immediately with a single-line
JSON submit confirmation on stdout.feishu_send_video.py — the same proven helper used by medeo-video —
which downloads each result URL, uploads it to Feishu's file API, and
posts a native media message to the originating chat.$NEXU_HOME/libtv-waiter-<id>.log
for post-hoc debugging. A delivered_at timestamp is persisted when
the Feishu helper reports success, so re-invoking wait-and-deliver
on a delivered session is a safe no-op.No sessions_spawn, no subagent model-speech contract, no HTTP
notification callback, no stale routing fields. Delivery is a direct
HTTP call using stable per-user identifiers (open_id / chat_id)
that never go stale the way the old account_id did.
Multi-channel support is a follow-up: adding Discord / Slack / WeChat
means dropping a new <channel>_send_video.py helper next to
feishu_send_video.py and adding one branch in _deliver_results.
apiKey configured in ~/.nexu/libtv.jsonvideoRatio configured in ~/.nexu/libtv.json or implicit default 16:9mgk_... keys target https://seedance.nexu.io/sk-libtv-... keys target https://im.liblib.tvIf the user has not configured an API Key, guide them to:
mgk_...sk-libtv-...python3 scripts/libtv_video.py setup --api-key <your_key> --video-ratio 16:9python3 scripts/libtv_video.py check to confirm the configuration is correctTo change only the default ratio later:
python3 scripts/libtv_video.py update-ratio --video-ratio 9:16python3 scripts/libtv_video.py checkYou are a messenger, not a creator. The backend agent handles model selection, prompt engineering, and workflow orchestration. Your job is three things only:
upload to get OSS URLcreate-sessionNever do these:
--channel and --chat-idBefore running create-session you must extract the originating
channel and the user's stable identifier from the inbound message
metadata block and pass them as CLI args. Without these the background
waiter cannot deliver the finished video back to the user automatically;
the user will have to ask for the result manually.
untrusted metadata
JSON block containing sender_id. That value is the stable open_id
(always starts with ou_). Pass it as --chat-id and pass
--channel feishu.Example extraction and invocation:
Conversation info (untrusted metadata):
{
"message_id": "om_x100...",
"sender_id": "ou_33314772052f837a3cb2f919aa4605de",
...
}becomes:
python3 scripts/libtv_video.py create-session "user's video description" \
--channel feishu \
--chat-id ou_33314772052f837a3cb2f919aa4605deThe stdout JSON returned by create-session includes a deliverable
flag. If it is false, your --channel / --chat-id were missing and
the user will have to ask you for the result later.
python3 scripts/libtv_video.py create-session "user's video description" \
--channel feishu --chat-id <ou_xxx from inbound metadata>Message rules:
mgk_... mode appends the Seedance 2.0 hint unless the user already chose a modelsk-libtv-... mode follows the upstream relay discipline and does not add the Seedance model hint16:9# 1. Upload the image first
python3 scripts/libtv_video.py upload --file /path/to/image.png
# Output: url=https://libtv-res.liblib.art/...
# 2. Create session with the image URL in the message
python3 scripts/libtv_video.py create-session "user's description reference: {oss_url}"python3 scripts/libtv_video.py create-session "new description" \
--session-id SESSION_ID \
--channel feishu --chat-id <ou_xxx from inbound metadata>create-session returns immediately without blocking and prints a
single-line JSON {"status":"submitted", "sessionId", "projectUuid", "projectUrl", "channel", "deliverable", "note"} to stdout.note field as a hint:
"Your video task has been submitted and is now generating. I'll notify
you when it finishes."create-session has forked a detached wait-and-deliver
background process that polls the upstream API for you.feishu_send_video.py. You do not need to speak the result yourself.deliverable is false (no channel context captured), the user will
need to ask for the result explicitly via query-session or recover.python3 scripts/libtv_video.py query-session SESSION_IDpython3 scripts/libtv_video.py recover to see all sessionsIf you don't remember whether a video was previously generated:
python3 scripts/libtv_video.py recoverWhen generation completes, show both:
Do NOT show the project canvas link while generation is in progress.
The valid result URL prefixes are:
https://libtv-res.liblib.art/sd-gen-save-img/https://libtv-res.liblib.art/claw/Any other domain (for example medeo-res.liblib.art) is not a final result URL and must be ignored.
Always present the URL exactly as extracted by the script. Do not:
The extract_result_urls() function in the script extracts only valid libtv-res.liblib.art result URLs. Trust its output.
When running multiple video generations concurrently, you MUST follow these rules strictly:
Maintain a clear mapping for each generation request:
create-session)create-session)Before presenting results, always verify:
When presenting results from multiple concurrent sessions, always label which result belongs to which request:
Scene 1 (palace): [video URL from session A]
Scene 2 (garden): [video URL from session B]If some sessions complete before others:
When any command returns an error:
| Error keyword seen | Suggested action |
|---|---|
| "Invalid API Key" | Run check, contact admin to confirm key |
| "Free trial uses exhausted" | Contact admin for a new key |
| "Key expired" | Contact admin for a new key, run update-key |
| "Service temporarily unavailable" | Wait a few minutes and retry |
| "File too large" | Suggest the user send a smaller file (max 200MB) |
| "Unsupported file type" | Only image and video files are supported |
| "Cannot connect to gateway" | Check network connectivity |
This skill has a hard anti-hallucination rule. The model must verify each step before it can describe that step as successful.
Submit step checks:
~/.nexu/libtv.json exists and contains a non-empty apiKeymgk_ or sk-libtv-mgk_... keys target https://seedance.nexu.io/ unless a deliberate local test override is setsk-libtv-... keys target https://im.liblib.tv unless a deliberate local test override is setsk-libtv-... key through the Nexu Seedance gateway16:9create-session returns a real sessionIdcreate-session returns a real projectUuidsession_id, project_uuid, status=submittednote field from create-session stdout to acknowledge the submission to the userBackground delivery checks (handled by the detached waiter, not by the model):
delivered_at after feishu_send_video.py returns success; re-running wait-and-deliver on a delivered session is a safe no-opfeishu_send_video.py fails, the error is logged to $NEXU_HOME/libtv-waiter-<session-id>.log; the result URLs remain persisted locally so the user can ask query-session to retrieve themstatus is set to timeout; the user will have to ask later via query-session or recoverOutput rule:
| Scenario | Command | Blocking? |
|---|---|---|
| First-time setup | `setup --api-key <mgk_xxx | sk-libtv_xxx>` |
| Check status | check | No |
| Update key | `update-key --api-key <mgk_xxx | sk-libtv_xxx>` |
| Update ratio | update-ratio --video-ratio 9:16 | No |
| Remove key | remove-key | No |
| Upload file | upload --file /path/to/file | No |
| Create session / send message | create-session "description" | No |
| Query session | query-session SESSION_ID | No |
| Download results | download-results SESSION_ID | No |
| Wait and deliver | wait-and-deliver --session-id ID --project-id UUID | Yes |
| List all tasks | tasks | No |
| Recover sessions | recover | No |
| Change project | change-project | No |
Script path for all commands: scripts/libtv_video.py
© nexu-io, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 2 other files (scripts) in apps/desktop/static/bundled-skills/libtv-video of nexu-io/nexu.
Open the folder on GitHubat commit dadfb1c
Libtv Video next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Libtv Video this skillnexu-io/nexu | 3.3k | — | ~3.5k | Automated safety check: Pass | MIT | |
| Seedance Storyboard in Shanghai Animation Styleliangdabiao/smy-seedance-storyboard | 138 | — | ~3k | Automated safety check: Pass | None | |
| Use Avibeavibe-bot/avibe | 622 | — | ~2.5k | Automated safety check: Pass | MIT | |
| Seedance Storyboard Generatorliangdabiao/Seedance2-Storyboard-Generator | 2.6k | — | ~2.2k | Automated safety check: Pass | None | |
| Imagesmixs/visual-skills | 494 | — | ~2.1k | Automated safety check: Pass | CC-BY-4.0 | |
| HiggsfieldOSideMedia/higgsfield-ai-prompt-skill | 713 | — | ~9.1k | Automated safety check: Pass | MIT |
liangdabiao/smy-seedance-storyboard
Turns a story, novel or myth into a retro hand-drawn animation style short-drama script, episode breakdown, asset prompts and Seedance 2.0 storyboard prompts.
avibe-bot/avibe
Safely inspect and modify local Avibe configuration, routing, runtime settings, watches, scheduled tasks, Avibe Cloud remote access, and operational state.
liangdabiao/Seedance2-Storyboard-Generator
专业的Seedance 2.0平台AI视频脚本和分镜生成器。当用户要求:(1) 将文章/故事转换为视频脚本,(2) 生成Seedance 2.0分镜提示词,(3) 规划多集AI视频系列,(4) 为GPT-Image-2、Seedream、Nano Banana…
smixs/visual-skills
Image prompting skill for Nano Banana (NBP/NB2) and GPT Image 2.5 (Flare/Sunburst).
OSideMedia/higgsfield-ai-prompt-skill
A skill your agent uses whenever the user asks anything about Higgsfield AI — writing or refining video/image prompts, choosing a model (Kling, Veo, Wan, Seedance, Minimax Hailuo, DoP, Soul, Nano…
jieyefriic/nbcraft
Multi-backend Image + Video Generation CLI (nb command). An agent skill from jieyefriic/nbcraft.
nexu-io/nexu
Generate or edit images via Nano Banana image models. An agent skill from nexu-io/nexu.
nexu-io/nexu
All-in-one image generation with Gemini models. An agent skill from nexu-io/nexu.
nexu-io/nexu
一句话生成大师级海报、书籍封面、专辑封面和各类设计作品。无需懂PS、配色或艺术史,AI自动选择最佳风格(基于33+位传奇设计师)。支持多平台多比例:公众号封面(21:9)、小红书配图(3:4)、文章配图(16:9)、书籍封面(9:16)、专辑封面(1:1)、电影海报(9:16)。包含AI提示词优化、风格对比、图生图转换功能。触发词:"Mondo风格"、"书籍封面设计"、"专辑封面"、"海报设计"…
nexu-io/nexu
Deploy static pages to nexu.space. An agent skill from nexu-io/nexu.
nexu-io/nexu
A skill your agent uses when verifying OpenClaw gateway fixes end-to-end, testing skill loading after restart, or running integration tests against the local Nexu+OpenClaw stack.
nexu-io/nexu
A skill your agent uses when the user asks to process, triage, fetch, view, count, list, or resolve review feedback in a GitHub PR.
Categories
Seedance 2.0 video & image generation via LibTV Gateway - AI text-to-video, image-to-video, video continuation, style transfer, and text-to-image using Seedance 2.0 model. Libtv Video is an agent skill from nexu-io/nexu.0 model.
Libtv Video fits situations like: phrases: seedance; tasks that involve AI video generation; tasks that involve Image generation.
Run `npx skills add nexu-io/nexu --skill libtv-video -a claude-code`. Or copy the skill folder (apps/desktop/static/bundled-skills/libtv-video in nexu-io/nexu) into .claude/skills/libtv-video in your project. Claude Code loads it when a task matches its description.
Run `npx skills add nexu-io/nexu --skill libtv-video -a codex`. Or copy the skill folder (apps/desktop/static/bundled-skills/libtv-video in nexu-io/nexu) into .agents/skills/libtv-video in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add nexu-io/nexu --skill libtv-video -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/libtv-video, .gemini/skills/libtv-video, .github/skills/libtv-video and .opencode/skills/libtv-video in your project.
Going by SKILL.md and its folder, Libtv Video needs Python for the scripts in its folder and the command-line tools its instructions call (python3). Our summary lists: Python 3.
SKILL.md names 3 domains. In commands or code: seedance.nexu.io, im.liblib.tv and libtv-res.liblib.art; the agent is likely to contact these when it follows the instructions. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.
Libtv Video is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 3.5k tokens (SKILL.md is roughly 14k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Libtv Video: Seedance Storyboard in Shanghai Animation Style (liangdabiao/smy-seedance-storyboard, 138 stars), Use Avibe (avibe-bot/avibe, 622 stars), Seedance Storyboard Generator (liangdabiao/Seedance2-Storyboard-Generator, 2.6k stars) and Image (smixs/visual-skills, 494 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
nexu-io (a GitHub organization) maintains it in nexu-io/nexu, which has 3,284 GitHub stars. The repository holds 10 skills in this directory. The repository was last updated on April 26, 2026.
Source: nexu-io/nexu on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.