跳到正文
cccskills
免费在 GitHub 公开

mix-master

Canonical short-form-ad audio mix in one FFmpeg pass. VO loudnorm + 3.0× per-clip + 2.0× mix, music 0.13 base + apad+afade, sidechain compress 20:1 @ 0.01, climax line +20%, optional video-to-music duration sync. Replaces the reactive multi-round tuning that cost v03 6+ passes.

中文简介正在准备中。当前显示原文说明。

实测评分 未实测

查看安装方法

包含的文件(3)

  • SKILL.md5.9 KB
  • scripts/mix.sh8.1 KB
  • skill.meta.json274 B

SKILL.md(原文)

安装前可以查看交给 AI 代理的指令内容。

Superseded: the video kit now does this with the audio-mix part, version 1.0.1 and the sound-layer part, version 1.0.4, in the parts folder of this repository. Its mix mode is the audio-mix step (voice, a ducked bed and timed effects) and its finish mode is the sound layer, which levels every video to -14 LUFS with the true peak at or below -1 dBTP. This atom stays, unchanged in behaviour, for skills outside the kit until they move; its scripts still run.

mix-master

Purpose

The v03 Ironman LEARNINGS describe 6+ tuning rounds because no default mix protocol existed: round 1 music too loud, round 2 VO too quiet, round 3 Whisper mis-transcribed, round 4 sidechain ratio finally right, round 5 music ended too early, round 6 climax sat at the same loudness as the rest.

This atom encodes the protocol that landed and ships it as the default. Operators tune by flag; they don't redesign the chain.

Inputs

  • --video <path> — video file with no audio (or whose audio gets dropped) (required)
  • --vo <path,path,...> — comma-separated list of per-scene VO mp3s in scene order (required)
  • --vo-starts <ms,ms,...> — start time in milliseconds for each VO clip on the timeline (required, same length as --vo)
  • --music <path> — music bed file (required)
  • --sfx <path,path,...> — optional comma-separated SFX list
  • --sfx-starts <ms,ms,...> — optional SFX start times
  • --output <path> — output mp4 (required)
  • --total-duration <s> — target total duration in seconds (required — video AND music are sync-fit to this)
  • --vo-boost-line <N> — 1-indexed VO clip that is the climax; gets +20% additional volume (default unset)
  • --vo-volume <float> — per-clip VO volume multiplier (default 3.0)
  • --vo-mix-volume <float> — extra mix-bus volume on VO (default 2.0)
  • --music-volume <float> — base music volume (default 0.13)
  • --music-swell-volume <float> — peak music volume during apad/swell (default 0.21)
  • --sidechain-ratio <float> — sidechain ratio, capped at 20 by FFmpeg (default 20)
  • --sidechain-threshold <float> — sidechain threshold (default 0.01)
  • --target-i <lufs> — VO loudnorm integrated target (default -16)
  • --target-tp <dbtp> — VO loudnorm true-peak (default -1.5)
  • --target-lra <lu> — VO loudnorm LRA (default 11)

Workflow

  1. Validate inputs — --vo and --vo-starts must be same length; --sfx and --sfx-starts must be same length; ffmpeg + ffprobe must be on PATH.
  2. Probe music duration (ffprobe). If music shorter than --total-duration, append apad=pad_dur=2.0 then trim back to target. If music longer, trim with afade=out over last 1.5s.
  3. Build a filter_complex_script file (long chains exceed shell arg limits):
    • Per-VO: [N:a]loudnorm=I=...:TP=...:LRA=...,adelay=<start>|<start>,volume=<vo_volume>[voN];
    • Climax VO (if --vo-boost-line N): volume becomes vo_volume * 1.2.
    • Mix all VO: amix=inputs=K:duration=longest,volume=<vo_mix_volume>[vo_pre];
    • Split VO for sidechain key: [vo_pre]asplit=2[vo_final][vo_sc];
    • Music base: apad=pad_dur=2.0,atrim=0:<TOTAL>,afade=t=out:st=<TOTAL-1.5>:d=1.5,volume=<music_volume>[music_base];
    • Sidechain: [music_base][vo_sc]sidechaincompress=threshold=<thresh>:ratio=<ratio>:attack=20:release=600[music_ducked];
    • SFX (optional): per-SFX adelay + volume then mix into [sfx_bus].
    • Final: amix=inputs=<2 or 3>:duration=longest[a_out].
  4. Run a single ffmpeg invocation that consumes video, all VO, music, all SFX, applies the filter chain, and outputs the mixed mp4 (video re-encoded only if duration trim needed; otherwise -c:v copy).
  5. Run a verification probe: ffprobe loudness summary on [a_out], write manifest.json and verification.md.

Output

  • <output> — mixed mp4 with VO + music + SFX.
  • manifest.json — chain parameters, vo timing, climax line, integrated LUFS after.
  • verification.md — pass/fail report (integrated LUFS within ±0.5 of expected target, no clipping).

