본문으로 건너뛰기
cccskills
무료GitHub에 공개

cm-video-factory

Private Code-to-Video Engine using Remotion React, TTS (ElevenLabs/OpenAI), and Content Mastery. Creates pure VibeCoding-style animations for TikTok/Shorts/Reels automatically.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

설치 방법 보기

포함된 파일(9)

  • SKILL.md17.9 KB
  • examples/hook-formulas.json9.6 KB
  • examples/sample-pipeline.sh7.4 KB
  • policies/policy-checklist.md3.5 KB
  • policies/tiktok-rules.md2.8 KB
  • policies/youtube-rules.md3.7 KB
  • templates/script-template.json4.4 KB
  • templates/tiktok-config.json1.4 KB
  • templates/youtube-config.json1.7 KB

SKILL.md(원문)

설치하기 전에 에이전트에게 전달되는 지시 내용을 확인할 수 있습니다.

CM Video Factory v2.0 — Mass Video Production Engine (Private)

A self-hosted, batch-capable video factory built on Remotion React (code-to-video). Scripts → TTS → Subtitles → Render → Policy Check → Publish.

Dual format: 9:16 vertical (TikTok/Shorts/Reels) + 16:9 horizontal (YouTube). Dual language: Vietnamese (VieNeu-TTS) + English (ElevenLabs/OpenAI).

Spiritual twin of cm-content-factory, focused on Short-Form + Long-Form video at scale.


Core Philosophy

  • Video is Math, Not Art. React components define every frame. JSON scripts define every word.
  • VibeCoding Aesthetic. Dark SaaS visuals, cyan #00F0FF glow, Fira Code, engineering UI motifs.
  • Content Mastery DNA. Every script uses SB7, Cialdini, Hook Formulas. No boring "Hello guys" intros.
  • Batch-First. One command renders 10+ videos overnight. Queue, progress, retry, resume.
  • Policy-Safe. Built-in guardrails prevent shadowbans, demonetization, and content strikes.

Architecture

┌─────────────────────────────────────────────────────────────┐
│                  📹 CM VIDEO FACTORY v2.0                    │
│            Batch Code-to-Video Production Engine             │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  ┌──────────┐   ┌──────────┐   ┌──────────┐   ┌────────┐  │
│  │  SCRIPT  │──▶│   TTS    │──▶│ SUBTITLE │──▶│ RENDER │  │
│  │ Generator│   │  Engine  │   │ @remotion/│   │ Engine │  │
│  │ (JSON)   │   │ VieNeu + │   │ captions  │   │ Batch  │  │
│  │ CM hooks │   │ ElevenL  │   │ SRT+JSON  │   │ Queue  │  │
│  └──────────┘   └──────────┘   └──────────┘   └────────┘  │
│       │              │              │              │        │
│  ┌────┴──────────────┴──────────────┴──────────────┴────┐  │
│  │              🎛️ FORMAT ROUTER                         │  │
│  │   ┌─────────────┐          ┌──────────────┐          │  │
│  │   │  VERTICAL   │          │  HORIZONTAL  │          │  │
│  │   │  9:16       │          │  16:9        │          │  │
│  │   │  1080×1920  │          │  1920×1080   │          │  │
│  │   │  TikTok     │          │  YouTube     │          │  │
│  │   │  Reels      │          │  Facebook    │          │  │
│  │   │  Shorts     │          │              │          │  │
│  │   └─────────────┘          └──────────────┘          │  │
│  └──────────────────────────────────────────────────────┘  │
│                                                             │
│  ┌──────────────────────────────────────────────────────┐  │
│  │              🛡️ POLICY COMPLIANCE ENGINE              │  │
│  │  Content scan | AI labeling | Upload throttle | Hash │  │
│  └──────────────────────────────────────────────────────┘  │
│                                                             │
│  ┌──────────────────────────────────────────────────────┐  │
│  │              📊 BATCH QUEUE MANAGER                   │  │
│  │  queue.json | progress.json | retry logic | cron     │  │
│  └──────────────────────────────────────────────────────┘  │
└─────────────────────────────────────────────────────────────┘

Quick Start

# 1. Setup Remotion project (one-time)
cd video-factory && npm install

