Chrome is already installed automatically by setup_environment.py during first run. The manual installation instruction was a leftover from earlier development that caused confusion.
Fixes#3
Implements robust auth strategy based on MCP Server TypeScript implementation:
Auth Architecture Changes:
- Hybrid auth: persistent browser profile (user_data_dir) + manual cookie injection
- Fixes Playwright bug #36139: Session cookies now persist correctly
- Real Chrome via channel="chrome" instead of Chromium (cross-platform reliability)
- Remove automation detection: ignore_default_args=["--enable-automation"]
- Manual cookie injection from state.json for session cookie persistence
Technical Details:
- Python's launch_persistent_context doesn't support storage_state parameter (unlike TypeScript)
- Workaround: Launch with user_data_dir, then manually inject cookies via context.add_cookies()
- Browser profile stores: fingerprint + persistent cookies + cache
- state.json stores: ALL cookies including session cookies (expires=-1)
- This ensures both consistent fingerprinting AND reliable session cookie persistence
Files Changed:
- scripts/ask_question.py: Add hybrid auth + ignore_default_args
- scripts/auth_manager.py: Update setup_auth() and validate_auth() with new approach
- scripts/setup_environment.py: Install Chrome instead of Chromium
- requirements.txt: Add Chrome installation note
- README.md: Add Chrome installation section with rationale
- AUTHENTICATION.md: NEW - Complete auth architecture documentation
Why This Fixes Issue #2:
- Session cookies (without Expires) were lost on restart (Playwright bug)
- Chromium had cross-platform reliability issues
- Manual cookie injection ensures session cookies persist
- Real Chrome ensures consistent behavior across systems
References:
- Playwright Issue #36139: Session cookies not persisting
- Playwright Issue #14949: storage_state with persistent context
- Based on: notebooklm-mcp TypeScript implementation
Key improvements:
- Add Smart Discovery feature: auto-query notebooks for content before adding
- Fix browser parameter documentation (remove non-existent --headless)
- Add active notebook support with automatic fallback
- Improve error messages with library display when no notebook specified
- Enhance run.py with better debugging output
- Replace "zero hallucination" claims with accurate "source-grounded" terminology
- Document resources structure more clearly in SKILL.md
These changes make the skill more user-friendly and the documentation more honest about NotebookLM's capabilities.
- Add comparison table: Feed docs vs Web search vs Local RAG vs NotebookLM Skill
- Highlight key advantages: pre-processed knowledge, natural Q&A, multi-source correlation
- Add navigation link in top menu
- Consistent with MCP server README structure
Add NotebookLM integration skill for Claude Code:
- Browser automation for querying NotebookLM
- Library management for notebook organization
- Persistent authentication with Google
- Zero-hallucination research directly in Claude Code
Based on notebooklm-mcp server, adapted for Claude Skills architecture.