◂ База знанийRYA.AEКарточка фильма и профиль канала — всё, что отличает один фильм от другогообновлено 26 сен 2026
Всё, что отличает один фильм от другого, живёт в одном файле — review_card.json рядом с проектом. Скрипты падают с текстом, если ключа нет, а не подставляют значение прошлого фильма: молчаливый фолбэк однажды уже привёз карту чужого месторождения в чужое ТЗ. Канон канала — в YTs/{CH}/review_profile.json: стиль графики, классы ТЗ, чувствительные темы. Приоритет простой: профиль задаёт канал, карточка перебивает профиль, окружение перебивает карточку.
📌 Место в потоке. Вход — проект на диске, кат, транскрипт, внешние id (док сценария, папки Drive, лист) и профиль канала. Выход — принятая карточка 00_Setup/05_Review/review_card.json, на которой не ругается проверка. Дальше по флоу — с этой карточкой запускается машина стадий (6.2), и из неё же берут константы все поверхности (6.3). Общий смысл этапа — 6.5.
🎨 профиль канала→ 🪪 карточка фильма→ ✅ card check→ 🧪 selftest регрессия→ ▶️ run цепочка стадий

6.1 · 1Единственный источник констант

Карточка лежит рядом с фильмом, а не в репозитории: код общий для всех каналов, состояние — своё у каждого проекта.

  • 00_Setup/05_Review/всё состояние круга ревью
    • review_card.jsonкарточка фильма — пути, главы, подглавы, внешние id, якоря, заметки
    • review_state.jsonстейт-машина: какая стадия что сделала и когда
    • review_terms.jsonтермины и места именно этого фильма
    • pravki/источник истины всех поверхностей
    • work/кадры, чтения экранов, кандидаты, отчёты приёмки

Карточка ищется по цепочке: сначала прямое указание пути, затем корень проекта, затем поиск вверх от текущей папки. Любой ключ можно перебить переменной окружения — имя строится из префикса YTAI_ и ключа заглавными: YTAI_CUT_VERSION, YTAI_LANG. Это для разовых прогонов, а не для постоянной настройки.

Размер живой карточки — около шестидесяти ключей: YTCH12 (кат v5) — 63, YTUVI01 (кат v2) — 57. Большая часть заполняется один раз на фильм; ключи структуры дописываются по ходу разбора глав.

6.1 · 2Обязательный минимум

Откуда карточка берётся. Первый раз её заводит review.py init --project <путь или КОД> --channel <КАНАЛ> [--mode cut_review] [--cut <адрес ката>] — из шаблона стадии; если у проекта остался старый prep_config.json, его переносит --from-prep-config. Дальше карточка правится руками.

Без ключей ниже ругается review.py card check. ⚠️ Но это не гейт: проверка ничего не блокирует, цепочку можно запустить и с неполной карточкой — она упадёт позже и в менее понятном месте. Поэтому card check гоняют руками перед первым запуском и после каждой ручной правки карточки.

КлючЧто задаёт
schemaверсия формата карточки — читатели принимают текущую и предыдущую
projectкороткий идентификатор в нижнем регистре; по нему называется папка кеша и замок прогона
codeкод проекта заглавными — префикс всех выходных файлов
channelкод канала: по нему находится профиль YTs/{CH}/review_profile.json
modecut_review или montage_tz
cut_versionверсия ката — имя подпапки рабочих файлов; разделяет круги между собой
srcкат на диске. ⚠️ card check его отсутствие не ругает — он обязателен по смыслу, а не по проверке: если задан, файл должен существовать
wordsпословный транскрипт ката
duration_secдлительность: от неё считается ожидаемое число кадров
chapters, ch_nameграницы и названия глав — на них держится вся структура поверхностей
filmодна строка: что за фильм, кто ведёт, какой канал. Уходит в промпт судьи как контекст

6.1 · 3Кат, время, язык

КлючЧто задаёт
cut_driveадрес ката на Drive — откуда Memex качает его сам, не дожидаясь ноутбука
renderлёгкая копия ката для панели Premiere, если основной файл слишком тяжёлый
fpsсетка таймкодов — по ней считаются тайминги глав, длительности стиллов и позиции на секвенции. Частоты NTSC хранятся числом, но считаются точной дробью: 29,97 — это 30000/1001, иначе к концу часового фильма накапливается сдвиг в кадры
frames_toleranceдопуск на число нарезанных кадров: видео редко даёт ровно секунду в секунду
langязык поверхностей монтажёра — на каком языке он читает ТЗ. Карточка перебивает профиль канала
languageязык озвучки — для расшифровки речи. Это другой ключ и другой смысл: фильм может быть снят на одном языке, а монтажёр читать на другом. Автоопределение не передаётся никогда — оно ошибается на музыке и паузах
exclusionsинтервалы с заведомыми не-ошибками и причиной: кандидаты внутри отбрасываются, экраны не пакуются в облако, находки не становятся ТЗ. Так «ошибка», о которой уже договорились, не всплывает каждый круг
align_againstтранскрипты прошлых версий или плана — по ним кат выравнивается с предыдущим кругом
chapters_planплан частей: если он есть, главы ката можно предложить автоматически, а не расставлять руками
canon_wordsслова именно этого фильма, которые не опечатка: имена, топонимы, термины
Два «языка» в карточке — самое частое место путаницы. lang — про то, что читает человек; language — про то, что слышит модель.

