{
  "markdown": "# notebooklm-py\n<p align=\"left\">\n  <img src=\"https://raw.githubusercontent.com/teng-lin/notebooklm-py/main/notebooklm-py.png\" alt=\"notebooklm-py logo\" width=\"128\">\n</p>\n\n**A Comprehensive Google Gemini Notebook Skill & Unofficial Python API.** Full programmatic access to NotebookLM's features—including capabilities the web UI doesn't expose—via Python, CLI, and AI agents like Claude Code, Codex, and OpenClaw.\n\n> **Note (July 2026):** Google rebranded **NotebookLM** to **[Gemini Notebook](https://blog.google/innovation-and-ai/products/gemini-notebook/notebooklm-gemini-notebook/)**. It remains the same standalone product (now also reachable inside the Gemini app), existing links redirect automatically, and this library drives the same underlying service and works unchanged. The package keeps the `notebooklm-py` name.\n\n[![PyPI version](https://img.shields.io/pypi/v/notebooklm-py.svg)](https://pypi.org/project/notebooklm-py/)\n[![Python Version](https://img.shields.io/badge/python-3.10%20%7C%203.11%20%7C%203.12%20%7C%203.13%20%7C%203.14-blue)](https://pypi.org/project/notebooklm-py/)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n[![Tests](https://github.com/teng-lin/notebooklm-py/actions/workflows/test.yml/badge.svg)](https://github.com/teng-lin/notebooklm-py/actions/workflows/test.yml)\n<p>\n  <a href=\"https://trendshift.io/repositories/19116\" target=\"_blank\"><img src=\"https://trendshift.io/api/badge/repositories/19116\" alt=\"teng-lin%2Fnotebooklm-py | Trendshift\" style=\"width: 250px; height: 55px;\" width=\"250\" height=\"55\"/></a>\n</p>\n\n**Source & Development**: <https://github.com/teng-lin/notebooklm-py>\n\n> **⚠️ Unofficial Library - Use at Your Own Risk**\n>\n> This library uses **undocumented Google APIs** that can change without notice.\n>\n> - **Not affiliated with Google** - This is a community project\n> - **APIs may break** - Google can change internal endpoints anytime\n> - **Rate limits apply** - Heavy usage may be throttled\n>\n> Best for prototypes, research, and personal projects. See [Troubleshooting](docs/troubleshooting.md) for debugging tips.\n\n## What You Can Build\n\n🤖 **AI Agent Tools** - Integrate NotebookLM into Claude Code, Codex, and other LLM agents. Ships with a root [NotebookLM skill](SKILL.md) for GitHub and `npx skills add` discovery, local `notebooklm skill install` support for Claude Code and `.agents` skill directories, and repo-level Codex guidance in [`AGENTS.md`](AGENTS.md).\n\n📚 **Research Automation** - Bulk-import sources (URLs, PDFs, YouTube, Google Drive), run web/Drive research queries with auto-import, and extract insights programmatically. Build repeatable research pipelines.\n\n🎙️ **Content Generation** - Generate Audio Overviews (podcasts), videos, slide decks, quizzes, flashcards, infographics, data tables, mind maps, and study guides. Full control over formats, styles, and output.\n\n📥 **Downloads & Export** - Download all generated artifacts locally (MP3, MP4, PDF, PNG, CSV, JSON, Markdown). Export to Google Docs/Sheets. **Features the web UI doesn't offer**: batch downloads, quiz/flashcard export in multiple formats, mind map JSON extraction.\n\n## Use Cases & Recipes\n\nNotebookLM is a **grounded** engine: Gemini does the heavy reading and answers from *your* sources with citations. The winning pattern is to let it do the expensive analysis while your agent (Claude Code, Codex, …) orchestrates and handles the final mile — using NotebookLM as a **zero-token synthesis + memory layer an agent drives in a loop**, and pulling structured artifacts **out** in bulk and in richer, scriptable formats. Recipes people build on top of this library, grouped by what they use NotebookLM *as*:\n\n**Spend fewer tokens** — let NotebookLM do the expensive thinking:\n\n- **🪙 Zero-token research offload** — Throw 30 documents into a notebook, let Gemini do the heavy analysis, and have your agent spend tokens only on the final polish. The agent just orchestrates (`create` → `source add` → `ask`); the reasoning happens server-side. *In the wild: [a four-workflow guide to stop Claude Code burning tokens on NotebookLM](https://x.com/hooeem/status/2042293751805329445).*\n- **🧠 Knowledge distillation → a permanent skill** — Run [Deep Research](docs/cli-reference.md#source-add-research) (`source add-research \"your topic\" --mode deep`) or load a doc corpus, let NotebookLM's Gemini condense it, and bake the result into a `SKILL.md` your agent loads at startup — **build once, reuse with zero runtime tokens or network calls**, git-versioned and immune to UI drift. A packaged domain expert without hand-curating sources. (Dumping raw docs into a skill flattens the hierarchy; NotebookLM condensing first is what makes it work.)\n- **✅ Self-validating skills** — Have NotebookLM generate the *eval set* — a quiz straight from your sources — to grade an agent skill against ground truth instead of test questions you'd bias yourself. Build the skill, run it against the NotebookLM-authored evals, iterate to a pass. *In the wild: [a skill that scored 4/10 on the first pass and 10/10 after one iteration, graded by a NotebookLM-generated quiz](https://x.com/nurijanian/status/2037136490157986277).*\n\n**Give your agent memory** — persistent, grounded recall:\n\n- **💾 Persistent cross-session memory** — Keep a \"Master Brain\" notebook; a wrap-up step appends each session's decisions and fixes as notes (`note create` / `ask --save-as-note`), and a line in your `CLAUDE.md` queries it (`ask`) at the start of the next session. Storage and recall live on Google's infrastructure.\n- **🧩 Grounded memory for coding agents** — Expose a notebook of your internal docs/RFCs/architecture over the [MCP server](docs/mcp-guide.md) (or plain `ask`) so an agent answers from *your* code with citations rather than plausible-sounding guesses — a zero-infra alternative to standing up your own vector DB and embedding pipeline. *In the wild: [turning a notebook into the source-grounded \"project brain\" a coding agent consults before it writes code](https://medium.com/@pradeep00271/every-software-project-needs-a-project-brain-5cbc33917160).*\n- **🪞 Query your own notes / journal** — Load years of daily notes, meeting logs, or a journal and `ask` for **cited** answers *across your own history* — surfacing long-term patterns a keyword search can't (e.g. a weekly summary synthesized from 282 daily notes, every claim linked back to the entry it came from). *In the wild: [chatting with a year of daily notes as a cited knowledge base](https://artemxtech.substack.com/p/notebooklm-has-a-knowledge-graph).*\n\n**Turn your sources into answers & artifacts** — cited responses, generated media, and exports:\n\n- **📞 Grounded knowledge base / troubleshooting oracle (RAG)** — Load product docs, FAQs, RFCs, and past tickets, then `ask --json` for **source-grounded, cited** answers for support, on-call, or internal Q&A. Or have an agent point it at an entire fast-moving tool's docs — more than the agent can hold in context — as a **troubleshooting oracle** it queries the moment it hits an error. *In the wild: [OpenClaw drove the library to scrape all 524 pages of `docs.openclaw.ai`, dedupe the duplicate translations, and audit it down to 269 clean sources (missing/extra/duplicate = 0)](https://x.com/onenewbite/status/2024819940327379286).*\n- **🔁 Multi-format content repurposing** — One source set, every format: `generate audio` (podcast), `generate video`, `generate slide-deck`, plus a `generate report` blog draft, `generate quiz`, and `generate flashcards` — fan a single notebook out across channels.\n- **📤 Bulk, scriptable exports** — Pull mind maps as JSON, flashcards/quizzes as JSON/Markdown/HTML, data tables as CSV, and reports as Markdown — **in bulk, to local files, straight into Anki, your mind-mapping tool, or a repo** (`download <type>` / `download <type> --all`). The programmatic \"get data *out*\" half of the library, not just \"put sources in.\"\n- **🕸️ Obsidian / knowledge-graph sync** — Run the CLI from your vault root so downloaded artifacts (reports, mind-map JSON, transcripts) land as files in your knowledge graph; community skills built on this library even resolve NotebookLM's citation markers into Obsidian `[[wikilinks]]`. Pair with a podcast overview for an audio digest of your notes. *In the wild: [\"Claude Code + NotebookLM + Obsidian = GOD MODE\"](https://www.youtube.com/watch?v=kU3qYQ7ACMA).*\n\n**Run it unattended, at scale, or on the go** — scheduled, headless, and remote:\n\n- **🚨 Incident runbook generator** — On an alert, spin up a notebook of the relevant docs, ask targeted diagnostic questions, and generate a briefing-doc report (`generate report --format briefing-doc --wait`, then `download report`) as an automated runbook.\n- **📚 Curriculum / study-set builder** — Scrape a syllabus or developer roadmap, create one notebook per topic (with deliberate pacing to dodge rate limits), and bulk-generate podcasts, quizzes, and flashcards for each.\n- **📰 Scheduled audio briefings** — Pair `auth refresh --quiet` (cron/launchd/systemd) with `generate audio` to publish a fresh personalized briefing to a podcast feed on a schedule.\n- **📱 NotebookLM from your phone, agent-driven** — Self-host the [remote MCP connector](docs/mcp-guide.md#remote-deployment-docker--a-tunnel) behind a Cloudflare/Tailscale tunnel and add it as a custom connector **on the web** (claude.ai Connectors, or ChatGPT with Developer Mode). Then drive the full toolset — deep research, source ingestion, studio generation, cited Q&A — from the **claude.ai mobile app** on the go (ChatGPT's MCP connectors are web-only), chained with your other MCP tools, instead of app-hopping.\n\nThese combine ordinary library primitives — see the [CLI Reference](docs/cli-reference.md) and [Python API](docs/python-api.md). The agent-side glue (skills, scheduling, vault layout) lives in your own setup, not this package. Per-notebook source counts depend on your Google account tier — split across notebooks if you hit a cap.\n\n**New here?** Start with a walkthrough: [Claude Code + NotebookLM = CHEAT CODE (video)](https://www.youtube.com/watch?v=usTeU4Uh0iM) · [5 demos + 50 use cases, with prompts](https://aiblewmymind.substack.com/p/notebooklm-claude-code-use-cases).\n\n## Ways to Use\n\n| Method | Best For |\n|--------|----------|\n| **Python API** | Application integration, async workflows, custom pipelines |\n| **CLI** | Shell scripts, quick tasks, CI/CD automation |\n| **MCP Server** | Claude Desktop/Code, Codex, etc. — locally via stdio, or as a self-hosted remote connector (behind a Cloudflare/Tailscale tunnel) reachable from claude.ai and ChatGPT, mobile included. |\n| **REST Server** | Local automation over guarded HTTP routes without spawning a CLI process per call |\n| **Agent Integration** | Claude Code, Codex, LLM agents, natural language automation |\n\n### API backends\n\nThe default backend is the established Web (`batchexecute`) transport. This\nrelease also provides an opt-in Android backend that uses NotebookLM's mobile\ngRPC service and bearer authentication. Select it for the CLI with\n`--backend android` (or `NOTEBOOKLM_BACKEND=android`), or for the Python API\nwith `NotebookLMClient.from_storage(backend=\"android\")` / `NotebookLMClient(...,\nbackend=\"android\")`.\n\nInstall the Android runtime explicitly; it is intentionally not included in\nthe `all` extra:\n\n```bash\npip install \"notebooklm-py[android,browser]\"\nnotebooklm login --master-token --account you@example.com\nnotebooklm --backend android list --json\n```\n\nAndroid reads `master_token.json` from the selected profile and mints\nshort-lived mobile bearer tokens as needed, so typed namespace calls do not\ndepend on a browser-cookie session, Web build labels, or Web RPC IDs. All\neleven public namespaces are available without falling back to the Web\ntransport. Because the durable master token is a powerful full-account\ncredential, use a dedicated account and protect the profile carefully. See the\n[Android backend guide](docs/android/README.md) for setup and protocol details.\n\n## Features\n\n### Complete NotebookLM Coverage\n\n| Category | Capabilities |\n|----------|--------------|\n| **Notebooks** | Create, copy (including sources and Studio artifacts), list, rename, delete |\n| **Sources** | URLs, YouTube, files (PDF, text, Markdown, Word, EPUB, audio, video, images), Google Drive, pasted text; refresh, get guide/fulltext |\n| **Chat** | Questions, conversation history, custom personas, suggested starter prompts |\n| **Notes** | Create, list, rename, delete, save chat answers, save conversation history |\n| **Source Labels** | AI-generated or manual topic labels; add/remove source membership; filter sources by label |\n| **Research** | Web and Drive research agents (fast/deep modes) with auto-import |\n| **Sharing** | Public/private links, user permissions (viewer/editor), view level control |\n\n### Content Generation (All Artifact Types)\n\n| Type | Options | Download Format |\n|------|---------|-----------------|\n| **Audio Overview** | 4 formats (deep-dive, brief, critique, debate), 3 lengths, 50+ languages | MP3 |\n| **Video Overview** | 4 formats (explainer, brief, cinematic, short), 8 visual styles (+ auto/custom), plus a dedicated `cinematic-video` CLI alias | MP4 |\n| **Slide Deck** | Detailed or presenter format, adjustable length; individual slide revision | PDF, PPTX |\n| **Infographic** | 3 orientations, 3 detail levels | PNG |\n| **Quiz** | Configurable quantity and difficulty | JSON, Markdown, HTML |\n| **Flashcards** | Configurable quantity and difficulty | JSON, Markdown, HTML |\n| **Report** | Briefing doc, study guide, blog post, or custom prompt | Markdown |\n| **Data Table** | Custom structure via natural language | CSV |\n| **Mind Map** | Hierarchical node tree — **two kinds**: note-backed JSON or the newer interactive studio map (`--kind` / `MindMapKind`) | JSON |\n\n### Beyond the Web UI\n\nProgrammatic, batch, and local-file capabilities the API/CLI make easy — several in richer formats, or at a scale, than clicking through the web app:\n\n- **Batch downloads** - Download all artifacts of a type at once\n- **Quiz/Flashcard export** - Get structured JSON, Markdown, or HTML files\n- **Mind map data extraction** - Export hierarchical JSON for visualization tools\n- **Data table CSV export** - Download structured tables as spreadsheets\n- **Slide deck as PPTX or PDF** - Download editable PowerPoint or PDF files\n- **Slide revision** - Modify individual slides with natural-language prompts\n- **Report template customization** - Append extra instructions to built-in format templates\n- **Save chat history to notes** - Persist a whole Q&A conversation (not just a single answer) as a notebook note\n- **Source fulltext access** - Retrieve the indexed text content of any source\n- **Programmatic sharing** - Manage permissions without the UI\n\n## Installation\n\nThe full install guide — six personas (agent, end-user, library, headless, contributor, power-user), optional extras matrix, platform notes — lives in **[docs/installation.md](docs/installation.md)**.\n\n**Quickest start** (CLI users and AI agents) — install the CLI with `uv tool` (recommended) or `pipx`:\n\n```bash\nuv tool install \"notebooklm-py[browser]\"   # or: pipx install \"notebooklm-py[browser]\"\nnotebooklm login                           # first run auto-downloads Chromium (~170 MB), then Google sign-in\nnotebooklm auth check --test --json        # verify: expect \"status\": \"ok\"\n```\n\n**Why `uv tool` / `pipx`?** They install the CLI into its own isolated environment and put `notebooklm` on your `PATH` — no dependency clashes with other tools, a one-line upgrade (`uv tool upgrade notebooklm-py`) or uninstall, and, crucially, they work on modern macOS (Homebrew Python) and Debian/Ubuntu where a system-wide `pip install` is blocked with `error: externally-managed-environment` ([PEP 668](https://peps.python.org/pep-0668/)). No `uv` yet? `curl -LsSf https://astral.sh/uv/install.sh | sh` (or `brew install uv` / `winget install astral-sh.uv`).\n\n**Prefer plain `pip`?** It works the same **inside a virtualenv** (and directly on Windows, where Python isn't externally-managed):\n\n```bash\npython3 -m venv .venv && source .venv/bin/activate   # Windows: .venv\\Scripts\\activate\npip install \"notebooklm-py[browser]\"\n```\n\n**As a library** (embedded in your app — no Playwright, no Chromium):\n\n```bash\nuv add notebooklm-py                    # or, inside a virtualenv: pip install notebooklm-py\n```\n\nIf `playwright install chromium` fails on Linux with `TypeError: onExit is not a function`, see the [Linux workaround](docs/troubleshooting.md#linux). **Contributors:** see [CONTRIBUTING.md](CONTRIBUTING.md).\n\n\n### Authentication & Access\n\nFlexible auth for local dev, headless servers, and multi-tenant setups:\n\n- **Three ways to get cookies** - Interactive Playwright login (default), import from an already-signed-in browser (`login --browser-cookies chrome`, no Playwright), or a durable **master token**.\n- **Master-token auth** - Mints fresh web cookies **on demand** with no per-session browser (`login --master-token --account you@example.com`), so it self-heals expired sessions unattended — the auth model for servers, CI, and the remote MCP connector (claude.ai / ChatGPT).\n- **Multi-account profiles** - Switch between Google accounts without re-authenticating.\n\n### Agent Setup\n\n**Option 1 — CLI install**:\n\n```bash\nnotebooklm skill install\n```\n\nInstalls the skill into `~/.claude/skills/notebooklm` and `~/.agents/skills/notebooklm`.\n\n**Option 2 — `npx` install** (via the open skills ecosystem):\n\n```bash\nnpx skills add teng-lin/notebooklm-py\n```\n\nFetches the canonical [SKILL.md](SKILL.md) directly from GitHub.\n\n## Quick Start\n\n<p align=\"center\">\n  <a href=\"https://asciinema.org/a/767284\" target=\"_blank\"><img src=\"https://asciinema.org/a/767284.svg\" width=\"600\" /></a>\n  <br>\n  <em>16-minute session compressed to 30 seconds</em>\n</p>\n\n### CLI\n\n```bash\n# 1. Authenticate (opens browser)\nnotebooklm login\n# Or use Microsoft Edge (for orgs that require Edge for SSO)\n# notebooklm login --browser msedge\n# Or reuse cookies from an already-logged-in browser session\n# notebooklm login --browser-cookies chrome\n# notebooklm login --browser-cookies 'chrome::Profile 1'  # one Chromium profile\n# (combine with --profile to populate a specific profile;\n#  use --account / --all-accounts after auth inspect when several\n#  Google accounts are signed in)\n\n# 2. Create a notebook and add sources\nnotebooklm create \"My Research\"\nnotebooklm use <notebook_id>\nnotebooklm source add \"https://en.wikipedia.org/wiki/Artificial_intelligence\"\nnotebooklm source add \"./paper.pdf\"\n\n# 3. Chat with your sources\nnotebooklm ask \"What are the key themes?\"\nnotebooklm ask --prompt-file ./long_question.txt  # Read question from file\n\n# 4. Generate content (use --prompt-file for long prompts)\nnotebooklm generate audio \"make it engaging\" --wait\nnotebooklm generate video --style whiteboard --wait\nnotebooklm generate cinematic-video \"documentary-style summary\" --wait\nnotebooklm generate quiz --difficulty hard\nnotebooklm generate flashcards --quantity more\nnotebooklm generate slide-deck\nnotebooklm generate infographic --orientation portrait\nnotebooklm generate mind-map                       # interactive studio map (default); --kind note-backed for the JSON tree\nnotebooklm generate data-table \"compare key concepts\"\n\n# 5. Download artifacts\nnotebooklm download audio ./podcast.m4a\nnotebooklm download video ./overview.mp4\nnotebooklm download cinematic-video ./documentary.mp4\nnotebooklm download quiz --format markdown ./quiz.md\nnotebooklm download flashcards --format json ./cards.json\nnotebooklm download slide-deck ./slides.pdf\nnotebooklm download infographic ./infographic.png\nnotebooklm download mind-map ./mindmap.json\nnotebooklm download data-table ./data.csv\n```\n\nOther useful CLI commands:\n\n```bash\nnotebooklm auth check --test         # Diagnose auth/cookie issues\nnotebooklm auth refresh --quiet      # One-shot cookie keepalive (for cron / launchd / systemd)\nnotebooklm auth refresh --browser-cookies chrome  # Re-extract and repair account routing\nnotebooklm auth inspect --browser 'chrome::Profile 1'  # Preview one Chromium profile\nnotebooklm agent show codex          # Print bundled Codex instructions\nnotebooklm agent show claude         # Print bundled Claude Code skill template\nnotebooklm language list             # List supported output languages\nnotebooklm metadata --json           # Export notebook metadata and sources\nnotebooklm usage                     # Show live compute usage and reset times\nnotebooklm usage --json              # Export the full usage snapshot, including categories\nnotebooklm share status              # Inspect sharing state\nnotebooklm source add-research \"AI\" --import-all  # web research + import found sources\nnotebooklm skill status              # Check local agent skill installation\nnotebooklm profile list              # List all Google account profiles\nnotebooklm profile switch work       # Switch active account profile\n```\n\nUse `--prompt-file PATH` with `ask`, prompt-based `generate` commands, and `source add-research` when the text is too long for the shell command line. This reads prompt/query text from a file and is separate from `source add ./file.pdf`, which still uploads that file as a NotebookLM source.\n\n### Python API\n\n```python\nimport asyncio\nfrom notebooklm import NotebookLMClient, MindMapKind\n\n\nasync def main():\n    async with NotebookLMClient.from_storage() as client:\n        # Create notebook and add sources\n        nb = await client.notebooks.create(\"Research\")\n        await client.sources.add_url(nb.id, \"https://example.com\", wait=True)\n\n        # Chat with your sources\n        result = await client.chat.ask(nb.id, \"Summarize this\")\n        print(result.answer)\n\n        # Generate content (podcast, video, quiz, etc.)\n        status = await client.artifacts.generate_audio(nb.id, instructions=\"make it fun\")\n        await client.artifacts.wait_for_completion(nb.id, status.task_id)\n        await client.artifacts.download_audio(nb.id, \"podcast.m4a\")\n\n        # Generate quiz and download as JSON\n        status = await client.artifacts.generate_quiz(nb.id)\n        await client.artifacts.wait_for_completion(nb.id, status.task_id)\n        await client.artifacts.download_quiz(nb.id, \"quiz.json\", output_format=\"json\")\n\n        # Generate a mind map via the unified client.mind_maps API (issue #1256) —\n        # two kinds: the newer MindMapKind.INTERACTIVE studio map (shown; polled to\n        # completion by default) or MindMapKind.NOTE_BACKED JSON. Both export via:\n        mm = await client.mind_maps.generate(nb.id, kind=MindMapKind.INTERACTIVE)\n        await client.artifacts.download_mind_map(nb.id, \"mindmap.json\", mm.id)\n\n\nasyncio.run(main())\n```\n\n## Documentation\n\n- **[Installation](docs/installation.md)** - Environment, extras, login, and deployment setup\n- **[Android Backend](docs/android/README.md)** - Mobile gRPC setup, credentials, and protocol notes\n- **[CLI Reference](docs/cli-reference.md)** - Complete command documentation\n- **[Python API](docs/python-api.md)** - Full API reference\n- **[MCP Guide](docs/mcp-guide.md)** - MCP server setup, transports, and tool reference\n- **[REST API Server](docs/installation.md#rest-api-server)** - Experimental localhost FastAPI server\n- **[Configuration](docs/configuration.md)** - Storage and settings\n- **[Quota & Tier Limits](docs/quota-limits.md)** - Per-tier notebook/source/studio limits and how they map to `AccountLimits.tier`\n- **[Release Guide](docs/releasing.md)** - Release checklist and packaging verification\n- **[Troubleshooting](docs/troubleshooting.md)** - Common issues and solutions\n- **[Credential Security](docs/security.md)** - Secret handling and trust boundaries\n- **[API Stability](docs/stability.md)** - Versioning policy and stability guarantees\n- **[Upgrading to v0.8.0](docs/upgrading-to-0.8.0.md)** - Breaking-change migration guide for the v0.8.0 error-and-return contract\n\n### For Contributors\n\n- **[Architecture](docs/architecture.md)** - Architectural overview and design principles\n- **[Development Guide](docs/development.md)** - Architecture, testing, and releasing\n- **[RPC Development](docs/rpc-development.md)** - Protocol capture and debugging\n- **[RPC Reference](docs/rpc-reference.md)** - Payload structures\n- **[Changelog](CHANGELOG.md)** - Version history and release notes\n- **[Security](SECURITY.md)** - Security policy and credential handling\n\n## License\n\nMIT License. See [LICENSE](LICENSE) for details.\n",
  "bytes": 24622,
  "sha": "8b831ba175fc6bee01d7e06980acaccb2bd7dde9f6d95cbf22486b3057c43905",
  "repo_slug": "teng-lin/notebooklm-py",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/skl_teng_lin_notebooklm_py_notebooklm_ff4c0df6/readme"
}