[Ограничения принципа] Почему openclaw_youtube пока не может сделать как на B站: «триггер по комментарию к любому видео»

По состоянию на 2026-03-18 я по этому направлению уже почти полностью проверил все пути, которые можно пройти через официальный API. Сразу вывод: если цель — как на B 站, чтобы бот под любыми YouTube-видео мог обнаруживать триггер-комментарии, затем автоматически суммировать видео, учитывать субтитры и после этого публиковать комментарий, то одним только официальным YouTube Data API v3 это практически не сделать.

Не потому, что YouTube не умеет комментировать, и не потому, что OAuth не работает, а потому что на самом ключевом шаге — обнаружить триггер-комментарий — официальный API не даёт пригодной возможности.

Какой эффект хочется получить

Цель на самом деле очень понятная:

  • аккаунт A или аккаунт-бот может работать под любым YouTube-видео
  • триггером может быть @fixcolar или фиксированная фраза активации, например «椰子 结合字幕总结本视频»
  • как только триггер сработал, система автоматически получает видео, комментарий и контекст
  • если есть субтитры — подаёт субтитры в LLM
  • затем этот же аккаунт автоматически возвращается в комментарии под этим видео и публикует комментарий

Почему плагин для B 站 вообще возможен: он не «сканирует комментарии под видео», а читает собственную ленту @-упоминаний / ленту ответов аккаунта. Если где угодно по сайту в любом видео вас @-упомянули, B 站 положит это событие в ленту сообщений — поэтому плагин и может работать кросс-видео.

В YouTube с официальным API узкое место ровно на этом шаге.

Почему вариант с официальным API не проходит

1. commentThreads.list не умеет искать по «автору комментария» и нет общесайтовой ленты mention

Официальная документация:

Основные фильтры, которые поддерживает commentThreads.list, — по сути такие:

  • videoId
  • allThreadsRelatedToChannelId
  • id

То есть максимум вы можете:

  • получить треды комментариев под конкретным видео
  • получить треды комментариев, связанные с конкретным каналом
  • получить по известному thread id

Чего он не может:

  • найти «под какими видео этот аккаунт недавно комментировал»
  • найти «где по всему сайту кто-то @-упомянул меня»
  • найти «где по всему сайту встречается моё слово активации»

Это означает: опираясь только на этот метод, вы можете следить лишь за фиксированным каналом или фиксированным видео — «триггер под любым видео» не сделать.

2. comments.list тоже не умеет искать историю по автору

Официальная документация:

Ключевые фильтры, которые поддерживает comments.list:

  • id
  • parentId

Он скорее про «я уже знаю commentId — верни мне этот комментарий или его ответы», а не про «найди, что этот человек недавно комментировал».

Поэтому он тоже не решает задачу «обнаружить триггер-комментарий под любым видео».

3. activities.list?mine=true тоже не спасает

Официальная документация:

Интуитивно самая похожая идея — взять activity feed самого аккаунта.

Но официально прямо сказано:

  • тип comment «not currently returned»
  • activities.list does not currently return resources for new comments

То есть activity feed аккаунта нельзя стабильно использовать, чтобы получить «под каким видео я только что оставил комментарий».

4. Официальные Push Notification тоже не пушат события комментариев

Официальная документация:

Этот механизм пушит изменения в feed канала — по сути, вокруг обновлений контента канала, а не поток событий комментариев/упоминаний.

Значит, он тоже не заменяет «обнаружение комментариев по всему сайту».

5. Email-уведомления Gmail о комментариях нестабильны — это только обходной путь, не подходит как основной

Официальная справка:

В справке даже отдельно предупреждают:

consecutive comments on a video may not lead to notifications for each

То есть последовательные комментарии могут не давать уведомления на каждый. Делать почту основным триггерным каналом — значит неизбежно терять события.

Что это означает

Какая часть официального API всё ещё полезна

YouTube API не полностью бесполезен — во второй половине он ценен:

  • когда видео уже известно — можно публиковать верхнеуровневый комментарий: commentThreads.insert
  • когда известен parent comment — можно публиковать ответ: comments.insert
  • можно получать metadata видео
  • в паре с yt-dlp можно вытаскивать публичные субтитры у открытых видео

То есть:

«Обнаружить комментарий» не получается, но «отправить комментарий» — реально.

По-настоящему отсутствует первая половина

Не хватает:

  • обнаружить, под какими видео аккаунт A только что оставил комментарии
  • обнаружить, где по всему сайту кто-то @-упомянул бота
  • обнаружить, появился ли под любым видео комментарий со словом активации