# 2. Generate single video (interactive)
node scripts/pipeline.js --script scripts-input/video_01.json --format tiktok

# 3. Batch render (queue-based)
node scripts/batch-runner.js --queue queue.json --batch-size 5

# 4. Resume interrupted batch
node scripts/batch-runner.js --queue queue.json --resume

# 5. Preview in browser (hot reload)
npx remotion studio

7-Phase Execution Pipeline

Phase 1: 🔬 RESEARCH

Scrape documentation, GitHub repos, URLs. Build knowledge base per topic. Uses cm-cro-methodology to identify pain points for maximum hook impact.

Phase 2: ✍️ SCRIPT (JSON)

AI generates strictly-keyed JSON scripts. One JSON = one video.

{
  "id": "video_042",
  "title": "Debug mệt mỏi?",
  "hook": "99% Dev tốn thanh xuân để debug vì bỏ qua quy tắc này.",
  "hook_formula": "data_shock",
  "language": "vi",
  "duration_target": 45,
  "format": "tiktok",
  "scenes": [
    {
      "time_start": 0,
      "duration": 3.5,
      "text": "99% Dev tốn thanh xuân để debug vì...",
      "visual": "TerminalCrashView",
      "props": { "error": "SIGSEGV", "animation": "glitch" }
    },
    {
      "time_start": 3.5,
      "duration": 5,
      "text": "Với Cody Master, lỗi tự phơi bày trong 2 giây.",
      "visual": "CodeGlowView",
      "props": { "code": "cm-debugging --trace", "highlight": true }
    }
  ],
  "cta": "Click link ở Bio để cài đặt miễn phí.",
  "hashtags": ["#vibecoding", "#devtools", "#codymaster"],
  "metadata": {
    "ai_generated": true,
    "ai_disclosure": "Video created with AI-assisted animation and voice synthesis"
  }
}

Phase 3: 🎙️ TTS (Voice Synthesis)

TTS Engine Router — auto-detect language → best engine:

LanguagePrimary EngineFallbackVoice Cloning
VietnameseVieNeu-TTS 0.5BOpenAI TTS✅ (3-5s ref)
EnglishElevenLabs multilingual_v2OpenAI TTS✅ (paid)
# Vietnamese TTS (VieNeu-TTS SDK)
from vieneu import Vieneu
tts = Vieneu()
audio = tts.infer(text="Xin chào, đây là VibeCoding Academy")
tts.save(audio, "audio_vi.wav")
# English TTS (ElevenLabs via infsh CLI)
infsh app run elevenlabs/tts --input '{
  "text": "Welcome to the VibeCoding revolution.",
  "voice": "george",
  "model": "eleven_multilingual_v2",
  "stability": 0.5,
  "similarity_boost": 0.8
}'

Outputs:

  • audio.mp3 — Final audio track
  • audio.json — Word-level timestamps (for subtitle sync)
  • audio.srt — Standard SRT file (for YouTube upload)

Phase 4: 📝 SUBTITLE ENGINE (@remotion/captions)

Uses official Remotion captions package for frame-perfect sync:

import { parseSrt, createTikTokStyleCaptions } from "@remotion/captions";

// Parse SRT from TTS output
const captions = parseSrt({ input: srtContent });

// Create TikTok-style word-by-word highlights
const { pages } = createTikTokStyleCaptions({
  captions,
  combineTokensWithinMilliseconds: 800,
});

// Render in React component
const SubtitleOverlay: React.FC = () => {
  const frame = useCurrentFrame();
  const { fps } = useVideoConfig();
  const currentTime = (frame / fps) * 1000; // ms

  return (
    <AbsoluteFill style={{ justifyContent: "flex-end", padding: 40 }}>
      {pages.map((page) => (
        <CaptionPage key={page.startMs} page={page} currentTime={currentTime} />
      ))}
    </AbsoluteFill>
  );
};

Phase 5: 🎨 RENDER (Remotion)

Dual-format compositions:

// Root.tsx — Two compositions for two formats
export const RemotionRoot: React.FC = () => (
  <>
    <Composition
      id="TikTokVideo"
      component={TikTokComposition}
      width={1080}
      height={1920}
      fps={30}
      durationInFrames={durationFromAudio}
    />
    <Composition
      id="YouTubeVideo"
      component={YouTubeComposition}
      width={1920}
      height={1080}
      fps={30}
      durationInFrames={durationFromAudio}
    />
  </>
);

