Пять неочевидных уроков запуска кино-соцсети: robots.txt, рекомендации, WebRTC, sitemap и IndexNow
Первая проблема всплыла в robots.txt: Googlebot начал тысячи раз в сутки ходить во внутренний XHR-эндпоинт, хотя общий блок User-agent: * запрещал /api/. Причина в том, что по RFC 9309 бот использует самый специфичный блок User-Agent и не наследует запреты из общего блока. В результате Googlebot видел отдельную секцию с Allow: /, заходил в служебные API и даже создавал ботные показы в статистике рекламы; исправление — дублировать Disallow в каждой именованной секции.
Для рекомендаций VibeMuvik автор ушёл от жанров к Cinema DNA: вкус раскладывается на 24 структурные оси, включая темп, сложность нарратива, эмоциональную плотность, визуальный стиль, авторский почерк, длину и контекст просмотра. Одного косинусного сходства оказалось мало: нейтральный профиль и выраженный профиль могут выглядеть близко по направлению, но быть разными по «громкости». Поэтому совместимость считается комбинацией косинуса и нормализованной меры расстояния: случайные пользователи дают 35–55%, пересечение любимых фильмов — 80–95%, полярные профили — ниже 20%; при росте базы автор планирует перейти с полного перебора на pgvector с ANN-индексом.
Синхронный просмотр через WebRTC потребовал отдельной инженерной доработки: STUN-only не пробивает NAT примерно у 40% домашних роутеров, поэтому нужен TURN-сервер; captureStream ограничен DRM-контентом, браузерными различиями и аудиоформатами; автоплей со звуком блокируется без действия пользователя. Для UX проще держать два peer connection — отдельно фильм и голос, а play/pause нужно синхронизировать не событием, а выравниванием currentTime с учётом задержки и периодическим re-sync. В SEO-части автор отдельно отмечает sitemap на Next.js 14: для 11 000 фильмов, 2000 персон и 300 коллекций revalidate в 30 минут перегружал API, а 86400 секунд решило проблему; JSON-LD для Movie и Person дал, по наблюдению автора, +15–30% CTR в Google, а IndexNow ускоряет индексацию в Bing, Yandex, Seznam и Naver.
Коротко
- Именованные секции robots.txt не наследуют Disallow из общего User-agent: *, поэтому Googlebot может начать обходить закрытые API.
- Cinema DNA в VibeMuvik использует 24 оси вкуса и комбинирует косинусное сходство с мерой расстояния между профилями.
- Для WebRTC-синхронного просмотра понадобились TURN-сервер, раздельные peer connection для фильма и голоса и re-sync currentTime.
- В Next.js 14 sitemap через ISR без длинного revalidate может пересобирать тысячи URL при каждом запросе ботов и мониторинга.
- IndexNow позволяет быстро пинговать Bing, Yandex, Seznam и Naver о новых страницах, но Google этот протокол не поддерживает.
FAQ
Зачем проверять robots.txt, если основные запреты для служебных разделов уже прописаны в общем блоке User-agent: *?
Именованные блоки для Googlebot или YandexBot должны быть самодостаточными. Если в них нет Disallow для /api/, бот может игнорировать общий запрет.
Почему автору не хватило жанров и одной косинусной близости для рекомендательной модели кино-соцсети?
Жанр описывает каталог, а не вкус конкретного человека. Косинус показывает направление профиля, но не отличает нейтральные ответы от выраженных предпочтений.
Какие технические ограничения оказались критичными для синхронного просмотра фильмов через WebRTC?
STUN-only не проходит часть NAT, captureStream плохо работает с DRM и некоторыми форматами, а браузеры блокируют автоплей со звуком. Поэтому нужны TURN, ручной старт и синхронизация времени.
Читайте также
Практическое руководство по инжинирингу контекста для AI-ассистентов
Как писать промпты для разработки: опыт, который экономит часы
Наглядный пример, зачем нужны AI-агенты
Как я пришёл в аналитику, устроился в бигтех и понял, что рабочих задач недостаточно для роста
Разработка фронтенда интернет-магазина через Qwen 3.6 Plus и Qwen CLI
- Именованные секции robots.txt должны быть самодостаточными: Если в robots.txt есть отдельный блок для Googlebot или YandexBot, бот использует именно этот блок и не наследует запреты из User-agent: *. Для PubMag и сервисных страниц это значит, что запреты на /api/, /admin/, служебные XHR-эндпоинты и трекинговые URL нужно дублировать в каждой именованной секции.
[SEO и индексация]
Зарегистрированные пользователи видят только два тезиса.
Зарегистрироваться
Практический разбор запуска VibeMuvik: кино-соцсеть оказалась не «стандартным CRUD», а набором мелких технических ловушек вокруг SEO, рекомендаций, WebRTC и индексации. Самые полезные находки — про robots.txt, 24-мерную модель вкуса, синхронный просмотр и IndexNow.