HBG Classical Poem Silk Video skill

A skill that turns a classical Chinese poem into a vertical 1080x1920 ink-painting video with brush-calligraphy captions and retained ambient sound

  • 387 ★ on the repository
  • Last commit
  • MIT
Skill

Broad access

Why this level

  • Runs shell and Python scripts and uses a Docker container in which the user signs in to a third-party service, so cookies and sessions of that service need careful handling
  • The cleanup step removes the visible Gemini mark from finished clips: this may breach the service terms and mislead viewers about where a video came from, and the responsibility is the user's
  • The installer runs as curl piped to a shell, so read install.sh before running it
All reasons and checks

mr-funny/hbg-classical-poem-silk-video

Install

In your terminal, with SkillFoxx CLI

npx skillfoxx add skills/hbg-classical-poem-silk-video

Detects the agents on your machine, shows the access level and pins the version.

Other ways to install

Access and checks

How we review

Broad accessThe tool can change data, run commands or handle secrets.

  • Runs shell and Python scripts and uses a Docker container in which the user signs in to a third-party service, so cookies and sessions of that service need careful handling
  • The cleanup step removes the visible Gemini mark from finished clips: this may breach the service terms and mislead viewers about where a video came from, and the responsibility is the user's
  • The installer runs as curl piped to a shell, so read install.sh before running it

This is third-party code. Review the repository files before installing.

What it does

The classical-poem-silk-video skill takes an agent from the text of a Chinese poem to a finished vertical video. It first reads the era, place, season, imagery and emotional arc. Then it splits the poem into scenes: up to four lines get one line per scene, longer poems get two lines per scene. Each scene gets its own Chinese painting style: ink wash, gongbi, blue-green landscape, figures with horses and others. The agent makes still frames with the built-in ImageGen and animates them through the gemini-flow-suite Docker container. The skill restricts motion hard: the camera stays locked, buildings, mountains and trunks serve as anchors, and only water, birds, branches and clothing move. Each clip is checked at early, middle and late frames, and extra animals, rebuilt buildings and composition resets are rejected. The repository ships scripts for captions and assembly. make_scene_ass.py builds two-column vertical captions in the Ma Shan Zheng font with characters appearing one by one. render_scene.sh burns captions in and keeps the clip's original audio. concat_poem_crossfade.sh joins scenes with a dissolve in picture and sound while a continuous BGM plays underneath. final_media_qa.sh checks the finished MP4 for size, 30 frames per second, H.264 and AAC, black frames, silence and spot-check frames. A separate step removes the white Gemini sparkle mark from the lower right corner and keeps the red seal as part of the painting.

Who it is for. For makers of short vertical video and teachers of Chinese literature who work in Codex or Claude Code and are ready to set up Docker and an account for the Gemini service.

Good fit when

  • You want a 9:16 video for a classical poem, such as a Tang-era night on the water or a spring walk by a lake
  • You need brush-style captions where the characters appear one by one in two vertical columns, right to left
  • An eight-line poem has to be split into four two-line scenes, each in its own painting manner
  • You already have clips and want them checked for duplicated birds, extra horse legs, rebuilt buildings and black frames at the joins
  • You need several scenes joined with smooth transitions and one continuous background track while keeping each clip's original sound

Not a fit when

  • You want a Western or modern visual style: the skill is built entirely around Chinese painting and classical poetry
  • Docker or the gemini-flow-suite container is unavailable: the frame animation step does not work without it
  • You need service logos and marks in the frame untouched: the cleanup step removes the white Gemini sparkle, and it is better skipped if the service terms forbid it
  • You need a long video with speech or voice-over: the skill asks for natural ambient sound with no dialogue
  • You need a quick draft in minutes: the repository example goes through many steps with a check of every clip

Example request

Use the classical-poem-silk-video skill and make a video for the poem about a night mooring at Fengqiao: one line per scene, moonlight and water moving, camera locked

Limitations

  • You need Codex or another agent with a built-in ImageGen, Docker and a running gemini-flow-suite container from the separate Mr-funny/hbg-gemini-flow-suite repository. You complete the authorization there yourself; the skill does not do it and never prints cookies, keys or browser profiles.
  • Assembly uses ffmpeg and ffprobe, so checking the final file requires them to be installed.
  • The README and instructions are written in Chinese. The skill's output is designed for Chinese poems and does not cover Russian text.
  • The sparkle removal step runs only when the user asks and the service terms allow it. The decision is yours.
  • Video clips come from the external Gemini service, so quality and availability depend on it. Google services may be unavailable from Russia.