Без этого вся схема «общесайтовый триггер как на B 站» не держится.

Как тогда понимать позиционирование текущей API-версии openclaw_youtube

Если смотреть только путь через официальный API, он лучше подходит для узких сценариев:

  • мониторить комментарии, полученные на своём канале
  • мониторить комментарии под фиксированным каналом/фиксированным видео
  • при известном commentId / videoId автоматически отвечать
  • когда пользователь явно просит «с учётом субтитров» — подмешивать публичные субтитры

Но он не подходит для цели:

  • под любым видео @fixcolar сразу триггерит
  • под любым видео я сам пишу «椰子 结合字幕总结本视频» и это триггерит

Поэтому дальше «накручивать параметры» в официальном Data API смысла мало. Это не вопрос объёма инженерии — интерфейс просто не предоставляет такую возможность обнаружения.

Какие есть «обходные» варианты дальше

Ниже — не фантазии, а направления, которые действительно ещё имеют шанс быть реализованными.

Вариант 1: userscript (Tampermonkey) / браузерное расширение как активный триггер

Это вариант, который я сейчас считаю самым перспективным.

Как это выглядит:

  • вы открываете страницу любого YouTube-видео
  • userscript или расширение напрямую читает текущий videoId со страницы
  • вы нажимаете кнопку, или в скрипте зашит фиксированный prompt, например «с учётом субтитров суммируй это видео»
  • фронтенд отправляет videoId + prompt на локальный сервис
  • бэкенд вытаскивает субтитры, прогоняет LLM, затем через API публикует комментарий

Плюсы:

  • не нужно обнаруживать «где я комментировал»
  • не зависит от того, даёт ли YouTube уведомления
  • страница отвечает только за триггер, а не за реальную публикацию
  • сама публикация по-прежнему может идти через официальный API, что стабильнее

Если дальше делать «на любом видео я кликаю один раз и автоматом публикуется суммаризирующий комментарий», это самый надёжный путь.

Вариант 2: опрос (polling) YouTube Studio / страницы уведомлений в залогиненном браузере

Этот путь — скорее замена B 站-идее с лентой сообщений.

Как это выглядит:

  • на машине поддерживается браузерный профиль с залогиненным YouTube
  • расширение или демонический процесс периодически читает страницу комментариев/уведомлений/упоминаний в YouTube Studio
  • парсит новые события комментариев / упоминаний / ответов
  • передаёт найденные события в OpenClaw и отвечает через официальный API

Плюсы:

  • можно приблизиться к опыту «@ под любым видео и сразу триггер»

Минусы:

  • по сути это веб-автоматизация, высокая стоимость поддержки
  • поменяется структура страницы — может сломаться
  • логин-сессия, риск-контроль, капчи — всё сложнее, чем официальный API

Вариант 3: полуавтоматическая передача comment link / commentId

Это самый «деревенский», но самый стабильный способ.

Как это выглядит:

  • вы сами сначала оставляете под любым видео триггер-комментарий
  • затем вручную кидаете боту ссылку на комментарий или commentId
  • бот, получив это, дальше по бэкенд-процессу отвечает / суммирует / подмешивает субтитры

Неэлегантно, зато быстрее всего позволяет прогнать «вторую половину» — генерацию текста комментария.

Вариант 4: гибридная архитектура

Это, пожалуй, наиболее реалистичная долгосрочная архитектура:

  • сторона обнаружения: браузерная страница, userscript, расширение, страница уведомлений Studio — неофициальные пути
  • сторона исполнения: официальный API для публикации верхнеуровневых комментариев или ответов

То есть:

  • первая половина — за счёт веб-контекста
  • вторая половина — через официальный API

С инженерной точки зрения сейчас это наиболее защищаемый путь.

Вывод на текущем этапе

Этот вывод стоит чётко проговорить, чтобы не продолжать жечь время в неверном направлении:

  • если openclaw_youtube упирается в «используем только официальный Data API», то получится лишь бот для фиксированного канала/фиксированного видео
  • если цель — «как на B 站, триггер под любым видео», нужно отказаться от предпосылки «чистое API-обнаружение»
  • реально приземляемое решение — обнаружение в браузере + ответ через API (гибрид)

Иными словами:

С YouTube это не «невозможно», это «невозможно сделать, опираясь только на официальный комментарийный API».

Это и есть самый важный вывод на текущем этапе.