Communitygithub.com

oyi77/1ai-skills

從 URL、簡報或腳本創建產品發佈影片,使用 HyperFrames(HTML→MP4)。適用於用戶想要產品發佈影片、網站導覽、社群短片,或行銷推廣產品的情況。影片時長約 3 分鐘(最佳 30-90 秒)。教學 HyperFrames 生產流程:規劃 → 撰寫 HTML → 設計可搜尋動畫 → 加入媒體 → 檢查 → 預覽 → 渲染。

1ai-skills 是什麼?

此技能(oyi77/1ai-skills)是一個專門用於生成產品發佈影片的 AI 代理技能,其核心是 HyperFrames——一種透過 HTML 合成並渲染成精確 MP4 影片的技術。它特別適合需要快速產出品牌宣傳素材的開發者、行銷人員或產品經理。該技能支援 Claude Code、Cursor、Codex 等代理平台,並定義了一套完整的生產循環:從規劃 3-6 個場景的故事板、撰寫含 GSAP 或 CSS 動畫的 HTML、添加圖片與音訊媒體,再到透過 CLI 指令進行語法檢查、HMR 預覽和最終渲染。其最大優勢在於利用了 LLM 最擅長的 HTML 語言,代替傳統 GUI 影片編輯器,使 AI 代理能以程式化、可重現的方式創建影片,確保每次渲染結果一致。技能文件同時提供了詳細的反合理化表格,明確指出常見的誤區(如使用跨場景淡入淡出或跳過檢查步驟),確保用戶遵循最佳實踐,避免渲染失敗。

相容平台~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/oyi77/1ai-skills/tree/HEAD/content/hyperframes-product-launch-video

在你喜歡的 AI 中提問

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

說明文件

概述

此技能組合產品發佈影片——主鏡頭、功能說明、時間軸——作為 HyperFrames 的組成。當新版本需要一個簡潔、可品牌化的公告片段時使用。它會根據您提供的產品素材渲染出最終的 MP4。

HyperFrames — 產品發佈影片

透過撰寫 HTML 組合來創建產品發佈影片,HyperFrames 會將其渲染成精確的 MP4。代理原生的影片管線:LLM 撰寫 HTML(它們的母語),HyperFrames 透過無頭 Chrome + FFmpeg 渲染出幀級精確的影片。

使用時機

  • 用戶想要從 URL、簡報或腳本產生產品發佈影片
  • 用戶想要以產品自身畫面進行網站導覽/展示
  • 用戶想要一個帶有動態字幕和品牌的社群短片(TikTok/Reels/Shorts)
  • 用戶想要一個帶有動態覆蓋層和音樂的行銷/宣傳影片
  • 用戶說「幫我做一支影片」並提供產品 URL 或描述

不使用時機

  • 用戶想要真人/用戶生成內容/攝影棚內容(需要攝影機,而非 HTML)
  • 用戶想要直播/直播帶貨(需要 RTMP 推流)
  • 用戶想要人物訪談(請使用 hyperframes-embedded-captions 或 hyperframes-talking-head-recut)
  • 用戶想要一個無產品/URL 的純解說影片(請使用 hyperframes-faceless-explainer)
  • 用戶想要簡報/投影片(請使用 hyperframes-slideshow)

工作流程

0 · 初始化專案

npx hyperframes init my-launch-video
cd my-launch-video

這會建立專案框架,包含 index.html、package.json 和已配置好的 HyperFrames CLI。

1 · 規劃影片

  • 輸入: 產品 URL、簡報或腳本
  • 輸出: 3-6 個場景的故事板,附帶時間設定(總時長最佳 30-90 秒)
  • 預算: 標題 ≤2 秒,片尾 ≤3 秒,中間場景約 8-12 秒
  • 選擇設計語言: 瀏覽 hyperframes.heygen.com/design 查看 frame.md 範本

2 · 撰寫組合 HTML

組合規範:

<!doctype html>
<html lang="en">
  <body>
    <div
      id="main"
      data-composition-id="intro"
      data-start="0"
      data-duration="15"
      data-width="1080"
      data-height="1920"
      data-fps="30"
    >
      <div
        class="clip"
        data-start="0"
        data-duration="5"
        data-track-index="0"
      >
        <!-- 場景內容 -->
      </div>
    </div>
  </body>
</html>

關鍵屬性:

  • data-composition-id:組合的唯一 ID
  • data-start / data-duration:以秒為單位的時間設定
  • data-width / data-height:視口尺寸(9:16 為 1080×1920)
  • data-fps:幀率(標準 30)
  • class="clip":標記時間軸元素
  • data-track-index:圖層順序(數值越大越上層)

3 · 設計可搜尋動畫

