Communitygithub.com

masskx/douyin-remotion-sentence-video

Build Douyin/TikTok-style English sentence-pattern short videos using Remotion, Codex, and Alibaba DashScope CosyVoice TTS. Use for English sentence skeletons, speaking patterns, writing upgrade sentences, emotional expressions, grammar-in-context, and high-retention sentence drills with black/yellow high-contrast visuals, audio-driven subtitles, slot replacement animations, and Douyin-style hooks.

What is douyin-remotion-sentence-video?

douyin-remotion-sentence-video is a Codex agent skill that build Douyin/TikTok-style English sentence-pattern short videos using Remotion, Codex, and Alibaba DashScope CosyVoice TTS. Use for English sentence skeletons, speaking patterns, writing upgrade sentences, emotional expressions, grammar-in-context, and high-retention sentence drills with black/yellow high-contrast visuals, audio-driven subtitles, slot replacement animations, and Douyin-style hooks.

Works with~Claude Code✓Codex CLI~Cursor
npx skills add https://github.com/masskx/GYEVideo/tree/main/remotion-template/skills/douyin-remotion-sentence-video

Ask in your favorite AI

Open a new chat with this agent skill pre-loaded.

Documentation

Douyin Remotion Sentence Video

Use this skill when the user wants short English videos that feel scrollable, useful, and sharply memorable, not like a grammar class.

This skill must match douyin-remotion-video in motion density, hook aggression, and audio-driven pacing. Treat sentence content as a different teaching structure, not a softer visual language.

One-Line Motto

This is not explaining grammar. This is tearing down your Chinglish.

Chinglish Trap Mode

This is now the default creative mode unless the user explicitly asks for sentence skeletons or pattern drills.

Use Chinglish Trap Mode when the user wants:

  • English short videos
  • correction videos
  • native-expression videos
  • Chinese-direct-translation fixes
  • contrast teaching
  • "中式英语" content

The default content engine is:

wrong expression -> meaning twist -> native fix -> short why -> use it here -> wrong vs right lock

The video core is not A/B formula and not mechanical repetition. The core is:

Chinglish Trap -> contrast hit -> natural English correction

The episode should feel like a creator is calling out a real-life embarrassment, not like a template is filling slots.

Kinetic Douyin Visual Mode

Chinglish Trap videos must default to Kinetic Douyin Visual Mode.

Core principles:

  • text is not placed, it is hit onto the screen
  • wrong expressions are not displayed calmly, they are punished
  • right expressions do not simply appear, they slam in
  • every 0.5 to 1.2 seconds needs one visual beat
  • every 2 seconds needs a clear screen change
  • the first 3 seconds need at least 4 visual actions
  • the main canvas must move with the voice rhythm, not just the subtitle bar
  • never leave a static card on screen for more than 2 seconds
  • never rely on long dual-column explanation blocks
  • never look like PPT
  • never let 5 episodes in a row share the same shell with only the sentence swapped

Borrow From Word Skill

The sentence skill must explicitly borrow the strongest visual language from the local vocabulary skill.

Do not treat the sentence skill as a lighter or simpler version. It should feel just as aggressive and scroll-stopping as the word skill.

What to borrow:

  • HookScene style first-3-second interruption logic
  • slamIn, punchZoom, shake, flashOpacity, highlightSweep, quickCut
  • flash-word rhythm, not only title-card rhythm
  • center-dominant composition
  • one dominant object per beat
  • grid / connect / network visual thinking when teaching relationships
  • short emotional reaction moments when they help the beat
  • no dead holding frame while voice continues

What not to borrow:

  • dictionary-list pacing
  • root-specific teaching structure when the topic is sentence correction

The target is:

sentence content, but word-skill-level visual aggression

This is mandatory. If the result still feels like a teaching card with animated subtitles, the skill has failed.

Motion Rhythm Lock

The sentence skill must inherit the same rhythm discipline as the word skill:

  • the opening is a HookScene mindset, not a title-card mindset
  • motion follows generated voice timing, not guessed second marks
  • every spoken key phrase should trigger a visible hit, replacement, or screen rebalance
  • when voice keeps moving, the main canvas must also keep evolving
  • subtitle changes alone do not count as a visual beat
  • contrast moments must land with impact motion, not gentle fades
  • wrong phrase beats should use punishment motion such as shake, stamp, crush, strike, flash, or glitch
  • correct phrase beats should use payoff motion such as slam, punch zoom, sweep, unlock, expand, or snap-center
  • every 2 to 3 beats should include one layout-level change, not only text animation inside the same card
  • every episode must feel cuttable on beat for short-video platforms even when muted