6.1 · 4Структура фильма: главы, подглавы, перечисления

Это самая длинная часть карточки и единственное место, где структура выпуска описана целиком. Из неё растут заставки глав, название фильма, плашки спикеров, панель подглав, прогресс перечислений, титры подтем, крупные фразы, собственные страницы фильма, вкладка «Главы», карта выпуска в XMind и маркеры секвенции.

Главы
КлючЧто задаёт
chaptersграницы: пары «секунда — номер главы»
ch_nameназвания глав
ch_imgкадр-карточка главы для вкладки «Главы»
ch_no_finalнумерация выпуска. Не совпадает с номером главы: содержательные главы нумеруются подряд, а хук и финал номера не получают и стоят с прочерком
ch_notes, ch_stateчто с заставкой этой главы в кате: заметка и пара «что сейчас → как надо» — две колонки строки во вкладке «Главы»
ch_extraместа, похожие на заставку главы, но главой не являющиеся: полноэкранный ключевик хука, опоздавшая карточка
new_chглавы, которых в кате ещё нет
ch_plate_variantдизайн заставки — одна буква: a полотно (по умолчанию) · b шторка · c нижняя треть
ch_demo_secs, ch_accentсекунды без экранного текста под демонстрацию вариантов и цвета глав
Подглавы

sub — плоский список троек «секунда, номер главы, подпись». Не словарь по главам: подглавы идут сквозным потоком по фильму, и так их проще и расставлять, и сдвигать. Словарь по главам код не примет вовсе — рендер падает на распаковке. На втором круге список заполняет сама стадия sub (stages/sub_from_prev.py): переносит подглавы прошлого ТЗ на ось нового ката — проекцией, досадкой по словам подписи и снапом на паузу.

// review_card.json — YTUVI01, кат v2: 62 подглавы сквозным списком
"sub": [
  [ 16, 1, "Цветные камни держат цену" ],
  [ 44, 1, "Не такой уж обычный рубин" ],
  [ 71, 1, "Один состав — три цены" ]
],
"sub_img":       { "01": "sub_card_01.jpg", "02": "sub_card_02.jpg" },
"sub_no_screen": [ 4, 9, 17 ],   // порядковые номера в sub (с 1), НЕ секунды; числа для примера
"ch_no_final":   { "01": "—", "02": "01", "10": "—" }

sub_img — кадр подглавы, ключ равен её порядковому номеру в списке. sub_no_screen — порядковые номера подглав в sub (счёт с 1), титра которых в кате нет. ⚠️ Это не секунды: код сравнивает их с номером подглавы, а не со временем, и записанные секундами они молча не совпадут ни с одной строкой. Подглава без титра — не ошибка кадрирования, а пропущенный монтажёром экран: во вкладке «Главы» она помечается «⚠️ титра подтемы в кате нет», в карте XMind — «➕ СОЗДАТЬ». На втором круге список берётся из сверки с прошлым ТЗ автоматически, той же стадией sub.

Название фильма и плашки спикеров

Два вида экрана, которые ставятся не по главам, а по месту: название фильма встаёт один раз сразу после хука, плашка спикера — там, где человек впервые появляется. Рисует их stages/bdd_plates.py titles — пока это рендер YTCH на языке брендбука фонда, — показывает вкладка «Главы» в режиме заставок (6.3).

