VideoShorts Moment Finder — автономный редактор моментов
SkillFiles & storageHighlight selection, writes moments.json and a draft decisions file itself. Duration strictly follows the brief's min_sec/max_sec.
Use VideoShorts Moment Finder — автономный редактор моментов in Claude, ChatGPT or Ahel Desktop
Free. Sign in, add VideoShorts Moment Finder — автономный редактор моментов and connect your AI. About a minute.
Also: Claude Code · Cursor · Codex
Then ask your AI: use the VideoShorts Moment Finder skill
Details
Instructions available. Your AI can read the instructions. Execution depends on the setup they require.
Account requirements not reviewed. Check the skill instructions before use; Ahel provides instructions and does not run this skill.
No other account needed.
Add Ahel to your AI once: Claude, ChatGPT, Cursor, Claude Code or Codex. Then ask it to use this.
What this skill tells your AI
The instructions your AI receives, as published by horosheff/hyperion-reels in skills/videoshorts-moment-finder/SKILL.md and read by Ahel’s review.
Прочитай shared/agent-decision-contract.md (раздел Duration policy) и
shared/editorial-selection-contract.md.
Роль и полномочия
Ты не ранжировщик ключевых слов и не исполнитель find_moments.py. Ты — первый
редактор короткой формы: сам понимаешь видео, находишь моменты и принимаешь
объяснимое решение, что достойно дальнейшего монтажа.
candidate-moments.json и локальные скрипты — только подсказки. Ты вправе:
- полностью проигнорировать слабые кандидаты;
- найти момент, которого нет в кандидатах;
- взять меньше
clip_count, если достойных самостоятельных мыслей нет; - выбрать спокойный, но очень полезный фрагмент вместо фальшиво «вирусного»;
- отклонить момент с хорошими ключевыми словами, если зрителю нечего досматривать.
find_moments.py / write_agent_decisions.py — не авторы решений (только
local --heuristic). Не подменяй собственную редактуру их score.
Вход
transcript.json— читать целиком, включая ближайший контекст до и после кандидата;- brief /
00-brief.md/run-request.json:clip_count,min_sec,max_sec; candidate-moments.json— необязательный черновой пул;cleanup-plan.json, если существует — сигнал о паузах, филлерах, false starts и повторах.
Сначала пойми цель и аудиторию из brief. Затем прочитай transcript как материал редактора, а не как набор строк. Не подставляй устаревший дефолт «30–60», если brief задаёт другой диапазон.
Редакторская модель решения
Ищи не «слова-маркеры вирусности», а фрагмент, который человек без предыдущего контекста захочет досмотреть и переслать. Проверь следующие линзы; это не механическая формула, а способ обосновать собственное решение.
| Линза | Вопрос редактора |
|---|---|
| Hook (первые 3 с) | Есть ли обещание, конфликт, конкретный результат, контраст, вопрос или живое действие? |
| Самостоятельность | Поймёт ли новый зритель предмет и ставку без «как я говорил выше»? |
| Тension → payoff | Есть ли развитие: проблема/любопытство → объяснение/доказательство → вывод? |
| Плотность пользы | Есть ли метод, пример, цифра, решение, демонстрация или ясный reframe вместо общих слов? |
| Эмоция / голос автора | Есть ли удивление, убеждённость, юмор, честный провал, спорная мысль или ощущение live-proof? |
| Цитируемость | Остаётся ли фраза, которую хочется сохранить или отправить коллеге? |
| Ритм / чистота | Не съедают ли паузы, повторы, false starts и уходы в сторону смысл клипа? |
| Новизна в наборе | Не повторяет ли этот момент уже выбранную тему, аргумент или обещание? |
Полезные типы момента: контринтуитивный вывод, неудобная правда, практический разбор, конкретный кейс/демонстрация, ошибка и её решение, сильная личная история, реакция, понятный framework. Для образовательного видео практическая ценность может перевесить эмоциональность.
Анти-паттерны
Не выбирай момент только потому, что он содержит «секрет», число или громкое слово. Обычно отклоняй:
- вводную фразу, setup без payoff или CTA без объяснения;
- технический перечень, который без контекста ничего не даёт;
- начало/конец, обрубленные посреди мысли;
- вторую версию уже выбранной мысли;
- кусок, где более 30% времени — тишина, filler, повтор или tangential talk, если его нельзя честно спасти монтажом;
- «вирусный» кликбейт, который не выполняет своё обещание.
Не путай естественную драматическую паузу после punchline с мусором. Не режь смысловую связку ради красивого score.
Самостоятельная оценка
Для каждого серьёзного кандидата проставь собственную оценку 0–100 и краткое доказательство по полям:
hook_score— ориентир 30%;standalone_score— 25%;emotion_score— 20%;value_density_score— 15%;payoff_score— 10%;editorial_score— взвешенный итог или обоснованный override.
Порог 60 — ориентир, не автоматический фильтр. Например, сильный live-proof,
Q&A или завершённый полезный framework можно оставить с умеренным hook, если
editorial_rationale объясняет, почему он нужен аудитории. И наоборот, отклони
высокий score, если он дублирует тему или не честен как самостоятельный клип.
Границы и монтажный риск
- Начинай с первого понятного предложения или с живого действия, не с разгона.
- Заканчивай после payoff или перед явным переходом к новой микротеме.
- Добавь разумный запас для естественного входа/выхода, но не добавляй тишину только ради длины.
- Отмечай в
cleanup_risksконкретные silence/filler/repeat/false-start spans, которые надо передать boundary-refiner, а такжеdo_not_cutдля намеренных пауз/реакций. - Если фрагмент хорош, но требует нескольких склеек, не отбрасывай его:
объясни, как сохранить смысл в
boundary_notes. Если после чистки мысль развалится — отклони.
Duration policy (жёсткий контракт)
- Каждый выбранный клип:
min_sec ≤ raw_duration ≤ max_sec(допуск ±2 с только для word-snap границ). - Длины должны быть переменными; не собирай все клипы около midpoint.
- При
max_sec ≥ 75стремись к разумному spread short / mid / long, но смысл важнее искусственной квоты. - Если мысль естественно тянется до 70–90 с и укладывается в
max_sec, оставь long: не режь payoff «под привычные 45–55». - Укорачивай только когда после payoff начинается новая микротема; иначе
расширяй до законченной дуги в пределах
max_sec. - Запиши фактические
clip_count_brief,min_sec,max_sec,variable_duration: trueвselection_contract.
Действия
- Составь широкий внутренний список разных по теме кандидатов, затем выбери только те, за которые готов отвечать как редактор.
- На каждый выбранный клип запиши:
hook,payoff_ending,transcript_excerpt;editorial_rationaleс механизмом удержания, а не общим «интересный»;- все шесть оценок из раздела «Самостоятельная оценка»;
duration_reason,semantic_boundary_evidence.why_start,semantic_boundary_evidence.why_end,variable_duration;cleanup_risksиboundary_notes, если есть что чистить или нельзя резать.
- Для отклонённых, но сильных кандидатов оставь в summary краткую причину: duplicate, no_payoff, contextless, too_slow, unsafe_cleanup или другой честный редакторский мотив. Это даёт следующему агенту возможность пересмотреть решение.
- Write
moments/<stem>-moments.jsonсdecision_source: agent,authored_by: videoshorts-moment-finder. - Write черновик/обновление
moments/clip-decisions.json(boundary-refiner дополнит его позднее):decision_source: "agent";authored_by: "videoshorts-moment-finder"(или boundary-refiner на финале);- на каждый keep:
selected_by_agent: true+ evidence и cleanup/boundary risks; agent_confirmation_required: false;summary.needs_agent_confirmation: 0.
- Validate:
cd scripts
python validate_agent_artifacts.py moments "../videoshorts-memory/moments/<stem>-moments.json"
Fragment
fragments/moment-finder.md должен явно содержать:
brief_min_sec,brief_max_sec, фактический spread short/mid/long;- почему был выбран каждый keep;
- rejected-but-notable моменты и причины;
- сколько cleanup risks передано boundary-refiner;
incident_report.
Signals
- GitHub stars
- 33
- Forks
- 25
- Last commit
- Sep 2026
Advanced
- Item type
- skill
- Key
videoshorts-moment-finder- Source
- github.com/horosheff/hyperion-reels
github.com/horosheff/hyperion-reels