高級影片技能 — v3.3(錨點網格 + 音效) 是做什麼的?
==================================================
一個高級智能體編排技能,可將語音腳本轉換為高品質的 HyperFrames 短影片,具備以下特色:
- 錨點網格(kicker → hero → body → chip → presenter,底部固定)
- 動態文字(逐字跳躍動畫)
- SVG 動畫(含移動元素的技術圖表)
- 玻璃擬態證據卡片 + 下三分之一 + 結束畫面
- 動態模糊擦除轉場
- 完整音效系統(SFX 合成、提示表、音訊混音)
- 設計合約驗證(prepare.py 閘門)
- 可重複流水線(scenes.sh → prepare.py → build_index.py)
流水線(順序不可變更)
語音腳本
│
▼
generate.py → new_scene.py → prepare.py → build_index.py
(解析) (場景檔案) (驗證) (根 HTML + 擦除)
│ │
▼ ▼
npx hyperframes lint → npx hyperframes render
(0 錯誤閘門) (MP4 輸出)
│
▼
python3 scripts/gen_sfx.py # 合成 SFX(一次性)
python3 scripts/mix_audio.py # VO + 提示音 + 背景 → master.wav
ffmpeg 混流 → final.mp4
逐步操作
# 1. 從語音腳本產生場景組合 + 根 HTML
python3 generate.py --script my_script.txt --topic Tor --output index.html
# 2. 驗證閘門(對比度、字型、安全區域、欄位節奏)
python3 scripts/prepare.py
# 3. Lint(必須為 0 錯誤)
npx hyperframes lint
# 4. 預覽與渲染
npx hyperframes preview
npx hyperframes render
# 5. 音訊處理
python3 scripts/gen_sfx.py # 從頭合成 14 種 SFX
python3 scripts/mix_audio.py # VO + 提示音 + 背景 → master.wav
ffmpeg -i rendered.mp4 -i renders/master.wav \
-c:v copy -c:a aac -shortest final.mp4
錨點網格(底部固定,不變)
每個場景使用相同的下半部——只有上半部會重新組合:
| 錨點 | 元素 | 位置 | 動畫 |
|---|---|---|---|
| 1 | Kicker | 左上 | 從 y:-26 滑入,淡入 0.32 秒 |
| 2 | Hero | 頂部區域(1–3 個字) | 縮放 1.3→1,偏移 44px→0,緩慢向上漂移 |
| 3 | Body | 卡片 / 里程表 / 文字行 | 上滑 56px→0,縮放 .95→1 |
| 4 | Chip | 底部區域(3–6 個字) | 上滑 30px→0,淡入 0.26 秒 |
| 5 | Presenter | 右下,畫面裁切 | 縮放 .92→1,y:46→0,淡入 0.34 秒 |
第 0 幀為海報畫面 — 場景 1(data-cover="1")開啟時即完整呈現。
六色場域循環
相鄰場景不得使用相同的背景場域:
accent → ground → ink → secondary → tertiary → quaternary
prepare.py 會在連續兩個場景使用相同場域時中斷建置。
所有文字 / 背景組合均符合 WCAG ≥ 4.5:1 對比度。
音效系統
SFX 合成(無需下載、無需授權)
python3 scripts/gen_sfx.py 建立 14 種音效:
| SFX | 用途 |
|---|---|
pop.wav | 每個場景切換 |
click.wav / key.wav | UI 元素、清單勾選 |
chime.wav | 揭示 / 分數 |
ping.wav | 通知 |
notify.wav | 行動呼籲 |
riser.wav | 切換前的大轉折 |
impact.wav | 強烈的視覺衝擊 |
whoosh.wav | 快速移動 |
error.wav | 錯誤 / 拒絕 |
提示表 — assets/sfx/cues.json
基於段落相對時間偏移(可承受 VO 重新錄製):
{ "at": "scenes", "file": "pop.wav", "gain": 0.5 }
{ "at": "vo2-0.30", "file": "riser.wav", "gain": 0.3 }
{ "at": "vo9+0.55", "file": "notify.wav", "gain": 0.4 }
音訊混音 — scripts/mix_audio.py
- VO + SFX 提示音 + 背景音樂 →
renders/master.wav - 使用
ebur128測量響度,校正至 −14 LUFS - 真實峰值 ≤ −1 dBTP
alimiter搭配level=false(避免自動音量陷阱)- 背景音量設為 0.15 → −29 LUFS(比 −16 LUFS 的 VO 低約 13 LU)
- 無側鏈壓縮——音量差距即為閃避效果
技術主題(自動動畫 + 證據)
當腳本中包含特定關鍵字時,編排器會自動插入:
| 元件 | 處理方式 |
|---|---|
| SVG 圖表 | 含移動元素與 animateMotion 的節點連接流程圖 |
| 證據疊層 | 帶來源徽章的玻璃擬態卡片 |
| 轉場 | 動畫前的動態模糊擦除 |
| 音訊提示 | 動畫開始時播放 "whoosh" SFX |
可識別的關鍵字: tor, onion, vpn, proxy, isp, relay, network, packet, encryption, cybersecurity, dns, cdn, blockchain, ai, machine learning 以及其他。
輸入腳本格式
純文字(自動計時 ~145 wpm)
Same resume everywhere? That's why you're rejected.
Tailor it per company.
Read the **job description**.
One resume does not fit every company. Customize and get shortlisted.
含時間戳記的段落
[0-4s] Same resume everywhere? That's why you're rejected.
[4-10s] Tailor it per company.
[10-14s] Read the **job description**.
強調: **word** → 右對齊、品牌顏色、字重 950、彈跳動畫
檔案
| 檔案 | 用途 |
|---|---|
generate.py | CLI 進入點 |
orchestrator.py | 流水線:解析 → 偵測 → 分解 → 產生場景 → 建立根 HTML |
design_system.py | 設計標記、對齊規則、驗證 |
PARAMS.json | 唯一需要編輯的設計檔案 |
scripts/prepare.py | 驗證閘門 + 標記注入 |
scripts/new_scene.py | 錨點網格場景組合產生器 |
scripts/build_index.py | 具有連續時序 + 自適應擦除的根 HTML |
scripts/gen_sfx.py | 從頭合成 SFX |
scripts/mix_audio.py | VO + 提示音 + 背景 → master.wav |
assets/sfx/cues.json | 基於段落相對時間的提示表 |
scenes.sh | 可重複的場景清單範本 |
compositions/_scene-base.html.tmpl | 錨點網格骨架 |
compositions/wipe.html | 動態模糊轉場 |
skill.md · skill.json | 文件 + 結構 |
需求
- Python 3(標準函式庫)
- HyperFrames CLI:
npx hyperframes init / preview / render / lint - Node.js ≥ 22、FFmpeg
- ffprobe(用於音訊測量)
授權
MIT — 自由修改、分享、以及用它來銷售影片。