使用 GSAP(建議)、CSS 關鍵幀或 WAAPI。所有動畫必須是可搜尋的(確定性——相同時間點總是相同幀,每次渲染都一致)。

GSAP 模式(建議):

const tl = gsap.timeline({ paused: true });
tl.to("#title", { opacity: 1, y: 0, duration: 0.8, ease: "power4.out" }, 0.5);
tl.to("#image", { scale: 1, opacity: 1, duration: 1.2, ease: "power3.out" }, 1.0);
window.__timelines = { main: tl };

CSS 關鍵幀模式:

@keyframes fadeInUp {
  from { transform: translateY(40px); opacity: 0; }
  to { transform: translateY(0); opacity: 1; }
}
.animate-in {
  animation: fadeInUp 0.8s cubic-bezier(0.16, 1, 0.3, 1) forwards;
}

4 · 加入媒體

  • 圖片: 下載到 public/ 目錄,透過 staticFile() 或相對路徑引用
  • 影片背景: 放在 assets/ 中,透過 data-loop 循環播放
  • 音訊/BGM: 透過 <audio data-start="0" data-duration="15" src="./bgm.mp3"> 加入
  • 旁白: 透過 TTS 生成,將字幕對齊到字詞時間戳

5 · 檢查和語法審查

npx hyperframes check        # 驗證組合規範
npx hyperframes lint         # 檢查常見錯誤

在繼續之前修正所有錯誤。警告可以接受,但應進行審查。

6 · 預覽

npx hyperframes preview      # 開啟 Hyperframes Studio 並支援 HMR

透過在原始組合頁面上執行 __player.seek(time) 抽查 3-4 個時間點。驗證:

  • 動畫在正確時間觸發
  • 剪接處無白閃(背景需設為不透明)
  • 字幕可見且可讀
  • 音量水平平衡

7 · 渲染

npx hyperframes render --output launch-video.mp4

驗證輸出:

ffmpeg -ss 3 -i launch-video.mp4 -frames:v 1 frame-3s.png  # 檢查字幕
ffmpeg -ss 15 -i launch-video.mp4 -frames:v 1 frame-15s.png # 檢查場景

反合理化表格

合理化現實
「我直接用影片編輯器就好了」GUI 編輯器不是代理原生工具;HTML 是 LLM 最擅長的語言
「跳過檢查步驟沒關係」檢查能找出破壞渲染的組合規範錯誤
「我用 Remotion 就好」Remotion 需要 React 思維;對代理來說 HTML 更簡單
「加入空轉動畫來填滿時間」禁止空轉晃動——每個階段都必須有效用(參見 hyperframes-cut-the-curve)
「內容置中 42% 以預留字幕空間」字幕是覆蓋層——內容應以真正的中心置中(y = H/2)
「在場景間加入淡入淡出」淡入淡出沒有載體——請使用 cut-the-curve 作為預設邊界
「不分割場景,直接寫一個大的 HTML 檔」場景是組合的基本單位——每個場景都有自己的 clip 包裝
「跳過預覽直接渲染」預覽能捕捉浪費渲染時間的計時錯誤

程式碼範例

