Skip to content

Repository files navigation

🎨 NotebookLM Importer

Что делает: браузерное расширение для Chrome и Firefox, которое одной кнопкой добавляет любую страницу или YouTube-видео в твой Google NotebookLM — AI-блокнот для работы с источниками. Поддерживает массовый импорт URL, всех открытых вкладок, YouTube-плейлистов/каналов, парсинг комментариев.

Версия: 2.0.0 | Manifest: V3 (Chrome) + V2 (Firefox)


✨ Возможности

  • 📺 YouTube — импорт отдельных видео, плейлистов, каналов
  • 💬 Парсинг YouTube-комментариев — добавляет тред-комментариев в NotebookLM как источник
  • 📑 Bulk import — список URL через перенос строки → один клик → всё в нужный notebook
  • 🗂️ Tab import — выгрузить все открытые вкладки в notebook
  • 🗑️ Bulk delete — удалить несколько источников из notebook'а одной кнопкой
  • 👥 Multi-account — переключение между Google-аккаунтами
  • 🌍 Локализация: английский + русский
  • ⌨️ Hotkey: Ctrl+Shift+N (⌘+Shift+N на Mac) — добавить текущую страницу в выбранный notebook
  • 🎭 Тема: автоматически следует системной (light/dark)
  • 🎨 UI — glassmorphism + aurora gradient

🛠 Технологический стек

Компонент Технология
Язык Vanilla JavaScript (без фреймворков)
Manifest V3 для Chrome, V2 для Firefox
Background Service Worker (Chrome) / Background Script (Firefox)
Browser API chrome.* + browser-polyfill (для совместимости)
Локализация Стандартный _locales/ Chrome Extension API
Сборка Bash-скрипт (build.sh) — нет webpack/vite
Связь с NotebookLM Reverse-engineered внутренний API через cookies сессии
YouTube парсинг YouTube initial data + continuation API

⚠️ Дисклеймер: расширение использует внутренние API NotebookLM, которые официально не задокументированы. Google может изменить их без предупреждения, и расширение временно сломается до обновления. Все запросы идут от имени твоего Google-аккаунта через cookies — никаких внешних серверов.


📂 Структура проекта

notebooklm-importer/
├── manifest.json               # Chrome MV3
├── manifest.v2.json            # Firefox (рекомендуется для загрузки)
├── manifest-firefox.json       # альтернативный Firefox manifest
├── manifest.firefox-persistent.json
│
├── background.js               # service worker — NotebookLM API + YouTube parser
│
├── popup/                      # popup при клике на иконку
│   ├── popup.html
│   ├── popup.css
│   └── popup.js
│
├── content/                    # injected на notebooklm.google.com
│   ├── notebooklm.js           # bulk delete UI
│   └── notebooklm.css
│
├── lib/
│   ├── browser-polyfill.js     # Mozilla webextension-polyfill
│   └── i18n.js
│
├── icons/                      # 16/32/48/128 px
│   └── icon{16,32,48,128}.png
│
├── _locales/
│   ├── en/messages.json
│   └── ru/messages.json
│
├── build.sh                    # собирает Chrome + Firefox ZIP'ы в build/
│
├── README.md
├── LICENSE
└── .gitignore                  # build/, *.zip

🚀 Установка

Chrome (рекомендуется через сборку)

git clone https://github.com/alexbel74/script_notebooklm.git notebooklm-importer
cd notebooklm-importer

# Опция A: Загрузить unpacked (для разработки)
# 1. Открой chrome://extensions/
# 2. Включи Developer mode (правый верхний угол)
# 3. Нажми "Load unpacked" → выбери папку проекта

# Опция Б: Собрать ZIP и загрузить
./build.sh
# → build/notebooklm-importer-chrome.zip
# Распаковать, загрузить в chrome://extensions/ как unpacked

Firefox