КлючЧто задаёт
film_titleназвание фильма. Нет ключа (и не передано --film) — название не рисуется, и сборка печатает это отказом
film_title_variantподача одной буквой: a полотно — кадр в затемнение, название по центру · b столбик — в три строки у левого поля · c по низу — во всю ширину нижней трети. Пусто — рисуются все три на выбор; задана — только она
film_title_chapterглава, чья заставка и есть название фильма — вместо заставки «тизер». Тогда эта строка во вкладке рисуется выбранной подачей названия, а отдельный блок «выбрать вариант названия» в шапку не выводится
film_title_captionподпись под названием на такой заставке, например «фильм»
name_platesплашки спикеров — список объектов: sec секунда, name, role, kind вид плашки (по умолчанию нижняя треть q_lower_a), now и do — что сейчас и как надо. Во вкладке это строка «👤 имя» под своей главой: плашка спикера — не подглава, а подпись человека. Кадр-подложка берётся через несколько секунд после секунды плашки — подпись в кате в этот момент ещё стоит
// review_card.json — YTCH12, кат v5
"film_title":         "ОДНА С РЕБЁНКОМ",
"film_title_variant": "a",
"film_title_chapter": "01",
"film_title_caption": "фильм",
"name_plates": [ { "sec": 676, "name": "ЖИМАГУЛ ПАНФИЛОВА",
  "role": "куратор по семьям · фонд «Бюро Добрых Дел»", "kind": "q_lower_e",
  "now": "Подпись в кате стоит на 11:16…", "do": "▶ Перерисовать плашкой спикера фонда…" } ]
Перечисления

Когда в главе идёт список («три способа», «шесть видов обработки»), на экране живёт накопительный прогресс «N из M». Его задают: prog — заголовок и пункты; prog_t — секунды, в которые перечисление продвигается на следующий пункт; prog_final — что показать, когда отмечены все; prog_note — пометка к отдельному пункту; prog_variant — тема панели одной буквой: z тёмная (принята) · h светлая (осталась для сравнения); неизвестная буква останавливает рендер; prog_demo_sec — кадр под демонстрацию.

Фразы и страницы

Два ключа, из которых растут ещё два вида экрана — и их легко не заметить, потому что нужны они не всегда.

КлючЧто задаёт
claimsкрупная фраза во весь кадр: секунда, первая строка, вторая строка. Одна мысль, дословно из речи ката. Заполняется руками, но кандидатов предлагает стадия claims — из якорей глав и тезисов актов, не больше одной на главу
pagesсобственная страница фильма: секунда, заголовок, строки и место под портрет или предмет. Приём самого фильма, а не наша плашка — поэтому и выглядит как страница, а не как интерфейс
В круге YTUVI01 это две фразы и одна страница. Если ключа нет, соответствующие экраны просто не рисуются — это не ошибка карточки.

6.1 · 5Внешние id и поверхности

КлючЧто задаёт
doc_id, tab_titleдок сценария и имя вкладки ТЗ в нём
nav_tabимя вкладки-навигатора. Пусто — вкладка не собирается: это способ отказаться от неё, а не забытый ключ
frozen_tabsвкладки, которые нельзя перезаписывать ни при каких условиях
materials_id, project_folder_id, sprint_folder_idпапки Drive: материалы круга, проект, спринт
sheet_url, notes_sheet_idлист ТЗ и лист заметок
shots_remoteпубличная папка кадров: из неё картинки подтягиваются в лист формулой
private_frames_folder_id, images_modeдля фильма, где в кадре человек, которого нельзя показывать по ссылке: закрытая папка кадров и режим temp_grant — кадры встают во вкладки через временный доступ, только при ручном запуске с Мака
⚠️ Пустой внешний id — это тихий пропуск, а не отказ. Стадия, которой нужен док или папка Drive, при пустом ключе возвращает успех с пометкой «doc_id пуст — вкладка ТЗ пропущена», и проверка стадии тоже считает её пройденной. Круг доходит до конца «зелёным» — просто без вкладки. Сделано это нарочно (чтобы прогнать фильм без внешних ресурсов), но цена ошибки высокая: не заполнив doc_id, вы получите отчёт без единого красного флага и ни одной строки ТЗ у монтажёра. Проверять глазами: после круга смотреть review.py status — у пропущенных стадий стоит именно эта пометка.

Отдельно — ключи, которые пишет не человек, а код, и руками их дописывать не нужно:

  • v2 — вставки слоя футажей. Перезаписывается целиком при каждом применении подбора визуала: ручная дописка исчезнет.
  • drop_segments и disabled_ranges — что Роман снял и что выключил прямо на ревью-секвенции; читается из автосохранения проекта Premiere и означает «вырезать».
  • footage_routing — каталог своих съёмок, из которого берутся собственные клипы вместо стока.

6.1 · 6Самопроверки и приёмка карточки

Часть ключей существует только ради того, чтобы машина могла проверить саму себя.

  • ocr_anchors, llm_anchors — две-три фразы, которые в этом кате точно есть на экране. Если чтение экранов их не находит — что-то сломалось на нарезке или распознавании. Пустые якоря означают, что проверка просто пропущена, а не что она прошла.
  • verify_tz — проверки по содержанию ТЗ: «такой-то пункт должен быть про такое-то».
  • notes — грабли конкретного проекта. Печатаются в тикете для следующей сессии, чтобы их не приходилось вспоминать.
  • sources — авторитеты факт-чека именно этого фильма, сверх канальных.
  • film_subject — тема одним словом, для промптов.