Quality Checks

  • Output integrated LUFS within ±0.5 of <target-i> (post-protocol; should be approximately -14 social-ready after the boosts).
  • True-peak strictly below <target-tp> (no clipping).
  • Output duration equals <total-duration> ± 100ms.
  • Music tail has afade=out — last 100ms RMS < -30 dB.
  • If --vo-boost-line was set, the corresponding clip's volume= value is vo_volume * 1.2.

Failure Modes

  • Sidechain ratio > 20 — FFmpeg errors "Result too large." Cap at 20 (the protocol default).
  • VO and starts arrays mismatched — fail fast at validation.
  • Music too short and apad insufficient — emit a warning; video may end before music. Operator should re-source music or shorten --total-duration.
  • VO clip > 5KB but actually error JSON — out of scope here; create-clips Phase 4 catches it.
  • Re-encoding video unnecessarily — if total duration matches input video duration, use -c:v copy to preserve quality.

Example

scripts/mix.sh \
  --video peloton/ads/video-04-new-job/edits/master-no-audio.mp4 \
  --vo "peloton/ads/video-04-new-job/audio/vo-scene-01.mp3,...,peloton/ads/video-04-new-job/audio/vo-scene-14.mp3" \
  --vo-starts "0,2000,3500,...,28000" \
  --music peloton/ads/video-04-new-job/audio/music-cue-01.wav \
  --output peloton/ads/video-04-new-job/edits/master-final.mp4 \
  --total-duration 30.0 \
  --vo-boost-line 14

Consumed by: video-orchestrator/edit-video Phase 3–5, auto-fix-from-review-notes dispatcher (when vo-intelligibility or music-vo-balance polish-notes items reference mix-master).

评价

还没有评价。欢迎分享你的使用感受。

评论

无需登录即可发表。欢迎分享使用感受、提问,或说明在哪些环境下无法运行。

还没有评论。来写第一条吧。

提交后会立即公开。请勿填写邮箱、电话等个人信息。URL 最多 2 个。

0 / 1000 字

此表单受 reCAPTCHA 保护,适用 Google 的隐私权政策和服务条款。

同一仓库的技能

Research supported advertising promises from a specific buyer's context, current product facts, customer language and observed ads. Turn them into static, video or copy ideas; match video ideas to actual recipes and save a product-scoped angle bank for write-video-ad-script. Product-led discovery can use verified facts without reviews. Reference persistence and reach are observations, not proof of performance.

中文简介正在准备中。当前显示原文说明。

gooseworks-ai/goose-skills12642026年10月23日 更新

Analyze ad campaign performance data (Google, Meta, LinkedIn) to identify what's working, what's wasting budget, and specific cut/scale/test recommendations. Runs statistical analysis, funnel diagnostics, and multi-channel budget reallocation with specific dollar-amount shift recommendations and scenario modeling.

中文简介正在准备中。当前显示原文说明。

gooseworks-ai/goose-skills12642026年10月23日 更新

For paid lead-gen and participant-recruitment ads, replaces vanity CPA with true CAC per qualified lead by joining ad-platform data with downstream funnel events, surfaces tracking gaps, and classifies every creative into Scale / Keep / Investigate / Cut.

中文简介正在准备中。当前显示原文说明。

gooseworks-ai/goose-skills12642026年10月23日 更新

The intake stage of a Meta ad harness. Researches the brand first, states what it assumes, and asks only what it cannot infer and what would change money, claims or legal exposure if guessed wrong — at most four questions a turn, in plain business language. Writes the brand's stable facts (ads/brand.md), the campaign brief, and a log of what was asked vs assumed. Use it when someone wants to run Meta ads and the brand's ad facts are not yet recorded.

中文简介正在准备中。当前显示原文说明。

gooseworks-ai/goose-skills12642026年10月23日 更新

Checks paid ads against the ad platform's rules (Meta, TikTok, Google, LinkedIn and others) and the brand's category rules: the copy, on-image or on-screen text, pictures and people. Rewrites what can be fixed honestly, adds the disclosures that are needed, and flags anything that needs a human or legal review, with one pass, fixed or flag line per ad and platform. Use alone when you already have the ad text or images and know where they will run; otherwise run the playbook for the job (e.g. make-static-ads, make-content, email-lifecycle).

中文简介正在准备中。当前显示原文说明。

gooseworks-ai/goose-skills12642026年10月23日 更新

Analyze the message match between your ads and landing pages. Checks if the promise in the ad copy carries through to the landing page headline, body, and CTA. Flags disconnects that kill conversion rates. Works with Google, Meta, and LinkedIn ads.

中文简介正在准备中。当前显示原文说明。

gooseworks-ai/goose-skills12642026年10月23日 更新

查看 gooseworks-ai 的全部技能

报告此技能的问题