Install
$ agentstack add skill-szewowsky-learn-skill-learn ✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
Verified badge
Passed review? Show it. Paste this badge into your README, it links to the public security report.
Reliability & compatibility
Declared compatibility
Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.
We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.
How agent discovery & health will work →About
Skill: Learn — YouTube → NotebookLM → Plan nauki → Questy
Dlaczego ten skill istnieje
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.
Wymagania
yt-dlp— szukanie filmów na YouTube (brew install yt-dlp)notebooklmCLI — interakcja z Google NotebookLM (pipx install "notebooklm-py[browser]")- Jednorazowa autoryzacja:
notebooklm login(otwiera przeglądarkę → Google login) - Sprawdzenie auth:
notebooklm auth check
Flow
Krok 0: Konfiguracja output
Sprawdź 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.
Krok 1: Szukaj filmów na YouTube
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".
Krok 2: Nowy notebook czy istniejący?
Zapytaj:
- Nowy — stwórz notebook o nazwie tematu
- Istniejący — pokaż listę
Dla nowego:
notebooklm create "[TEMAT]"
Zwraca notebook_id. Ustaw jako aktywny:
notebooklm use [NOTEBOOK_ID]
Dla istniejącego:
notebooklm list
notebooklm use [NOTEBOOK_ID]
Krok 3: Dodaj filmy jako źródła
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...).
Krok 4: Odpytanie promptem do nauki
Zaproponuj prompty z references/learning-prompts.md (przeczytaj plik w tym momencie):
- Plan nauki krok po kroku
- Plan nauki na X dni — zapytaj ile dni (domyślnie 7 lub 14)
- Trend Extraction
- FAQ — 15 pytań z odpowiedziami
- Syntetyzator wielu filmów
- Contrarian Finder
- Pomiń (porozmawiam sam później)
Dla opcji 2: Zapytaj o liczbę dni. Wczytaj prompt #2 i zamień {DAYS} na wybraną liczbę.
Po wyborze:
notebooklm ask "[WYBRANY PROMPT]"
Krok 5: Quest Generation (opcjonalny)
Po wyświetleniu planu nauki, zapytaj:
> Chcesz wygenerować quest chain? Questy z achievementami, checkboxami i estymacją czasu — jak w grze.
Jeśli tak:
5a. Przeczytaj szablon
Przeczytaj references/quest-template.md — pełny format questów, zasady achievementów i mapowanie plan → questy.
5b. Wygeneruj quest chain
Weź plan nauki z NotebookLM (output z Kroku 4) i transformuj w questy:
- Każdy major topic / faza / dzień = osobny Quest
- Prerequisites → wpleć w Quest 1
- Quick wins → wcześniejsze questy (1-2)
- Deep dives → ostatnie questy
- Checkboxy
- [ ]do trackowania progresu - Achievementy: kreatywne, tematyczne, po polsku
- "Sukces wygląda tak:" = weryfikowalne kryterium
- Estymacje: realistyczne (oglądanie = 1.3x film, zadanie = 10-20 min)
- Tabela podsumowująca na końcu
5c. Zapisz do pliku
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:
---
type: quest-chain
topic: "[TEMAT]"
slug: "[slug]"
created: YYYY-MM-DD
notebook_id: "[notebook_id z Kroku 2]"
version: 1
quests: [liczba questów]
source: learn-skill
---
Pokaż ścieżkę do pliku.
Krok 6: Feedback Loop Setup (po quest generation)
Warunek: Tylko jeśli quest chain powstał w Kroku 5.
6a. Wygeneruj pytania per quest
Dla KAŻDEGO questa użyj NotebookLM:
notebooklm ask "[QUIZ_GENERATOR_PROMPT z references/learning-prompts.md — podmień QUEST_TOPIC]"
Powtórz dla Feynman probe (prompt #8 z learning-prompts.md).
Jeśli NotebookLM nie odpowie → wygeneruj pytania sam (Claude) na podstawie materiału questa.
6b. Wygeneruj feedback-loop.md
Przeczytaj references/feedback-loop-template.md. Wypełnij szablon:
- Quest rows: Quest 1 =
pending, reszta =- - Pre-generowane pytania quiz + feynman per quest
- Notebook ID zachowany
6c. Zapisz obok quest chain
Nazwa pliku: YYYY-MM-DD_[slug]_feedback-loop.md Katalog: ten sam co quest chain (output dir).
YAML front matter:
---
type: feedback-loop
topic: "[TEMAT]"
slug: "[slug]"
created: YYYY-MM-DD
notebook_id: "[notebook_id]"
quest_file: "[nazwa pliku quest chain]"
version: 1
status: active
source: learn-skill
---
6d. Podsumowanie
Feedback loop wygenerowany:
- Plik: [ścieżka]
- Questów: X (z pre-generowanymi pytaniami)
- Pierwszy do review: Quest 1 — [nazwa]
- Komenda: /learn-review [slug]
Failure Handling
| Sytuacja | Co robić | |----------|----------| | yt-dlp: 0 wyników | Zaproponuj szerszy temat lub angielskie keywords | | yt-dlp: timeout | Retry raz, potem poinformuj | | NotebookLM: auth expired | notebooklm auth check → notebooklm login | | NotebookLM: source add fail | Pomiń film, kontynuuj z resztą, poinformuj | | NotebookLM: query fail | Retry raz, potem fallback — wygeneruj plan sam (Claude) | | Partial success | Zapisz co masz, powiedz co brakuje | | Plik już istnieje | Suffix -v2 lub zapytaj | | notebooklm not found | Instrukcja: pipx install "notebooklm-py[browser]" | | yt-dlp not found | Instrukcja: brew install yt-dlp |
Debugowanie
notebooklm auth check # Sprawdź auth
notebooklm login # Ponowna autoryzacja
notebooklm -vv ask "test" # Verbose mode
Ograniczenia
- Przetwarzanie YouTube w NotebookLM: 30-90s per film
- Max 50 źródeł per notebook (NotebookLM Free)
- Auth Google wygasa co kilka dni/tygodni —
notebooklm login - notebooklm-py korzysta z undocumented Google RPC API (3k+ stars, aktywny maintenance, ale może się zmienić)
- yt-dlp search zwraca wyniki bez rankingu jakości — filtrujemy po views/duration
- Delay 3s między
source add— Google rate limiting
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: Szewowsky
- Source: Szewowsky/learn-skill
- License: MIT
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet, be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.