<!doctype html>
<html lang="en">
  <head>
    <meta charset="utf-8" />
    <style>
      * { margin: 0; padding: 0; box-sizing: border-box; }
      html, body { width: 100%; height: 100%; overflow: hidden; background: #0a0a0a; }
      #main {
        position: relative;
        width: 1080px;
        height: 1920px;
        overflow: hidden;
      }
      .scene {
        position: absolute;
        inset: 0;
        opacity: 0;
        transition: opacity 0.5s ease;
      }
      .scene.active { opacity: 1; }
      .hook-bg {
        background: linear-gradient(135deg, #ff6b35 0%, #f7931e 100%);
        display: flex;
        align-items: center;
        justify-content: center;
        flex-direction: column;
        padding: 80px;
        text-align: center;
        color: white;
        font-family: system-ui, sans-serif;
      }
      .hook-text {
        font-size: 72px;
        font-weight: 800;
        line-height: 1.1;
        transform: translateY(40px);
        opacity: 0;
      }
      .animate-in {
        animation: fadeInUp 0.8s cubic-bezier(0.16, 1, 0.3, 1) forwards;
      }
      @keyframes fadeInUp {
        from { transform: translateY(40px); opacity: 0; }
        to { transform: translateY(0); opacity: 1; }
      }
    </style>
  </head>
  <body>
    <div
      id="main"
      data-composition-id="product-ad"
      data-start="0"
      data-duration="15"
      data-width="1080"
      data-height="1920"
      data-fps="30"
    >
      <div class="scene hook-bg" data-start="0" data-duration="5" data-track-index="0">
        <h1 class="hook-text animate-in" data-start="0.5" data-duration="4">
          Product Name
        </h1>
      </div>
    </div>
    <script>
      // 透過 IntersectionObserver 或手動計時啟動場景
      const scenes = document.querySelectorAll('.scene');
      scenes.forEach(scene => {
        const start = parseFloat(scene.dataset.start);
        const duration = parseFloat(scene.dataset.duration);
        setTimeout(() => scene.classList.add('active'), start * 1000);
        setTimeout(() => scene.classList.remove('active'), (start + duration) * 1000);
      });
    </script>
  </body>
</html>

驗證清單

  • 組合通過 npx hyperframes check,0 個錯誤
  • 所有場景都設有 data-start、data-duration、data-track-index
  • 動畫是可搜尋的(確定性,不依賴系統時鐘)
  • 預覽在 3 個以上抽查的時間點顯示正確的時間設定
  • 渲染的 MP4 沒有白閃、凍結畫面或缺少字幕
  • 音量水平平衡(如有需要已套用旁白裁切)
  • 輸出解析度符合目標(9:16 為 1080×1920,16:9 為 1920×1080)

Individual skills in this repo

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

oyi77/1ai-skills

Turn a weekly changelog .md into a finished branded changelog video using HyperFrames. Use when the user provides a changelog/digest markdown and wants the weekly video, or says 'changelog video'. Self-contained — fonts, background, lexicon, and scripts ship in the skill. Produces square 1080, ~45-60s videos with animated brand mock-UIs.

oyi77/1ai-skills

The transition technique catalog for HyperFrames videos — five velocity-matched SEAMS (zoom-through, inverse zoom-through, cut-the-curve, waterfall cut, rack-focus blur-cut) plus in-scene techniques (waterfall entry, nudge curve). Covers partial-travel velocity matching, Z scale-sign rule, size-scaled blur, the 10/65/25 slide ratio, and the 2-3 transition budget. Read before authoring any transition, text-beat handoff, or kinetic text entry.

oyi77/1ai-skills

Add captions/subtitles to talking-head or launch videos using HyperFrames. Use when the user wants embedded captions, verbatim caption rails, or cinematic text behind the subject. Covers the drop/rail/embed caption model, the overlay law (captions are NOT a reserved band), matte occlusion for embedded climaxes, and word-timestamp alignment from TTS output.

oyi77/1ai-skills

Turn arbitrary text — an article, notes, a topic, a brief — into a faceless explainer video using HyperFrames. Use when the user wants a topic explainer, concept breakdown, how-to, or listicle with no product/website to capture. Every visual is invented per scene (typography, abstract graphics, diagrams, data-viz). Not a video built from a website (use hyperframes-product-launch-video).

oyi77/1ai-skills

The fallback HyperFrames workflow for anything that doesn't fit other skills — longer multi-scene pieces, brand/sizzle reels, title cards, static loops, freeform compositions. Input- and length-agnostic. Also the home of companion mode (co-create with the full toolbox). Use when no other HyperFrames skill matches, or when the user wants a freeform video.

oyi77/1ai-skills

Create short, unnarrated, design-led motion graphics (~under 10s) using HyperFrames. Use when the user wants kinetic type, stat/chart hits, logo stings, lower-thirds, animated tweets/headlines, or transparent overlay motion graphics. MP4 or transparent overlay output. Teaches seek-safe keyframe authoring and the 2-3 transition budget rule.

oyi77/1ai-skills

Turn a music track into a beat-synced HyperFrames video — lyric, slideshow, or kinetic promo. Use when the user provides an audio file, a video to pull audio from, or a mood brief for generated music. Music drives pacing. Teaches beat-map extraction, section-based scene planning, and audio-reactive visuals.

oyi77/1ai-skills

The Video Production Manager — manages ALL video production under 1ai-content. Delegates to HyperFrames, Remotion, AI video, and FFmpeg based on the task. Has memory via 1ai-hub brain, follows 1ai-rules, and reports to Content Director. Use when the user says 'make a video', 'create video', 'edit video', 'video strategy', or needs any video production work.

oyi77/1ai-skills

Agent skill at content/video/gen/SKILL.md

oyi77/1ai-skills

Use when track portfolio company KPIs, variances, returns analysis. Use when user says "monitor portfolio", "track KPIs", "portfolio returns".

oyi77/1ai-skills

Use when go-to-market planning — launch sequencing, channel strategy, audience building, PR outreach. Use when planning product launches, building launch checklists, or coordinating multi-channel campaigns.

oyi77/1ai-skills

Use when portfolio manager — capital allocation, risk management, and performance metrics tracking for trading strategies.

相關技能