- name
- taste
- description
- 面向 music video 和短剪辑的创意方向(taste)层,属于 angelcore / cloud-trance / hyperpop 视觉家族。提炼一套命名 genre 美学词汇、mood + color + light 体系,以及 beat-synced 剪辑语法,并把 ECC 的视频技能(video-editing、fal-ai-media、remotion-video-creation、motion-*、content-engine)串成一条生产流水线。用于工作不止是让视频能跑、而是让它看起来有意图的场景——制作 music video、fancam/edit、moodboard-driven reel,或为 AI 生成的 b-roll 选择连贯视觉方向。
- origin
- ECC
# Taste
大多数 AI 视频建议止步于*如何渲染帧*。此技能是它之上的一层:**帧应该长什么样、按什么顺序、切成什么节奏,才能让结果读起来像一个有意图的整体,而不是一堆生成的素材堆。**
它编码了一种特定 taste——**angelcore / cloud-trance / hyperpop** 家族(Bladee “Silver Surfer” 时期的空灵 trance 与重度 angelcore 的结合),从一组保存的 Reels 和一次 ~70 条 visual-genre library 的浏览中提炼而来。它有意带有立场。Taste 是一种观点,不是菜单。
> 配套文件 `references/genre-taxonomy.md` 持有完整命名 genre 目录。
> 此文件是可执行层:mood、grammar、pipeline 和一个 beat-mapped shot plan。
## 何时激活
- 制作 **music video**、lyric video、fancam 或 visualizer。
- 制作短 **edit / reel**,其中*感觉*比信息更重要。
- 驱动 **AI b-roll 生成**(fal.ai、Veo、Kling 等),且 prompts 需要一个连贯方向,而不是一次性 vibe。
- 在任何渲染前组装 **moodboard** 或选择 visual genre。
- 用户说 “taste”、“make it feel like X”、“give it a direction”、“angelcore”、“cloud trance”、“hyperpop edit”、“Bladee”、“dreamcore”,或命名一个保存的参考。
- 当前 edit 能用,但读起来平淡、generic、AI-slop 或风格不连贯。
此技能**位于** `video-editing`(机制)和 `remotion-video-creation`(渲染器)**之上**。用它们解决*怎么做*,用此技能解决*做什么和为什么*。
## 核心论点
1. **Taste 是最后一层,但必须先决定。** `video-editing` 正确地说 taste 是最后一道人工 pass。陷阱是:如果只在结尾决定 taste,上游每一次生成和剪辑都是猜。在第一个 prompt *之前*选定方向,然后让它约束一切。
2. **连贯胜过新奇。** 一种风格执行到 30 个镜头,胜过 30 种风格。一个命名 genre(见下)是用免费连贯性换来的约束。
3. **切到歌,不是切到素材。** 在 music video 中,时间轴就是波形。每个硬切都落在 beat 或 transient 上。帧数计算见 pipeline section。
4. **选择性生成,无情剪辑。** AI 制造不存在的 b-roll,但它不制造 taste。你仍要扔掉 80%。
## 美学词汇(提炼)
参考语料浏览了一个大型*命名* visual genres 库。完整列表在 `references/genre-taxonomy.md`。有用的动作不是背 70 个名字,而是看清**一个 genre 名就是一个完整的 prompt-and-grade preset。** 选一个,就同时继承它的 palette、texture、lighting 和 subject matter。
genre 聚成 families。选一个 **primary** family,最多再加**一个 accent**:
| Family | 内含 genres | 读起来像 |
|--------|-------------|----------|
| **Ethereal / divine** | spiritualism, glacial folk, beacons, zen core, fairy tale | 失重、神圣、发光、柔软 |
| **Hyperpop / Y2K-cyber** | cyberdelia, acid house, acid nora, neo aggressano, new liquid | 亮面、铬、霓虹、kawaii-cyber |
| **Dark / occult** | dark academia, smoke nostalgia, communist core, abstract tech | 高对比、不祥、颗粒 |
| **Retro / print** | retro surfers, art deco, adventure pulp, classic advertising, magazine collage, bumper stickers | 扁平、图形、halftone、怀旧 |
| **Organic / textural** | microbiology core, weaving patterns, fruitage retro, cozy blanket, pacific punk wave | 触觉、macro、编织、湿润 |
| **Systemic / data** | numbers, mazes, code web, heatmap, pixel, 8-bit | 网格、生成式、schematic |
**对当前项目**,primary 是 **Ethereal / divine**,accent 是 **Hyperpop / Y2K-cyber**——即神圣之光与晶体绽放,穿插铬和霓虹。这个组合*就是* angelcore × cloud-trance brief。
## Mood 体系 — angelcore × cloud-trance
直接从最强参考 reel 提炼。这是具体的 grade。
### Palette
- **Base:** 近黑 void(#05060a)和骨白(#f4f1ea)。大多数帧是其中之一。
- **Divine accent:** 熔金 / 余烬橙(#ffb24d → #ff7a18)——黑暗中*那一点暖光*。
- **Crystalline accent:** iridescent 紫→青→洋红 bokeh(#8a6bff, #4fc3ff, #ff6ad5)——hyperpop bloom,用于亮帧。
- **Danger accent(节制):** 单一发光红(#ff2a2a)置于单色上——只用于一两个 shock cut。
- **Hyperpop subject:** 糖果粉头发 / 铬 / 亮面白衬蓝天的对比。
规则:**每个镜头一个 accent。** 金色存在于暗帧;iridescence 存在于亮帧;绝不在一个镜头里同时出现。
### 光与质感
- 黑暗被单一暖源刺穿(余烬 bloom、神圣光柱)。高对比、深邃黑色。
- 晶体 / 闪烁 bokeh、lens flares、bloom、light leaks——*heavenly*,不是脏的。
- 暗帧上有 film grain + 微妙 chromatic aberration;亮帧上是干净亮面。
- negative space 上的 macro detail:黑色背景中央的英雄物体(钥匙、眼睛、齿轮、花瓣、水)。
- 主体:带翼形象、云、光环、天使、晶体结构、candy-cyber 肖像。
### 动态
- 缓慢、漂浮、失重的镜头(drift、slow push、slow orbit)——*cloud* trance。
- 只在 drop 处爆发速度。其余一切都像在呼吸。
- 粒子上升(余烬、尘埃、闪光)——向上运动 = 升天。
## 剪辑语法(提炼)
从参考 edit 中,反复出现并定义风格的技术:
1. **Beat-locked 硬切。** verse/drop 中不用 dissolve。切在 kick 上。眼睛应感觉到 BPM。
2. **Hero-on-black macro 插入。** 单个锐利物体居中于黑色 negative space,停留 1–2 个 beat,然后切。这些的节奏蒙太奇 = cloud-trance 标志。
3. **Bloom / 爆发揭示。** 一个白或余烬 bloom 在 transient 上吹爆画面,然后 resolve 到下一个镜头。“divine flash” 转场。
4. **单色上的 color-pop。** 跑一段 B&W,然后单个彩色元素(红眼、金焰、粉发)在 downbeat 上穿透。
5. **进 drop 前的 speed-ramp。** drop 前最后一小节把素材从慢 ramp 到快,在 one 上硬切到 tempo。
6. **Caption keyword highlight(仅限 talking-head / lyric 段落)。** 全大写,accent color 高亮一两个词,与 vocal 同步。用于 lyric video,不要用于纯 visualizer。
7. **Reaction PiP(仅限 explainer/edit-commentary)。** b-roll 上的画中画 talking head。对 music video 本身超出范围;这里记录是因为语料大量使用。
**不要做:** tempo 段落里的 crossfade 转场;每个镜头超过一个 accent color;把镜头留到超出它的 musical phrase;可读的屏幕 UI chrome(裁掉);一个时间轴里混合 aspect ratio。
## Pipeline — 混合 ECC 视频技能
此技能是指挥。每个 ECC 技能是乐器。不要跳层。
```
0. TASTE (this skill) decide genre + mood + grammar BEFORE anything renders
1. STRUCTURE (video-editing) map the song: timestamps for intro/verse/drop/bridge/outro
2. GENERATE (fal-ai-media) make b-roll per genre prompt-presets; throw away 80%
3. CUT (video-editing/FFmpeg) beat-cut + reframe to 9:16; assemble selects on the grid
4. COMPOSE (remotion-video-creation) overlays, blooms, lyric text, beat-synced sequencing
5. MOTION (motion-* skills) easing curves, light-leak/particle motion, transition timing
6. AUDIO (fal-ai-media) transition risers/impacts to sell the cuts (track itself is in Ableton)
7. POLISH grade to the palette above, final pacing pass, export
8. DISTRIBUTE (content-engine) platform-native versions + caption/cover
```
| 步骤 | 要加载的 ECC 技能 | 在这里做什么 |
|------|-------------------|-------------------|
| Structure & cut | `video-editing` | FFmpeg cut/concat/reframe, EDL, scene/silence detection |
| Generate b-roll | `fal-ai-media` | 按 genre preset 跑 image/video 模型 |
| Compose & overlay | `remotion-video-creation` | beat-synced `<Sequence>`s, text, blooms, masks |
| Motion timing | `motion-foundations`, `motion-patterns`, `motion-advanced`, `motion-ui` | easing, springs, light/particle motion |
| Server-side video | `videodb` | 素材量大时 smart reframe, indexing |
| Distribution | `content-engine` | 每平台 cut, covers, captions |
| Voice/lyric VO | `video-editing`(ElevenLabs section) | 仅在需要 spoken 层时 |
## Beat 数学(把 cut 锁到歌)
当前 track 是 **138 BPM, B minor**。常量:
- `seconds_per_beat = 60 / 138 = 0.43478s`
- `frames_per_beat = fps × 0.43478` → **24fps: 10.43**, **30fps: 13.04**, **60fps: 26.09**
- `1 bar (4 beats) = 1.7391s` → 30fps: **52.17 frames**
- `8-bar phrase = 13.913s` → 从 track 得到的 loop length
在 Remotion 中,把每个 `from={}` snap 到 beat:
```ts
const FPS = 30;
const BPM = 138;
const beat = (n: number) => Math.round(n * (60 / BPM) * FPS); // beat(n) → frame
// cut on beats 0,4,8,... : <Sequence from={beat(0)} durationInFrames={beat(4)}> ...
```
## Beat-Mapped Shot Plan(本 music video)
歌曲编排(来自项目自身笔记)是
**Intro → Verse → Drop → Bridge → Drop → Outro (~2:05)**。把 taste 映射到每个 section:
| Section | Genre/mood 倾向 | Grammar | Shot 想法 |
|---------|-----------------|---------|------------|
| **Intro** | Ethereal/divine,近黑 | slow push,无 cut | void 中的余烬 bloom;一道金色光柱;尘埃上升 |
| **Verse** | Dark + macro hero-on-black | 每 2 个 beat 硬切 | 钥匙、眼睛、齿轮、水滴、花瓣——节奏 macro 蒙太奇 |
| **Drop** | Hyperpop bloom + crystalline | speed-ramp 进入,在 one 上切,快 | 糖果粉形象、铬、iridescent bokeh、带翼升天 |
| **Bridge** | Spiritualism,失重 | 一个长 hold 镜头,color-pop | 云 + 光环;单点红色 accent 穿透一次 |
| **Drop 2** | 同 Drop,加强 | 在 transient 上加 divine-flash bloom | 翼展开、闪光爆发、light leaks 拉满 |
| **Outro** | Glacial folk,冷感平静 | 缓慢 fade to black | 晶体结构消融;余烬熄灭 |
## fal.ai Prompt Presets(按 mood)
配合 `fal-ai-media` 使用。每个 preset 是 genre 渲染到项目 palette。给所有 prompt 追加
`9:16, vertical, cinematic, film grain, volumetric light, no text, no watermark`。
- **Divine void:** "a single molten-gold ember bloom rising in an infinite near-black void,
deep shadow, one warm light source, weightless dust particles, holy, high contrast"
- **Macro hero:** "extreme macro of an antique brass key / a human eye / interlocking gears,
centered on pure black negative space, razor-sharp detail, single rim light"
- **Crystalline bloom:** "iridescent violet-cyan-magenta crystalline bokeh, glittering light
refraction, dreamy lens flares, heavenly glow, soft focus, hyperpop angelcore"
- **Candy-cyber portrait:** "candy-pink-haired figure, glossy chrome accents, bright blue sky,
Y2K hyperpop, clean gloss, saturated, kawaii-cyber"
- **Winged ascension:** "a winged figure ascending into clouds, halo of light, bone-white and
gold, volumetric god-rays, ethereal, religious iconography, soft"
- **Cold outro:** "pale crystalline ice structure slowly dissolving, glacial folk, cold blue
and bone white, minimal, calm, fading to black"
每个 preset 生成 6–10 张,保留 2–3 张。要动态,用 image-to-video 模型让静帧动起来,或直接生成短片段;按 Motion 规则保持镜头运动缓慢。
## FFmpeg 配方(cut + reframe)
```bash
# 把任意横屏/原始片段 reframe 到 9:16(居中裁剪)
ffmpeg -i in.mp4 -vf "crop=ih*9/16:ih,scale=1080:1920" v.mp4
# 把一个片段 beat-cut 到恰好 N 个 beat(138 BPM,如 2 beats = 0.8696s)
ffmpeg -i in.mp4 -t 0.8696 -c copy beat2.mp4
# 把 beat-select 拼成 verse 蒙太奇
for f in selects/*.mp4; do echo "file '$f'"; done > concat.txt
ffmpeg -f concat -safe 0 -i concat.txt -c copy verse.mp4
# 去掉屏幕录制参考的 UI chrome / 状态栏(裁掉顶部+底部)
ffmpeg -i reel.mp4 -vf "crop=iw:ih-300:0:150" clean.mp4
```
## Remotion Composition 骨架(beat-synced)
```tsx
import { AbsoluteFill, Sequence, Video, Img, useCurrentFrame, interpolate } from "remotion";
const FPS = 30, BPM = 138;
const beat = (n: number) => Math.round(n * (60 / BPM) * FPS);
const Bloom: React.FC = () => {
const f = useCurrentFrame();
const o = interpolate(f, [0, 3, 12], [0, 1, 0], { extrapolateRight: "clamp" }); // divine flash on a transient
return <AbsoluteFill style={{ background: "radial-gradient(#fff,#ffb24d)", opacity: o, mixBlendMode: "screen" }} />;
};
export const AngelcoreMV: React.FC = () => (
<AbsoluteFill style={{ background: "#05060a" }}>
{/* Verse: macro hero-on-black, hard cut every 2 beats */}
<Sequence from={beat(0)} durationInFrames={beat(2)}><Video src="/selects/key.mp4" /></Sequence>
<Sequence from={beat(2)} durationInFrames={beat(2)}><Video src="/selects/eye.mp4" /></Sequence>
<Sequence from={beat(4)} durationInFrames={beat(2)}><Video src="/selects/gear.mp4" /></Sequence>
{/* Drop: crystalline bloom + flash on the one */}
<Sequence from={beat(8)} durationInFrames={beat(16)}><Video src="/selects/crystalline.mp4" /></Sequence>
<Sequence from={beat(8)} durationInFrames={beat(1)}><Bloom /></Sequence>
</AbsoluteFill>
);
```
渲染:`npx remotion render src/index.ts AngelcoreMV out.mp4`。项目设置、audio track 绑定和 render flags 见 `remotion-video-creation`。
## 关键原则
1. **在第一次生成前决定 genre。** 选一个 primary family + 一个 accent。
2. **每个镜头一个 accent color。** 暗里用金,亮里用 iridescence,红只用一次。
3. **每个硬切都落在 beat 上。** 用 beat 数学;tempo 段落里不用转场。
4. **Hero-on-black macro 是标志动作。** 掌握它;它承载 verse。
5. **生成 10,保留 2。** 连贯来自拒绝,不是更用力 prompt。
6. **裁掉 chrome。** 最终帧里不要状态栏、caption 或 UI。
7. **Taste 先决定,最后评判。** 设定方向,然后在每个 cut 上捍卫它。
## 相关技能
- `video-editing` — 此技能依赖的机械流水线(FFmpeg、reframe、EDL、polish)
- `remotion-video-creation` — 可编程 beat-synced composition 和渲染
- `fal-ai-media` — 生成 b-roll、transition SFX 和 risers
- `motion-foundations`, `motion-patterns`, `motion-advanced`, `motion-ui` — easing 和 motion timing
- `videodb` — 大素材量的 server-side smart reframe 和 indexing
- `content-engine` — 平台原生分发、covers、captions
- `frontend-design-direction` — 同样的 “先决定方向” 纪律,用于 UI
Auf GitHub ansehen