# 1. Открой about:debugging#/runtime/this-firefox
# 2. "Load Temporary Add-on..."
# 3. Выбери файл manifest.v2.json (НЕ manifest.json — он Chrome MV3)
# 4. Расширение появится в списке

⚠️ Важно для Firefox: используй именно manifest.v2.json. manifest.json (Chrome MV3) использует service worker, который Firefox пока не полностью поддерживает.

Сборка ZIP-архивов для распространения

./build.sh
# Создаст:
#   build/notebooklm-importer-chrome.zip   ← для Chrome Web Store
#   build/notebooklm-importer-firefox.zip  ← для Firefox Add-ons

🎯 Использование

Quick add текущей страницы

  1. Открой YouTube-видео или любую веб-страницу
  2. Нажми Ctrl+Shift+N (Mac: ⌘+Shift+N)
  3. Выбери notebook → готово

Импорт всех открытых вкладок

  1. Клик по иконке расширения
  2. Tab Import → выбери notebook
  3. Всё что открыто в браузере уйдёт туда

YouTube-плейлист или канал

  1. Открой страницу плейлиста (/playlist?list=...) или канала (/c/channel/videos)
  2. Клик по иконке расширения
  3. Выбери YouTube → Import all videos

Парсинг комментариев

  1. Открой YouTube-видео
  2. Иконка расширения → Parse comments
  3. Все верхнеуровневые комментарии уйдут в notebook как один документ

Bulk delete источников

  1. Открой notebook на notebooklm.google.com
  2. На странице появится дополнительная кнопка Bulk delete
  3. Выдели нужные источники → удалить пачкой

⚠️ YouTube — ограничения

YouTube ограничивает что можно увидеть с одной страницы:

Кейс Лимит на одной странице Как импортировать больше
Плейлист >100 видео YouTube показывает первые ~30-100 Скрольнуть до конца, потом импортировать (lazy loading подгрузит)
Канал → /videos Последние ~30 Скрольнуть, повторить импорт для следующих
Комментарии Топ-уровень с одной страницы По умолчанию ~20-50 (можно настроить scroll)

Для тысяч видео нужен YouTube Data API v3 с собственным API-ключом — расширение его пока не использует.


🔄 Обновление

cd notebooklm-importer
git pull

# Chrome: chrome://extensions/ → найти расширение → "🔄 Reload"
# Firefox: about:debugging → "Reload"

🔒 Безопасность и приватность

  • Никаких внешних серверов — расширение общается только с notebooklm.google.com, youtube.com, accounts.google.com
  • Cookies используются только для отправки запросов от твоего имени к NotebookLM (как делает сам сайт)
  • Нет аналитики, нет трекинга, нет отправки данных третьим лицам
  • Open source — весь код в этом репо, ничего не запускается удалённо

Permissions в manifest

Permission Зачем
tabs прочитать URL'ы открытых вкладок (для Tab Import)
storage сохранить настройки (выбранный notebook, тема)
activeTab прочитать URL/title текущей страницы (для Quick Add)
scripting inject content script на notebooklm.google.com (Bulk Delete UI)
contextMenus пункт "Add to NotebookLM" в контекстном меню браузера
host_permissions доступ к notebooklm.google.com, youtube.com, accounts.google.com — для API-запросов

🐛 Известные проблемы

Проблема Причина / Решение
"background.service_worker is currently disabled" в Firefox Используй manifest.v2.json вместо manifest.json
Импорт большого плейлиста "виснет" YouTube подгружает видео лениво — попробуй скрольнуть до конца, потом импортировать
Расширение не видит notebook'и Войди в Google-аккаунт на notebooklm.google.com, потом перезагрузи расширение
После обновления Chrome расширение перестало работать Google мог изменить внутренний API NotebookLM. Обнови расширение (git pull) или жди фикс

📝 Лицензия

Proprietary — All rights reserved.


📧 Контакты

Автор: alexyushkevich74@gmail.com

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages