Community寫作與編輯github.com

Pavan-makwana/My-Agentic-Skills

高效能 1080x1920(9:16 直式)Instagram Reels 渲染引擎,結合無頭 Chrome (Puppeteer) 與 FFmpeg concat demuxer,呈現有機墨水書寫動畫、湍流位移抖動與清晰字體。

My-Agentic-Skills 是什麼?

此技能提供一個專為 Instagram Reels 設計的像素級 1080x1920 直式影片渲染引擎。它透過 Puppeteer 在無頭 Chrome 中捕捉每一幀畫面,再利用 FFmpeg 的 concat demuxer 將這些幀精確組合成最終的 H.264 MP4 影片,並加入 320kbps AAC 音訊。核心優勢在於完全消除螢幕錄製常見的掉幀問題,可達微秒級精準度,並支援 SVG 湍流位移濾鏡,為靜態文字賦予手繪風格的抖動生命力。編碼速度相較於即時螢幕錄製快 3 至 6 倍。此技能適用於任何能執行 Node.js 與 FFmpeg 的環境,透過腳本自動化整個渲染流程。

相容平台~Claude Code~Codex CLI~Cursor✓Antigravity
npx skills add https://github.com/Pavan-makwana/My-Agentic-Skills/tree/HEAD/skills/paint-frame-reel-renderer

Installed? Explore more 寫作與編輯 skills: steipete/notion, langchain-ai/langchain, bytedance/podcast-generation · View all 6 →

在你喜歡的 AI 中提問

開啟一個已預先載入此 Agent Skill 的新對話。

說明文件

Paint Frame Reel Renderer

在無頭 Chrome 中渲染像素完美的 1080x1920 直式影片幀,建立微計時的 FFmpeg concat demuxer 腳本,並以 320kbps AAC 音訊編碼最終的 H.264 MP4。

flowchart TD
    A[Web Canvas UI 1080x1920] --> B[Puppeteer Headless Capture]
    B --> C[Visual Phase Screenshots]
    C --> D[Concat Demuxer Script]
    D --> E[FFmpeg Encoding libx264 + AAC + faststart]
    E --> F[Finished Reel MP4]

為何選用 Puppeteer + Concat Demuxer?

  • 零掉幀:消除螢幕錄製的掉幀與卡頓問題。
  • 微秒級精準度:每個字詞或幀狀態都被賦予精確的浮點數持續時間(秒)。
  • 湍流墨水抖動:使用 SVG feTurbulence 和 feDisplacementMap 搭配旋轉種子,為靜態文字賦予手繪麥克筆的生動感。
  • 速度:編碼速度為即時螢幕錄製的 3 倍到 6 倍。

核心渲染腳本結構

const puppeteer = require('puppeteer-core');
const { spawnSync } = require('child_process');

// 1. 以 1080x1920 啟動 Puppeteer
const browser = await puppeteer.launch({
  executablePath: CHROME_PATH,
  args: ['--no-sandbox', '--disable-gpu']
});
const page = await browser.newPage();
await page.setViewport({ width: 1080, height: 1920, deviceScaleFactor: 1 });
await page.goto('file:///' + HTML_PATH);

// 2. 捕捉單字 / 行狀態
const concatLines = [];
for (const line of linesData) {
  // 截圖...
  concatLines.push(`file '${framePath}'`);
  concatLines.push(`duration ${duration.toFixed(3)}`);
}

// 3. Concat Demuxer 需求(重複最後一幀)
concatLines.push(concatLines[concatLines.length - 2]);
fs.writeFileSync('concat.txt', concatLines.join('\n'));

// 4. 使用 FFmpeg 編碼
spawnSync(FFMPEG_PATH, [
  '-f', 'concat', '-safe', '0', '-i', 'concat.txt',
  '-ss', String(audioStartOffset),
  '-i', songAudioPath,
  '-c:v', 'libx264', '-pix_fmt', 'yuv420p', '-r', '30',
  '-c:a', 'aac', '-b:a', '320k',
  '-shortest', '-movflags', '+faststart',
  '-y', outputMp4Path
]);

關鍵最佳化規則

  1. 快速揭示:快速演唱時,揭示動畫不得超過 0.24 秒。
  2. 裝置縮放因子:設定 deviceScaleFactor: 1 以確保精確的 1080x1920 解析度,避免記憶體膨脹。
  3. +faststart:務必包含 -movflags +faststart,讓 Reels 在 Instagram 和 Telegram 上能即時緩衝。

Individual skills in this repo

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

相關技能