Anti-Template Creator Mode

The sentence skill must optimize for account stickiness, not only single-video correctness.

Default assumption:

  • viewers binge 3 to 10 clips in a row
  • if adjacent clips share the same opening shell, scene shell, or ending shell, the account feels fake-fast and templated
  • a technically correct video can still underperform if it feels predictable by the second clip

So every batch must vary at least these dimensions:

  • opening shell
  • scene type
  • emotional temperature
  • creator attitude
  • reveal mechanic
  • ending lock mechanic
  • cover-title grammar

Mandatory anti-template rule:

  • do not let the account feel like same edit + different sentence

Sticky Account Mode

Every sentence batch should help the account feel addictive, recognizable, and worth following.

Each episode should contribute at least one of these:

  • social pain: "I have said this wrong before"
  • identity gain: "Now I sound sharper / more natural"
  • comment bait: "I disagree / I have another way to say it"
  • series pull: "I want to watch the next one"
  • persona pull: "I like how this creator calls things out"

This skill is not just making English clips. It is building a Douyin English account with retention logic.

Retention Ladder

Do not optimize only for "viewer learned the answer". Optimize for "viewer keeps watching after the answer appears".

Every Chinglish Trap episode should create a 4-step retention ladder:

  • stop-scroll pain: first 1 to 3 seconds should expose a mistake the viewer has likely made
  • ego threat: make the viewer feel "wait, I may have sounded awkward"
  • hero rescue: give one immediate usable fix fast
  • aftercare payoff: after the fix, still give one more reason to stay, such as a second scenario, social nuance, or comment bait

If the video becomes boring right after the first correction appears, the skill has failed retention.

Required post-fix behavior:

  • after the first hero correction lands, there must still be a new beat with new value
  • the post-fix section cannot just restate the same answer with minor subtitle changes
  • at least one later beat should create either identity gain, social nuance, or comment impulse

Anti-Drop Rules

Common failure pattern:

wrong phrase -> correct answer -> done

This often gives a useful clip but weak account retention.

To avoid that, the default Chinglish Trap structure should feel like:

wrong phrase -> embarrassment -> hero fix -> where this works -> what not to overuse -> lock or comment bait

The last third should not feel like a summary card. It should feel like a final social takeaway or a sharp creator button.

Creator Persona Lock

Unless the user defines another persona, default to:

  • sharp
  • lightly roasty
  • socially observant
  • useful without sounding preachy
  • emotionally quick

The creator should sound like:

  • someone exposing awkward real-life English habits
  • someone rescuing the viewer from embarrassment fast

The creator should not sound like:

  • a worksheet generator
  • a neutral exam coach
  • a faceless content farm

Audio Energy Lock

Sentence episodes should feel more beat-led than the vocabulary skill.

Required defaults:

  • target BGM volume is 0.33
  • acceptable default window is 0.32 to 0.34
  • voice remains top priority through ducking, not by making the BGM too quiet
  • the BGM should provide obvious pulse and edit energy, not just background fill
  • if narration is dense, keep the configured BGM in range and increase ducking during active speech

The sentence skill should sound more like a Douyin rhythm edit and less like an explainer laid over quiet music.

Frame Fill Discipline

Sentence videos must not use giant decorative boxes with tiny text floating at the top.

Every major scene should have:

  • one dominant text block
  • one clearly intentional focal area
  • no large empty dead zone inside a bordered container

If a card takes 70 percent of the frame, the content inside must visually justify that space.

If the frame is mostly border and padding, the scene fails.

Line Art Fill System

When the frame has large dead space, do not fill it with random stickers, giant empty cards, or decorative boxes.

Use a line art fill system instead:

  • transparent or near-transparent overlay feel
  • black or white scratch-like contour lines depending on background contrast
  • no heavy white poster card unless the episode explicitly wants collage energy
  • line art should enrich breathing space, not become the focal headline
  • line art should suggest emotion, motion, or social awkwardness, not explain the lesson literally

Preferred line art styles:

  • ghost-wire: faint contour traces, airy, subtle, atmospheric
  • scribble-orbit: messy looping orbits and scratch accents, more energetic
  • contour-burst: sharper accent strokes, directional, higher contrast impact

Preferred line art roles:

  • awkward reaction
  • warning cue
  • speech cue
  • correction arrow
  • motion/sound burst

If the line art reads like a pasted white sticker on top of the video, it fails.

Shell Variant System

The Chinglish Trap system must rotate shell variants across episodes.

Required opening shells:

  • warning-stamp
  • accusation-board
  • global-split

