| 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(渲染器)之上。用它们解决怎么做,用此技能解决做什么和为什么。
核心论点
- Taste 是最后一层,但必须先决定。
video-editing 正确地说 taste 是最后一道人工 pass。陷阱是:如果只在结尾决定 taste,上游每一次生成和剪辑都是猜。在第一个 prompt 之前选定方向,然后让它约束一切。
- 连贯胜过新奇。 一种风格执行到 30 个镜头,胜过 30 种风格。一个命名 genre(见下)是用免费连贯性换来的约束。
- 切到歌,不是切到素材。 在 music video 中,时间轴就是波形。每个硬切都落在 beat 或 transient 上。帧数计算见 pipeline section。
- 选择性生成,无情剪辑。 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 中,反复出现并定义风格的技术:
- Beat-locked 硬切。 verse/drop 中不用 dissolve。切在 kick 上。眼睛应感觉到 BPM。
- Hero-on-black macro 插入。 单个锐利物体居中于黑色 negative space,停留 1–2 个 beat,然后切。这些的节奏蒙太奇 = cloud-trance 标志。
- Bloom / 爆发揭示。 一个白或余烬 bloom 在 transient 上吹爆画面,然后 resolve 到下一个镜头。“divine flash” 转场。
- 单色上的 color-pop。 跑一段 B&W,然后单个彩色元素(红眼、金焰、粉发)在 downbeat 上穿透。
- 进 drop 前的 speed-ramp。 drop 前最后一小节把素材从慢 ramp 到快,在 one 上硬切到 tempo。
- Caption keyword highlight(仅限 talking-head / lyric 段落)。 全大写,accent color 高亮一两个词,与 vocal 同步。用于 lyric video,不要用于纯 visualizer。
- 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:
const FPS = 30;
const BPM = 138;
const beat = (n: number) => Math.round(n * (60 / BPM) * FPS);
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)
ffmpeg -i in.mp4 -vf "crop=ih*9/16:ih,scale=1080:1920" v.mp4
ffmpeg -i in.mp4 -t 0.8696 -c copy beat2.mp4
for f in selects/*.mp4; do echo "file '$f'"; done > concat.txt
ffmpeg -f concat -safe 0 -i concat.txt -c copy verse.mp4
ffmpeg -i reel.mp4 -vf "crop=iw:ih-300:0:150" clean.mp4
Remotion Composition 骨架(beat-synced)
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" });
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。
关键原则
- 在第一次生成前决定 genre。 选一个 primary family + 一个 accent。
- 每个镜头一个 accent color。 暗里用金,亮里用 iridescence,红只用一次。
- 每个硬切都落在 beat 上。 用 beat 数学;tempo 段落里不用转场。
- Hero-on-black macro 是标志动作。 掌握它;它承载 verse。
- 生成 10,保留 2。 连贯来自拒绝,不是更用力 prompt。
- 裁掉 chrome。 最终帧里不要状态栏、caption 或 UI。
- 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