Render commands:

# TikTok vertical (9:16)
npx remotion render src/index.ts TikTokVideo out/tiktok_video_042.mp4

# YouTube horizontal (16:9)
npx remotion render src/index.ts YouTubeVideo out/youtube_video_042.mp4

# Benchmark optimal concurrency first
npx remotion benchmark --composition TikTokVideo

Remotion Performance Rules (from remotion-dev/skills):

  • ✅ All animations driven by useCurrentFrame() — never useEffect/setInterval
  • ✅ Memoize expensive computations with useMemo/useCallback
  • ✅ Avoid GPU-heavy CSS (filter: blur(), drop-shadow()) in components
  • ✅ Use npx remotion benchmark to find optimal --concurrency
  • ✅ Video duration = getAudioDurationInSeconds() + 2s bumper
  • ✅ Use --log=verbose to identify slow frames

Phase 6: 🛡️ POLICY CHECK

Pre-publish compliance scan (runs automatically before upload):

POLICY_GATES:
  platform_limits:
    tiktok:
      max_daily_uploads: 3
      cooldown_hours: 4
      required_labels: ["AI-generated"]
      hashtag_range: [3, 7]
    youtube:
      max_daily_uploads: 2
      cooldown_hours: 6
      required_disclosure: true    # Creator Studio AI toggle
      monetization_check: true     # Must show human creative value
    reels:
      max_daily_uploads: 3
      cooldown_hours: 4

  content_rules:
    min_visual_uniqueness: 70     # % difference between consecutive videos
    banned_content_scan: true     # Check for hate speech, misleading claims
    no_unauthorized_cloning: true # No cloning real people without consent
    no_mass_duplicate: true       # Each video visually distinct

What gets checked:

  1. Script text scanned for banned keywords/topics
  2. Visual uniqueness hash compared to last N renders
  3. Upload rate verified against platform daily limits
  4. AI disclosure metadata injected into file
  5. Hashtag count validated (3-7 range)

Phase 7: 🚀 PUBLISH (Optional)

Multi-platform upload via APIs:

  • YouTube Shorts/Long-form → YouTube Data API v3
  • TikTok → TikTok Creator API
  • Facebook/Instagram Reels → Graph API

Auto-applies: title, description, hashtags, AI disclosure labels, thumbnail.


Batch Queue Manager

For mass production, use the queue system:

// queue.json
{
  "batch_id": "batch_2026_03_30",
  "created_at": "2026-03-30T09:00:00Z",
  "config": {
    "formats": ["tiktok", "youtube"],
    "language": "vi",
    "tts_engine": "vieneu",
    "concurrency": 1,
    "retry_max": 3
  },
  "jobs": [
    {
      "id": "job_001",
      "script": "scripts-input/video_01.json",
      "status": "queued",
      "attempts": 0,
      "outputs": []
    },
    {
      "id": "job_002",
      "script": "scripts-input/video_02.json",
      "status": "queued",
      "attempts": 0,
      "outputs": []
    }
  ]
}
// progress.json (auto-generated)
{
  "batch_id": "batch_2026_03_30",
  "total": 10,
  "completed": 3,
  "failed": 0,
  "in_progress": 1,
  "queued": 6,
  "estimated_remaining_minutes": 42,
  "last_updated": "2026-03-30T09:25:00Z"
}

CLI:

# Start batch (processes sequentially)
node scripts/batch-runner.js --queue queue.json

# Resume after interruption
node scripts/batch-runner.js --queue queue.json --resume

# Status check
node scripts/batch-runner.js --queue queue.json --status

# Schedule via cron (every day at 2 AM)
echo "0 2 * * * cd /path/to/video-factory && node scripts/batch-runner.js --queue queue.json --resume" | crontab -

Component Library (VibeCoding Aesthetic)