Required ending shells:

  • split-verdict
  • vertical-lock
  • checklist-punch

Do not let the same opening shell and same ending shell repeat mechanically across adjacent episodes.

Douyin Hook Audit Mode

Before any episode is approved for production, run Douyin Hook Audit Mode.

This happens before code, before TTS, and before render.

The question is not:

does the video have motion?

The question is:

would a Douyin viewer stop in the first 1 to 3 seconds?

If the opening only shows the wrong English phrase like a title card, it fails.

If the opening behaves like a quiz card or a knowledge cover, it fails.

The hook must do at least one of these immediately:

  • hit a Chinese pain point
  • expose a high-probability learner mistake
  • create a social embarrassment feeling
  • create a "you thought this was right" reversal

The opening should feel like:

you've probably said this wrong before

not:

here is today's English mistake

Core Goal

The viewer should feel:

I was just scrolling, and then I suddenly realized I've said this wrong before.

Every episode must do at least three things:

  • expose a familiar wrong expression or Chinese-brain translation
  • show why it sounds wrong, weird, stiff, or misleading
  • give a natural replacement the viewer can actually reuse

Hard Principles

  • The wrong expression must appear early.
  • The Chinese pain point or reversal must appear in the first 3 seconds.
  • The correct expression must appear within 12 seconds.
  • For direct-translation Chinglish traps, the first hero correction should usually land within 6 to 10 seconds.
  • There must be clear contrast.
  • There must be a short teaching point.
  • There must be a real usage scene.
  • The ending must lock wrong vs right, not only Chinese summary.

Forbidden:

  • splitting a wrong phrase into multiple beats without giving pain point first
  • opening with a big title card that only repeats the bad English
  • making the viewer wait more than 3 seconds for the actual point
  • letting the viewer wait 20 seconds before the first usable English fix appears
  • large empty comparison boxes with text stuck near the top
  • stacking multiple long text blocks in one beat until they overlap or become unreadable
  • decorative borders that take more visual attention than the sentence itself
  • layouts where the box is the design and the text is an afterthought
  • only teaching a sentence pattern
  • only showing the correct answer
  • saying "this is more native" without explaining what is wrong
  • starting with grammar terminology
  • textbook-like examples
  • a pure knowledge-card feel
  • ending only on Chinese formula

Teaching Feel, But Not Classroom Feel

The account should still feel educational. But it must feel like entertainment-first correction content, not school.

Good tone:

  • short
  • sharp
  • contrast-driven
  • lightly roasty
  • clear enough to teach

Bad tone:

  • long teacher explanation
  • machine repetition
  • emotional soup
  • empty slogans

AI Content Director Mode

If the user does not clearly ask for sentence skeleton mode, default to Chinglish Trap Mode.

When auto-planning, prioritize:

  1. classic Chinglish
  2. Chinese direct-translation crashes
  3. one-word misuse
  4. over-simple expression upgrades
  5. common Chinese situations that learners do not know how to say

Every auto-generated episode should include:

  • wrongExpression
  • intendedMeaning
  • wrongMeaning or whyItFails
  • naturalExpression
  • alternatives
  • simpleRule
  • usageScene
  • coverTitle
  • caption
  • visualPlan
  • visualBeats

Default Voice Structure

The default Chinglish correction flow is:

  1. trap-open
  2. wrong-meaning
  3. native-fix
  4. why
  5. scene
  6. wrong-right-lock
  7. outro

Voice lines should be short enough to drive visible beats.

Core Workflow

  1. Read the topic and decide the mode. Default to Chinglish Trap Mode unless the user explicitly asks for sentence skeleton drills.
  2. Before writing the body, decide why this episode is followable: social pain, identity gain, comment bait, series pull, or persona pull.
  3. Design the first-three-second interruption. Pick the pain point, reversal line, wrong phrase exposure, and first 4 visible actions.
  4. For batch work, run an anti-template check before drafting. Vary opening shell, scene shell, ending shell, emotional temperature, and reveal mechanic.
  5. Create or update data files, especially src/data/voiceScript.ts, src/data/sentencePattern.ts, and src/data/episodeConfig.ts.
  6. Configure episodeConfig.ts, including hook, bgmId, bgmVolume, voiceVolume, and sfxVolume.
  7. Choose a strong local BGM from bgmRegistry, default bgmVolume: 0.33, and plan the ducking check.
  8. Build scenes from real beats, not from static teaching cards. Keep content, timing, motion state, emotion, and audience interaction intent separate.
  9. Generate TTS voiceover with DashScope CosyVoice. Never hardcode the API key.
  10. Use ffprobe durations to generate generatedVoiceTimeline.ts.
  11. Drive scene timing, subtitle timing, replacement hits, compare-board rebalances, and motion bursts from generatedVoiceTimeline.
  12. Render still frames at key beats, especially 0-3 seconds, the first correction reveal, and the final wrong-vs-right lock.
  13. Verify hook interruption, audio/video sync, BGM pulse, ducking, motion density, frame fill, anti-template variation, and follow-worthy payoff before delivery.

