Tworzy gamifikowane plany nauki z filmów YouTube przez NotebookLM — questy z achievementami, checkboxami i feedback loop (quiz + Feynman). Używaj gdy ktoś chce się nauczyć tematu z YouTube, potrzebuje planu nauki, kursu z filmów, questów do nauki, NotebookLM. Triggers: 'naucz mnie', 'chcę się nauczyć', 'plan nauki', 'learn', 'YouTube kurs', 'quest do nauki', 'learn from YouTube', 'kurs z filmów'.
Nauka z YouTube to chaos — 50 filmów, zero struktury, nie wiadomo od czego zacząć. Ten skill zamienia ten chaos w grę: szuka filmów, wrzuca do NotebookLM, generuje plan nauki, a potem rozbija go na questy z achievementami i checkboxami. Na końcu feedback loop sprawdza czy faktycznie rozumiesz temat (quiz + Feynman probe), nie tylko czy obejrzałeś filmik.
yt-dlp — szukanie filmów na YouTube (brew install yt-dlp)notebooklm CLI — interakcja z Google NotebookLM (pipx install "notebooklm-py[browser]")notebooklm login (otwiera przeglądarkę → Google login)notebooklm auth checkSprawdź zmienną środowiskową LEARN_OUTPUT_DIR. Jeśli ustawiona — użyj jej jako katalogu wyjściowego.
Fallback: ./learn-output/ w katalogu projektu.
Utwórz katalog jeśli nie istnieje.
Uruchom skrypt bundlowany w skillu:
python3 scripts/youtube_search.py --topic "[TEMAT]" --max-results 10
Skrypt filtruje po: min 1000 views, min 5 min, sortuje po popularności.
WAŻNE: Bash output może być zwinięty w UI — user go nie widzi! Przepisz wyniki jako sformatowaną tabelę markdown w odpowiedzi do usera. Kolumny: #, Tytuł, Views, Czas, Kanał. Zapytaj które filmy dodać — np. "1,2,5" lub "all".
Zapytaj:
Dla nowego:
notebooklm create "[TEMAT]"
Zwraca notebook_id. Ustaw jako aktywny:
notebooklm use [NOTEBOOK_ID]
Dla istniejącego:
notebooklm list
notebooklm use [NOTEBOOK_ID]
Dodawaj po jednym z 3-sekundowym delay (rate limiting Google):
notebooklm source add "https://youtube.com/watch?v=VIDEO_ID_1"
sleep 3
notebooklm source add "https://youtube.com/watch?v=VIDEO_ID_2"
Po dodaniu — poczekaj na przetworzenie (zbieraj source_id z outputu):
notebooklm source wait [SOURCE_ID] --timeout 120
Informuj o postępie (X/Y dodane, przetwarzanie...).
Zaproponuj prompty z references/learning-prompts.md (przeczytaj plik w tym momencie):
Dla opcji 2: Zapytaj o liczbę dni. Wczytaj prompt #2 i zamień {DAYS} na wybraną liczbę.
Po wyborze:
notebooklm ask "[WYBRANY PROMPT]"
Po wyświetleniu planu nauki, zapytaj:
Chcesz wygenerować quest chain? Questy z achievementami, checkboxami i estymacją czasu — jak w grze.
Jeśli tak:
Przeczytaj references/quest-template.md — pełny format questów, zasady achievementów i mapowanie plan → questy.
Weź plan nauki z NotebookLM (output z Kroku 4) i transformuj w questy zgodnie z references/quest-template.md.
Format Obsidian — obowiązkowe elementy każdego questa:
> [!info] Cel — niebieski blok na początku questa- [ ] zadanie #learn/[slug] — tag z slugiem tematu dla pluginu Tasks> [!tip] Wskazówka — żółty blok, opcjonalnie (max 1 per krok)> [!success] Sukces wygląda tak: — zielony blok, weryfikowalne kryterium> [!example] 🏆 Achievement: [Nazwa] — fioletowy blok z achievementem> [!note] Po ukończeniu — reminder o /learn-reviewZasady struktury:
Na końcu pliku — blok Tasks do wklejenia w dashboard Obsidiana:
## Filtrowanie zadań
```tasks
not done
tags include #learn/[slug]
```
Ustal slug tematu (lowercase, polskie znaki → ASCII: ą→a, ć→c, ę→e, ł→l, ń→n, ó→o, ś→s, ź→z, ż→z, spacje → -, max 50 znaków).
Nazwa pliku: YYYY-MM-DD_[slug].md
Katalog: output dir z Kroku 0.
Jeśli plik istnieje → dodaj suffix -v2, -v3 etc.
YAML front matter:
---