ComponentVisual EffectFormatUse Case
DarkTerminalMacOS-style window, typing animation, syntax colorsBothbash commands, workflows
VsCodeGlowSleek IDE editor with neon-blue shadowBothCode demonstrations
BouncingSubtitleTikTok-style bold text, word-by-word bounce9:16ALL spoken words (mandatory)
StatCounterRapidly spinning numbers in glassmorphic cardBothHook metrics ("10x", "200 articles")
SplitScreenTop: Concept / Bottom: Code16:9Before/after, comparisons
CodeDiffSide-by-side diff with green/red highlights16:9Showing improvements
FloatingCardGlassmorphic card with parallax hoverBothFeature callouts
ProgressRingAnimated circular progress indicatorBothStats, completion metrics

Strict Styling Rules:

  • ❌ NEVER use light mode components
  • Primary brand: Cyan #00F0FF
  • Secondary: Hot Pink #FF007F
  • Accent: Electric Purple #8B5CF6
  • Background: Void Black #0A0A0A → Deep Navy #050B14
  • Font: Fira Code (code), Inter (UI text), Be Vietnam Pro (Vietnamese text)
  • All animations: interpolate() + spring() — NEVER CSS transitions

Hook & Persuasion Framework

Before writing Video JSON, select one:

Short-Form (0-60s) — TikTok/Shorts/Reels

PhaseTimeGoal
HOOK0:00 - 0:03Extreme curiosity gap. Fast cut. Zero intro.
AGITATE0:03 - 0:15Visualize common pain (red errors, spaghetti code)
SOLUTION0:15 - 0:45Enter CodyMaster. Drop code. Make it glow.
CTA0:45 - 0:60Grand Slam Offer. "Lấy miễn phí tại bio".

Long-Form (3-15min) — YouTube

PhaseTimeGoal
HOOK0:00 - 0:30Pattern interrupt + "Stay to the end for..."
CONTEXT0:30 - 2:00Problem landscape. Why this matters NOW.
DEEP DIVE2:00 - 10:00Step-by-step demonstration with code
PROOF10:00 - 12:00Results, metrics, before/after
CTALast 30sSubscribe + comment + link in description

12 Hook Formulas

  1. Data Shock — "99% Dev fail vì bỏ qua điều này"
  2. Contrarian — "Đừng học React. Đây là lý do."
  3. Future Pacing — "Trong 60 giây, bạn sẽ viết code nhanh gấp 10x"
  4. Story Open — "Tháng trước, tôi mất 3 ngày debug..."
  5. Authority — "Sau 10 năm code, đây là bí mật duy nhất"
  6. Curiosity Gap — "Có 1 công cụ mà Google engineers dùng mà bạn chưa biết"
  7. Fear — "AI sẽ thay thế developer? Chỉ nếu bạn không biết điều này"
  8. Social Proof — "200+ engineers đã chuyển sang workflow này"
  9. Challenge — "Thử debug trong 2 giây challenge"
  10. Comparison — "Junior vs Senior: cùng 1 bug, khác nhau 10x tốc độ"
  11. Reveal — "Công cụ bí mật đằng sau 50 dự án production"
  12. Empathy — "Mình biết cảm giác code 12 tiếng mà không ra gì"

Platform Policy Summary