Preferred Project Pattern

Keep these files data-driven:

  • src/data/voiceScript.ts: canonical narration and subtitle source for the sentence episode
  • src/data/generatedVoiceTimeline.ts: generated from real audio durations
  • src/data/bgmRegistry.ts: local BGM registry generated from public/bgm/
  • src/data/episodeConfig.ts: per-episode hook, bgmId, bgmVolume, voiceVolume, and sfxVolume
  • src/scenes/HookScene.tsx or equivalent opening scene: interruption-first opening that stretches with generated voice timing
  • src/timeline.ts: derives scene timing from generatedVoiceTimeline
  • src/components/BackgroundMusic.tsx: loops BGM, ducks under voice, and fades out at the end
  • src/utils/motion.ts: shared motion helpers such as slamIn, punchZoom, shake, flashOpacity, quickCut, highlightSweep

Sentence scenes should be built as evolving states, not static slides with narration on top.

Safety Rules

  • Never write API keys into source files, templates, examples, logs, or docs.
  • Use DASHSCOPE_API_KEY from the environment.
  • Treat generated audio and timelines as replaceable artifacts.
  • Do not rely on hardcoded second marks once a generated voice timeline exists.
  • Do not start an episode with a normal title page. The first 0.5 to 1 second must interrupt scrolling with large text or a hard visual hit.
  • Do not use low-energy BGM defaults copied from the word skill. Sentence episodes should default to bgmVolume: 0.33 with an allowed setup window of 0.32 to 0.34.
  • Do not solve voice clarity by dropping BGM to explainer-video levels. Keep the stronger BGM bed and use ducking while speech is active.
  • Do not allow more than 2 seconds where only subtitles change but the main frame composition does not meaningfully move.
  • Do not let long English alternatives share one hero card if they cause overlap. One dominant correction should lead; secondary options can follow in later beats.
  • Do not ship any frame where key text overlaps, clips, or competes with another large text block in the same focal area.
  • Do not let adjacent episodes reuse the same opening shell, same reveal shell, and same ending shell together.
  • Do not let every cover read like the same course-title formula.
  • Do not auto-generate a batch where all clips have the same creator attitude or emotional temperature.
  • Do not optimize only for "clear explanation" if the result loses surprise, sting, or replayability.
  • If DashScope instruction fails for a system voice, retry without instruction while preserving rate, voice, model, and script structure.
  • Do not load BGM from remote URLs during Remotion preview or render.
  • The sentence skill must feel like a Douyin edit first and an English lesson second.

Files To Load As Needed

  • End-to-end procedure: workflow.md
  • Hook audit rules: references/hook_audit_rules.md
  • Word-skill borrowing rules: references/word_skill_borrow_rules.md
  • Frame fill rules: references/frame_fill_rules.md
  • Chinglish constraints: references/chinglish_trap_rules.md
  • Contrast teaching rules: references/contrast_teaching_rules.md
  • Kinetic visual rules: references/kinetic_visual_rules.md
  • Text rhythm rules: references/text_rhythm_rules.md
  • Douyin motion rules: references/douyin_motion_rules.md
  • Topic bank: references/trap_topic_bank.md
  • Hook structure: references/hook_rules.md
  • Quality gate: references/quality_rules.md
  • Content directing: references/content_director_rules.md
  • Anti-PPT rules: references/anti_ppt_rules.md
  • Visual rules: references/visual_rules.md
  • Voice rules: references/voice_rules.md
  • Audio rules: references/audio_rules.md
  • Subtitle rules: references/subtitle_rules.md
  • Template: templates/sentence_pattern_template.ts
  • Template: templates/sentence_voice_script_template.ts
  • Template: templates/sentence_episode_brief_template.md
  • Prompt: prompts/create_new_sentence_episode.md
  • Examples: examples/chinglish_trap_examples.md
  • Examples: examples/hook_fail_vs_pass.md
  • Batch example: examples/auto_content_batch_example.md

Individual skills in this repo

This repo contains 2 individual skills — each has its own dedicated page.

Related Skills