How to disable. Delete the classical-poem-silk-video folder from the agent's skills directory: ~/.codex/skills/classical-poem-silk-video for Codex, or the matching skills folder for Claude Code. The gemini-flow-suite container is stopped separately with Docker commands.

FAQ

How do I install the Chinese poem video skill in Claude Code?

Run curl -fsSL https://raw.githubusercontent.com/Mr-funny/hbg-classical-poem-silk-video/main/install.sh | sh -s -- --claude. For Codex the version without the flag is enough: it installs into ${CODEX_HOME:-~/.codex}/skills/classical-poem-silk-video. A manual install is also possible by cloning the repository and copying skill/classical-poem-silk-video.

How is this different from ordinary painting animation?

The camera stays locked and motion comes only from objects inside the painting: water, birds, branches, clothing. Buildings, mountains and trunks are declared static anchors, the bird count and a horse's body are fixed, and each scene gets one main action plus one or two ambient ones.

What do I need besides the skill itself?

An agent with a built-in ImageGen and Docker with the gemini-flow-suite container from the Mr-funny/hbg-gemini-flow-suite repository. The user completes the container authorization personally. Building and checking the video needs ffmpeg and ffprobe.

How does the skill make captions?

The make_scene_ass.py script produces an ASS file in the Ma Shan Zheng font. The first line of the poem goes to the right column, the second to the left, characters appear one by one, and punctuation is not shown on screen. The font ships under the SIL Open Font License 1.1.

What does the skill do about the Gemini mark in the frame?

The clean_star_watermark.sh script removes only the white Gemini sparkle in the lower right corner, and the red traditional seal stays as part of the painting. The author states that cleanup runs only when the user asks and the service terms allow it.

Discussion

No questions or reviews yet.

Skills

A skill that turns a poem into a 20–80 second ink-wash 2D animation: frames drawn by code, music synthesised with numpy.

SkillMinimal access64Repository stars

A skill that turns a Chinese voice-over script into animated HTML for screen recording, in manual mode or SRT autoplay mode

SkillMinimal access247Repository stars

A skill that turns a script into a finished video with voice-over, subtitles, a cover and a publish text, frames drawn by code.

SkillBroad access85Repository stars

A skill that makes video in pure code: narrated explainers and website promos in 35 visual styles, in 16:9 and 9:16.

SkillExtended access176Repository stars

A skill that takes Claude Code from a song and lyrics to a finished Vocaloid-style lyric video, rendered in a browser.

SkillExtended access271Repository stars

A skill that turns Chinese story copy or a set of ordered images into a vertical hand-drawn animation, a silent diary-comic picture track

SkillExtended access2.5KRepository stars

README in short

The README opens with a ready prompt for an agent to install the skill itself and a table of typical animation failures with how the skill avoids them. It then covers four install methods, the Docker runtime, sample requests and a pipeline diagram, plus the results of a real eight-line project with a finished clip in the release.

README badge

Original SKILL.md

---
name: classical-poem-silk-video
description: Turn Chinese classical poems and ci into coherent vertical Chinese-art videos with poem-driven scene grouping, GPT ImageGen stills, Docker-only Gemini I2V, retained model-generated ambience, Gemini sparkle-watermark cleanup, brush-calligraphy captions revealed character by character, optional local BGM mixing, stitching, and final-frame QA. Supports verse-driven variation across ink landscape, gongbi bird-and-flower, colored figure-and-horse painting, blue-green landscape, xuan paper, silk, and related Chinese visual languages. Use when users ask for 古诗词动态视频、诗词逐句或两句一景、国风视频、毛笔字逐字出现、整首诗拼接成片,or want the established 月落乌啼霜满天 workflow applied to another poem.
---

# Classical Poem Silk Video

Create a finished 9:16 poem video from the complete poem. Keep the visual series coherent without forcing every scene into one antique-silk template, let each scene express only its assigned lines, retain each generated clip's original ambience, and deliver the final MP4 visibly in chat.

Before the first run on a machine, read [runtime-contract.md](references/runtime-contract.md) and run [check_prerequisites.sh](scripts/check_prerequisites.sh). Never print, copy, or commit authentication cookies, API keys, browser profiles, or generated account data.

## Workflow