TikTok — What Gets You Shadowbanned

  • ❌ Mass-posting identical/near-identical content
  • ❌ Using 20+ generic hashtags (#fyp, #foryou spam)
  • ❌ Unlabeled AI-generated realistic content
  • ❌ Third-party tools for fake engagement
  • ❌ Posting frequency > 5/day without variation
  • ✅ Post 1-3 original videos/day with authentic engagement
  • ✅ Use 3-5 niche-specific hashtags
  • ✅ Label AI content using TikTok's built-in tools

YouTube — What Prevents Monetization

  • ❌ Mass-produced templated AI content ("AI slop")
  • ❌ Undisclosed realistic AI-generated content
  • ❌ Unauthorized voice/face cloning
  • ❌ Misleading titles/thumbnails
  • ✅ Show human creative direction in every video
  • ✅ Use AI disclosure toggle in Creator Studio
  • ✅ Add unique commentary, editing, educational value
  • ✅ Each video must demonstrate significant human involvement

Guidelines for Downstream Agents

  1. Never hardcode strings in React components. All text from JSON/SRT for perfect TTS sync.
  2. Animations = math. Use interpolate() and spring(). 30FPS = frame / 30 seconds.
  3. Audio drives duration. Video length = getAudioDurationInSeconds() + 2s end-bumper.
  4. Memoize everything. useMemo/useCallback on all expensive computations.
  5. No GPU CSS. Avoid filter: blur(), drop-shadow() in rendered components.
  6. Benchmark concurrency. Run npx remotion benchmark before batch renders.
  7. Policy-first. Run policy check before ANY upload. No exceptions.
  8. License check. VieNeu-TTS-0.5B = Apache 2.0 (commercial OK). VieNeu-TTS-0.3B = CC BY-NC 4.0 (non-commercial only).

Future Roadmap

  • v2.1: VieNeu-TTS voice cloning integration (clone user's voice from 5s sample)
  • v2.2: Remotion Lambda for parallel cloud rendering (10x speed)
  • v2.3: AI Avatar mode via bytedance/omnihuman-1-5 lipsync
  • v2.4: Auto A/B testing — render 2 hook variants, publish both, track engagement
  • v3.0: Full inference.sh integration — text-to-video AI scenes (Veo 3, Seedance)

Usage Triggers

Use when the user states:

  • "Start the video factory", "Create a TikTok/Shorts for this code"
  • "Run the Remotion pipeline", "Make a VibeCoding video"
  • "Generate a hook script for X", "Batch render videos"
  • "Render YouTube video", "Create 9:16 vertical video"
  • "tạo video hàng loạt", "render video tiktok"
  • "video factory batch", "create video from script"

리뷰

아직 리뷰가 없습니다. 사용해 본 소감을 남겨 주세요.

댓글

로그인 없이 쓸 수 있습니다. 사용 후기, 질문, 작동하지 않은 환경 등을 편하게 남겨 주세요.

아직 댓글이 없습니다. 첫 댓글을 남겨 보세요.

보내면 바로 공개됩니다. 이메일 주소나 전화번호 같은 개인 정보는 쓰지 마세요. URL은 2개까지입니다.

0 / 1,000자

이 양식은 reCAPTCHA로 보호되며 Google 개인정보처리방침 및 서비스 약관이 적용됩니다.

같은 저장소의 스킬

End-to-end ad conversion tracking: Meta Pixel+CAPI, TikTok Events API, Google Ads Enhanced Conversions, GTM, attribution. Auto-detects industry, maps standard events, outputs a developer-ready implementation doc. Use for pixels, GTM, CAPI, ROAS, or 'set up tracking' requests.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

tody-agent/codymaster542026년 8월 26일 업데이트

Comprehensive publishing automation skill bridging AI agents (OpenClaw, Manus, Claude) to the Content Factory Router. Uses the Router API to publish markdown articles with rich media to any connected Astro site natively.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

tody-agent/codymaster542026년 8월 26일 업데이트

Easy-to-use conversational CLI (Codex style) for non-technical users to spawn parallel AI tasks supervised by a visual web dashboard.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

tody-agent/codymaster542026년 8월 26일 업데이트

Easy-to-use conversational CLI (Claude Code style) for non-technical users to spawn parallel AI tasks supervised by a visual web dashboard.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

tody-agent/codymaster542026년 8월 26일 업데이트

Booking & Calendar CRO Engine — Packages all booking, scheduling, .ics download, and Google Calendar integration into a revenue-boosting system. Auto-detect industry → select matching pattern → generate calendar engine + booking UI + export logic. Integrates with cm-google-form (form → sheet) and cm-ads-tracker (conversion events). ALWAYS trigger for: booking, appointment, calendar, reminder, download ics, google calendar, add to calendar, book appointment, schedule, "create booking", "add scheduling", "appointment reminder system", "calendar CRO", "reduce no-show"

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

tody-agent/codymaster542026년 8월 26일 업데이트

Strategic analysis gate for existing products — multi-dimensional evaluation (tech, product, design, business) using Design Thinking + 9 Windows (TRIZ) + Double Diamond. Outputs 2-3 qualified options with recommendations. Use BEFORE cm-planning for complex initiatives and enhancements on existing codebases.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

tody-agent/codymaster542026년 8월 26일 업데이트

tody-agent의 스킬 모두 보기

이 스킬의 문제 신고