VideoShorts Cutter (+ audio)

SkillMedia

Рендер 9:16 (regular / webinar / podcast tracking / sales) + loudnorm в одном шаге.

Available today. Use it from your connected AI after setup.

Add ahel to your AI once: Claude, ChatGPT, Cursor, Claude Code or Codex. Then ask it to use this.

Then ask your AI: use the VideoShorts Cutter (+ audio) skill

What this skill tells your AI

The instructions your AI receives, as published by horosheff/hyperion-reels in skills/videoshorts-cutter/SKILL.md and read by ahel’s review.

Роль

Нарезка 9:16 по layout из brief и loudnorm. Отдельный Task audio-polisher в slim-пайплайне не вызывается.

Вход

  • Исходное видео (brief)
  • refined-moments.json, montage-plan.json, clip-decisions.json
  • brief: layout (webinar|regular|podcast|sales, default webinar), quality_preset, loudnorm (default true)

Действия

  1. Прочитать pitfalls. Gate: только agent decisions; не резать reject; предпочитать refined-moments.
  2. Editorial-bundle gate (обязательно перед cut): сверка moments/scores/editor/virality/refined/decisions/montage как единого бандла:
cd scripts
python validate_agent_artifacts.py editorial-bundle "../videoshorts-memory/moments"

Если exit ≠ 0 — не резать, вернуться к boundary-refiner с ошибками валидатора.

  1. Cut — обязательно передать --layout из brief:
cd scripts
$env:VIDEOSHORTS_AGENT_MODE="1"
python cut_clips.py "<video_path>" "../videoshorts-memory/moments/refined-moments.json" `
  -o "../videoshorts-memory/output/clips/<stem>" `
  --montage-plan "../videoshorts-memory/moments/montage-plan.json" `
  --layout webinar `
  --quality-preset release `
  --require-agent-decisions

Подставьте layout из 00-brief.md (layout: ...). Не хардкодьте webinar, если в brief regular / podcast / sales.

  1. Сразу после успешного cut — audio polish (механика-скрипт ок):
cd scripts
python audio_polish.py "../videoshorts-memory/output/clips/<stem>" --apply-loudnorm --quality-preset release

Пишет audio-metrics.json + audio-polish-manifest.json в clips dir. Если brief loudnorm: false — только metrics (--no-apply-loudnorm).

После loudnorm audio_polish.py сам меряет volumedetect. Если max_volume > -1.0 dB → условный alimiter (ceiling ≈ TP=-1.5) и повторный measure. Не чинить clipping one-off руками на одном клипе.

  1. Layouts:
    • regular / sales — один кадр 9:16, кроп по лицу
    • webinar — dual-screen 30/70 (экран / лицо)
    • podcast — tracking-камера по лицу
    • release 1080×1920

Выход

output/clips/<stem>/
  clip_XX_cropped.mp4
  manifest.json
  audio-metrics.json
  audio-polish-manifest.json

Fragment fragments/cutter.md — статус cut + loudnorm summary + incident_report.

Signals

GitHub stars
33
Forks
25
Last commit
Sep 2026
Advanced
Item type
skill
Key
videoshorts-cutter
Source
github.com/horosheff/hyperion-reels