1. Read the complete poem. Identify title, poet, era, place, season, time, explicit imagery, actions, and emotional arc.
2. Group scenes:
   - Four lines or fewer: default to one line per scene.
   - More than four lines: default to two consecutive lines per scene.
   - Respect an explicit grouping request over these defaults.
3. Build a compact scene ledger with literal images, dominant action, depth layers, emotional function, and forbidden imagery reserved for other scenes.
4. Define one series bible. Read [style-and-scene-mapping.md](references/style-and-scene-mapping.md). Keep the series' Chinese visual DNA, historical period, typography zone, and quality level coherent, while choosing a poem-driven substyle, medium, palette, and depth pattern for every scene.
5. Generate one text-free 9:16 initial frame per scene with the built-in `image_gen` tool. Leave clean negative space on the right for typography. Save every accepted image into the active project.
6. Animate each image through the `gemini-flow-suite` Docker container without opening or controlling the host browser. Use [docker_gemini_i2v.sh](scripts/docker_gemini_i2v.sh) and a scene-specific motion prompt. Require natural ambient audio and no spoken dialogue. If the runtime is missing, follow [runtime-contract.md](references/runtime-contract.md); never improvise by exposing credentials or driving the user's browser.
7. Inspect every generated clip at early, middle, and late timestamps. Reject severe anatomy changes, duplicated animals, new architecture, style drift, or composition resets.
8. Remove only the white Gemini sparkle/diamond watermark with [clean_star_watermark.sh](scripts/clean_star_watermark.sh). Preserve a traditional red seal or other intentional painting content unless the user explicitly asks to remove it.
9. Create the vertical two-column calligraphy ASS file with [make_scene_ass.py](scripts/make_scene_ass.py). Use `Ma Shan Zheng`; place the first line in the right column and the second in the left column. Reveal one character at a time and omit punctuation from the displayed columns.
10. Burn captions and retain the AI clip's original audio with [render_scene.sh](scripts/render_scene.sh). Do not replace or discard the source audio.
11. Join the rendered scenes. Use [concat_poem_crossfade.sh](scripts/concat_poem_crossfade.sh) when adjacent scenes should dissolve naturally, or [concat_poem.sh](scripts/concat_poem.sh) for deliberate hard cuts. Crossfade both picture and retained ambience, while keeping BGM continuous and quiet beneath them; never restart the BGM at every scene.
12. Run [final_media_qa.sh](scripts/final_media_qa.sh) on the final encoded file. Verify 1080x1920, 30 fps, H.264/AAC, expected duration, both audio sources, safe typography, no white sparkle watermark, preserved red seal, natural transition midpoints, and no black or corrupt ending frame. Open suspicious frames at full resolution before delivery.

## Image and motion rules

- Use the built-in `image_gen` tool for still frames. Do not use Gemini/Flow image generation for them.
- Use the existing style reference only as a medium/patina reference; never copy its exact composition or subjects.
- Use one dominant event per scene. Do not illustrate the whole poem in scene 1.
- Keep the series coherent through Chinese visual language, period, recurring subjects, typography zone, and detail quality. Deliberately vary substyle, medium, dominant hue, light temperature, and depth pattern when the poem changes imagery or emotional function.
- Avoid repeating the same left-heavy subject, empty-right layout, parchment color, tree silhouette, and horizon height in every scene. Preserve caption safety while varying the visual skeleton.
- Translate sound through visible causes: open beaks, ripples, bending reeds, beating wings, or attentive posture.
- Keep the camera locked by default. Motion must come from existing depicted causes: drifting mist density, expanding water ripples, attached foliage oscillation, small anatomically coherent bird or horse actions, and cloth responding to wind. Use camera movement only when the user explicitly requests it.
- Prefer anchored local motion over long cross-frame travel. Treat architecture, tree trunks, shorelines, main body torsos, typography negative space, and the red seal as static anchors that may not be redrawn.
- Forbid new people, buildings, boats, birds, flowers, text, seals, or landmarks unless assigned to that scene.
- Preserve the model-generated audio. Measure both sources and place BGM roughly 6–10 dB below the retained ambience; 8%–16% linear gain is a starting range, not a fixed rule.
- If the user explicitly requests full-volume parallel sound, override the quiet-bed default: keep the generated ambience at its existing gain, mix the BGM at 100% linear gain with no ducking, and use only a final limiter to prevent clipping. Do not restart either source at scene boundaries.

## Output contract

Report a problem