[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-80172":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":8,"htmlUrl":8,"language":9,"languages":8,"totalLinesOfCode":8,"stars":10,"forks":11,"watchers":12,"openIssues":13,"contributorsCount":13,"subscribersCount":13,"size":13,"stars1d":13,"stars7d":13,"stars30d":14,"stars90d":13,"forks30d":13,"starsTrendScore":13,"compositeScore":15,"rankGlobal":8,"rankLanguage":8,"license":8,"archived":16,"fork":16,"defaultBranch":17,"hasWiki":18,"hasPages":16,"topics":19,"createdAt":8,"pushedAt":8,"updatedAt":20,"readmeContent":21,"aiSummary":22,"trendingCount":13,"starSnapshotCount":13,"syncStatus":23,"lastSyncTime":24,"discoverSource":25},80172,"Watch_Youtube_Skill","oguzcankaraman\u002FWatch_Youtube_Skill","oguzcankaraman",null,"Python",56,5,51,0,4,36.73,false,"main",true,[],"2026-06-12 04:01:27","# watch-youtube\n\nYouTube videolarını Claude Code'a \"izlettiren\" bir pipeline. Transcript + ekran görüntülerini birleştirerek bir storyboard grid oluşturur, Claude bunu Vision LLM ile analiz eder ve bilgileri `docs\u002Fwiki\u002F` altında Obsidian formatında saklar.\n\n## Nasıl Çalışır\n\n```\nYouTube URL\n    ↓\nTranscript İndir (VTT\u002FSRT → Groq Whisper fallback)\n    ↓\nNLP Analizi → Akıllı Timestamp Seçimi\n    ↓\nFFmpeg → Sadece O Anların Frame'leri\n    ↓\nStoryboard Grid (JPEG)\n    ↓\nClaude (Vision LLM) → Analiz\n    ↓\ndocs\u002Fwiki\u002F → Obsidian Knowledge Base\n```\n\nSadece transcript kullanmak yeterli değil — önemli bilgilerin büyük kısmı ekranda gösterilir, sesle anlatılmaz. Bu pipeline transcript'i NLP ile okuyarak *nerede* ekran görüntüsü alınacağını öğrenir; sabit aralıklı frame extraction yerine semantik olarak değerli anları seçer.\n\n## Kurulum\n\n**Gereksinimler:** Python 3.11+, ffmpeg, Claude Code\n\n### 1. Repoyu klonla\n\n```bash\ngit clone \u003Chttps:\u002F\u002Fgithub.com\u002Foguzcankaraman\u002FWatch_Youtube_Skill>\ncd YouTube\n```\n\n### 2. Virtual environment\n\n```bash\npython3.11 -m venv .venv\nsource .venv\u002Fbin\u002Factivate      # macOS\u002FLinux\n# .venv\\Scripts\\activate       # Windows\n```\n\n### 3. Bağımlılıkları yükle\n\n```bash\npip install -r requirements.txt\npip install -e .\n```\n\n### 4. spaCy dil modelini indir\n\n```bash\npython -m spacy download en_core_web_sm\n```\n\n### 5. ffmpeg yükle\n\n```bash\nbrew install ffmpeg        # macOS\nsudo apt install ffmpeg    # Ubuntu\u002FDebian\n# Windows: https:\u002F\u002Fffmpeg.org\u002Fdownload.html\n```\n\n### 6. (Opsiyonel) Groq API Key\n\nYouTube altyazısı olmayan videolar için Whisper fallback:\n\n```bash\nexport GROQ_API_KEY=\"gsk_...\"\n```\n\n[Groq API key al](https:\u002F\u002Fconsole.groq.com) — ücretsiz tier yeterli.\n\n## Kullanım\n\n### CLI\n\n```bash\nsource .venv\u002Fbin\u002Factivate\n\nwatch-youtube \"https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=VIDEO_ID\" \\\n  --output-dir .\u002Foutput \\\n  --max-frames 20 \\\n  --verbose\n```\n\nStoryboard JPEG'leri `output\u002FVIDEO_ID\u002F` altına kaydedilir.\n\n### Claude Code ile\n\nClaude Code kuruluysa projeyi açın ve bir YouTube URL paylaşın. `CLAUDE.md` sayesinde Claude otomatik olarak `watch-youtube` skill'ini devreye alır, videoyu analiz eder ve `docs\u002Fwiki\u002F` altına yazar.\n\n```\n# Claude Code'a şunu yapıştırın:\nhttps:\u002F\u002Fwww.youtube.com\u002Fwatch?v=VIDEO_ID\n```\n\n## CLI Seçenekleri\n\n| Seçenek | Varsayılan | Açıklama |\n|---|---|---|\n| `--output-dir \u002F -o` | `.` | Storyboard JPEG'lerinin kaydedileceği klasör |\n| `--max-frames \u002F -n` | `30` | Maksimum frame sayısı |\n| `--jpeg-quality \u002F -q` | `85` | JPEG kalitesi (1–95) |\n| `--silence-gap \u002F -g` | `5.0` | Sessizlik eşiği (saniye) |\n| `--groq-api-key \u002F -k` | env `GROQ_API_KEY` | Whisper fallback için Groq key |\n| `--keep-temp` | kapalı | Geçici video\u002Fframe dosyalarını sakla |\n| `--no-learn` | kapalı | Bu çalıştırmada keyword öğrenmesini atla |\n| `--verbose \u002F -v` | kapalı | Debug log'larını göster |\n\n## Proje Yapısı\n\n```\nwatch_youtube\u002F\n  __init__.py      # Veri modelleri (dataclass'lar)\n  downloader.py    # yt-dlp ile transcript + video indirme\n  analyzer.py      # NLP timestamp seçimi + self-learning\n  extractor.py     # ffmpeg frame extraction\n  compiler.py      # Pillow storyboard grid\n  main.py          # CLI entry point\n\n.claude\u002Fskills\u002F\n  watch-youtube\u002F   # Claude Code skill talimatları\n  wiki-schema\u002F     # Wiki yazma kuralları\n\ndocs\u002Fwiki\u002F\n  Index.md         # Ana harita\n  Videos.md        # Analiz edilmiş videoların kayıtları\n  *.md             # Konu bazlı wiki sayfaları\n\ndata\u002F\n  keyword_store.json   # Self-learning keyword veritabanı\n\noutput\u002F\n  VIDEO_ID\u002F\n    storyboard_page_001.jpg\n    storyboard_page_002.jpg\n    ...\n```\n\n## Nasıl Çalışıyor: Teknik Detay\n\n### Akıllı Timestamp Seçimi\n\nİki kural birlikte çalışır:\n\n**Kural A — Keyword eşleşmesi:** Transcript'te \"look at this\", \"here we have\", \"diagram\", \"terminal\" gibi konuşmacının ekrana işaret ettiği ifadeler tespit edilir. spaCy ile fiil + demonstrative kombinasyonları da yakalanır.\n\n**Kural B — Sessizlik tespiti:** Konuşmacının 5+ saniye sessiz kaldığı anlar genellikle demo veya görsel içerik gösteriyor demektir.\n\n### Self-Learning\n\nHer video bittikten sonra TF-IDF çalışır: seçilen timestamp'lere yakın metinler ile arka plan metinleri karşılaştırılır, yüksek lift'li terimler `data\u002Fkeyword_store.json`'a yazılır. Sistem izledikçe domain'e özgü vocabulary öğrenir.\n\n### Storyboard Grid\n\nFrame sayısına göre adaptif çözünürlük:\n\n| Frame | Grid | Hücre |\n|---|---|---|\n| 1 | 1×1 | 1280px |\n| 2 | 2×1 | 1024px |\n| 3–4 | 2×2 | 960px |\n| 5–6 | 3×2 | 800px |\n| 7–9 | 3×3 | 720px |\n| 10–12 | 4×3 | 640px |\n| 13+ | 3×3 sayfalar | 720px |\n\n12'den fazla frame otomatik olarak birden fazla JPEG sayfasına bölünür.\n\n## Bağımlılıklar\n\n| Paket | Amaç |\n|---|---|\n| `yt-dlp` | YouTube transcript + video indirme |\n| `Pillow` | Storyboard grid oluşturma |\n| `spaCy` | NLP timestamp analizi |\n| `scikit-learn` | TF-IDF self-learning |\n| `webvtt-py` | VTT altyazı parse |\n| `click` | CLI |\n| `groq` | Whisper API fallback |\n\n## Sorun Giderme\n\n| Hata | Çözüm |\n|---|---|\n| `ffmpeg not found` | `brew install ffmpeg` |\n| `No module named spacy` | `pip install spacy && python -m spacy download en_core_web_sm` |\n| `Cannot access video` | Video private, yaş kısıtlı veya bölge engelinde olabilir |\n| Transcript bulunamadı | `--groq-api-key` ile Whisper fallback kullan |\n| `Module import error` | Venv aktif mi kontrol et: `source .venv\u002Fbin\u002Factivate && pip install -e .` |\n","该项目旨在通过分析YouTube视频内容，生成包含字幕和关键帧的storyboard，并使用Claude Vision LLM进行进一步解析，最终将结果以Obsidian格式保存。其核心功能包括基于NLP技术的智能时间戳选取、FFmpeg处理选定片段以及利用Vision LLM对视觉信息进行理解与归纳。特别适用于需要从视频中提取并整理知识的情景，如在线课程学习笔记制作或研究资料整理等。该工具不仅限于文本信息，还能捕捉屏幕显示但未被口头表达的重要数据，从而提供更全面的内容概览。",2,"2026-06-11 03:59:30","CREATED_QUERY"]