Проверка карточки смотрит: на месте ли обязательные ключи и верна ли версия схемы; существуют ли файлы, на которые она ссылается; не пусты ли внешние id; есть ли профиль канала; заданы ли якоря селфчека. Отдельно, мягкими предупреждениями, — разумная ли частота кадров, знакомый ли язык поверхностей и не сломаны ли интервалы исключений.

Проверку стоит гонять не только при заведении фильма, но и после любой ручной правки карточки: почти все отказы цепочки на середине — это ключ, который поправили наспех.

6.1 · 7Профиль канала

Профиль отвечает на вопрос «как принято на этом канале» и меняется куда реже карточки.

КлючЧто задаёт
style, ch_marker_colorsцвета и шрифты графики, цвета маркеров глав
rules_textканон канала прозой: валюта, язык титров, как называются места. Этот текст уходит в промпт судьи
tz_classesкакие классы находок становятся ТЗ, а какие отбрасываются
sources_default, fact_checkавторитеты факт-чека и предел числа проверяемых утверждений
latin_whitelist, lexiconлатиница и слова канала, которые не считаются опечаткой и чужим языком
terms_base_fileобщий каталог терминов и мест канала — поверх него ложится review_terms.json фильма
doc, driveшаблоны имён вкладок и имя папки материалов
mode_default, notes_cycleрежим по умолчанию и нужен ли цикл заметок — см. врезку ниже
Цикл заметок — что это. Роман смотрит ревью-секвенцию и ставит заметку кнопкой панели прямо на таймлайне. Она уезжает строкой в отдельный лист заметок — вместе с кадром, главой и речью вокруг этой секунды, — а разобранный ответ возвращается обратно тем же путём. Это не лист ТЗ и не вкладка: отдельная поверхность для разговора, а не для задания монтажёру. Включается ключом профиля notes_cycle, адрес листа — notes_sheet_id в карточке.

Расширения — не у всех каналов:

  • lang, currency, ocr_langs — для англоязычного канала. lang: en меняет не только подписи: номера правок печатаются FIX-NN вместо ТЗ-NN, метки блоков идут по-английски (▶ DO, ❌ NOW), доводка строк локальной моделью пропускается. Рядом — канон записи сумм и языки распознавания экранов.
  • sensitivity — чувствительные темы: помечать предупреждением и отправлять на подтверждение, но не вырезать самостоятельно.
  • structure_rules, verdict — проверки структуры фильма и редакторский вердикт одним агентом.
  • probe — собственный логотип канала, чтобы зонд не считал его чужим следом.
  • kb — база знаний канала для подбора визуала: корни архивов, что исключать, сколько картинок на эпизод.
Ключ каталога терминов в файлах называется terms_base_file.

6.1 · 8Грабли карточки

  • Пустой внешний id не роняет круг — он его обесценивает. Стадия отметится пройденной, а вкладки не будет. Фолбэка на прошлый фильм нет и не будет — это как раз сделано намеренно, — но и остановки нет: следить за пометками в status.
  • Частоту кадров писать числом. Точную дробь для NTSC считает код; записанное вручную округление уводит таймкоды к концу фильма.
  • Подглавы — плоский список троек. Словарь по главам рендер не примет: падает на распаковке тройки.
  • sub_no_screen и sub_img — порядковые номера, а не секунды. Вставишь подглаву в середину sub — съедут оба списка разом. Поэтому предложения новых экранов в sub не вливаются: они живут в work/{кат}/screens_proposal.json и доезжают до вкладки «Главы» и карты XMind оттуда.
  • Исключение без границ — это заметка. Запись с пустыми началом и концом в фильтр не попадает; проверка карточки об этом предупреждает.
  • v2 руками не дописывать — ключ перезаписывается целиком при следующем применении подбора визуала.
  • Нумерация выпуска не равна номеру главы. У хука и финала номера нет, и это не пропуск в данных.
  • Подглава без титра — не ошибка кадрирования. Она отмечена отдельно именно потому, что экран на неё не поставили, и это повод для ТЗ, а не для правки карточки.
  • Ключи сверки с прошлым кругом заводятся только тогда, когда прошлый круг был. Прошлое ТЗ, версия прошлого ката и режим показа кадров — не заготовка на будущее, а признак того, что фильм идёт вторым кругом.
Knowledge Base · yt.rya.ae · 6.1 Film Card & Channel Profile · пример: YTCH12 (63 ключа, кат v5, название фильма и плашка спикера) · предыдущий: YTUVI01 (57 ключей, кат v2, 62 подглавы) · правило: на странице живут последний пример и предпоследний