blog

Claude Code + NotebookLM + Obsidian: dựng pipeline nghiên cứu, và nửa cầu nối không chính chủ

Cách ghép Claude Code, NotebookLM và Obsidian thành pipeline nghiên cứu: skill nào có sẵn, vì sao NotebookLM không có API cho tài khoản cá nhân, và cái giá phải trả khi ghép ba công cụ này.

Claude CodeNotebookLMObsidianMCPAI Agent
Claude Code ở giữa nối NotebookLM bên trái bằng đường nét đứt nhãn reverse-engineer, nối Obsidian bên phải bằng đường liền nhãn MCP

Ghép Claude Code, NotebookLM và Obsidian thành pipeline nghiên cứu tự động làm được thật, một phần đã có người đóng gói thành package sẵn dùng. Nhưng không có lệnh notebooklm login nào cho "API chính thức": NotebookLM không phát API cho tài khoản cá nhân, mọi cầu nối agent vào nó đều là hàng reverse-engineer, đi kèm rủi ro khoá tài khoản Google.

Skill Creator có thật, nhưng lệnh cài không phải /plugin install skill-creator suông

Skill trong Claude Code chỉ là một thư mục chứa SKILL.md: mô tả, điều kiện kích hoạt, các bước. Claude tự nạp khi thấy liên quan, hoặc gọi thẳng bằng /tên-skill. Skill Creator là plugin thật của Anthropic, không phải công cụ bên thứ ba.

Nó nằm ở marketplace claude-plugins-official, không phải marketplace anthropics/skills (nơi chứa document-skills, example-skills). Lẫn hai marketplace này là lỗi cài đặt phổ biến nhất. Lệnh đúng, theo tài liệu Claude Code:

text
/plugin install skill-creator@claude-plugins-official

Báo lỗi Marketplace "claude-plugins-official" not found thì thêm marketplace trước: /plugin marketplace add anthropics/claude-plugins-official, rồi cài lại. Cài xong mà thấy dòng Run /reload-plugins to activate, chạy đúng lệnh đó thì skill mới nạp trong session hiện tại.

Ngoài sinh skill từ một câu mô tả, Skill Creator còn tự động hoá cả vòng lặp so sánh: lưu test case vào evals/evals.json, chạy mỗi test case trong một sub-agent riêng để context sạch, chấm từng assertion vào grading.json, gộp tỷ lệ pass giữa bản có skill và không skill vào benchmark.json.

Nó còn so sánh mù hai phiên bản skill trước khi quyết định bản nào tốt hơn. Không dừng lại ở "tạo skill xong": Skill Creator đo được skill đó có làm đúng việc hay không.

Skill YouTube search dựng bằng yt-dlp, và đã có người làm sẵn

yt-dlp tìm video bằng cú pháp ytsearchN:từ khoá, không cần API key của YouTube:

bash
yt-dlp -j "ytsearch5:Claude Code MCP servers"

Cờ -j trả JSON, đủ để một skill parse ra tiêu đề, kênh, lượt xem, ngày đăng. Không cần tự viết từ đầu: youtube-search-skill đã đóng gói sẵn, copy vào .claude/skills/youtube-search/ là chạy.

Nó có hai chế độ: đầy đủ (kèm số subscriber, khoảng một tới hai giây mỗi kết quả) và nhanh (dùng yt-dlp flat-playlist mode, nhanh gấp mười lần nhưng bỏ qua số subscriber). Output mẫu:

text
Claude Code Tutorial for Beginners
https://www.youtube.com/watch?v=eMZmDH3T2bY
Channel: Kevin Stratvert · Subscribers: 4.2M
Views: 539.8K · Duration: 14:43 · Uploaded: Dec 22, 2025

NotebookLM không có API cho tài khoản cá nhân, mọi cầu nối agent đều reverse-engineer

Google có phát hành NotebookLM Enterprise API, nhưng từ 9/2025 và chỉ cho khách Enterprise/Workspace, không phải tài khoản cá nhân dùng free hay Pro. Với tài khoản cá nhân, mọi công cụ tự động hoá đều đi vòng qua giao diện web, theo ba cách khác nhau:

Dự ánCách hoạt độngXác thực
notebooklm-pyĐiều khiển trình duyệt qua PlaywrightĐăng nhập tương tác, hoặc nhập cookie có sẵn, hoặc master token tự làm mới cookie
notebooklm-automationGọi thẳng endpoint nội bộ batchexecute mà NotebookLM dùng, trích cookie qua Chrome DevTools ProtocolCookie phiên đăng nhập thật
notebooklm-skillCLI + MCP server, bọc lại một trong hai cách trênTương tự

Cả ba tự nhận là không chính thức, và notebooklm-automation nói thẳng trong README:

Using unofficial APIs violates Google's ToS. Use a dedicated/burner Google account. Don't use your primary work/personal account. Google may suspend accounts detected as automated.

Đừng nhầm bước xác thực này với đăng nhập kiểu Web3Forms hay Mailchimp: gọi là notebooklm login nhưng thực chất là chạy một client giả lập trình duyệt để vượt qua cơ chế không dành cho việc đó.

Dùng tài khoản Google chính để chạy pipeline này, đặc biệt loại chạy lặp theo lịch, nghĩa là chấp nhận rủi ro tài khoản đó bị khoá vì bị nhận diện là bot.

Sau khi đổi tên thành Gemini Notebook, deliverable thật có gì

NotebookLM không còn tên đó nữa. Google đổi tên nó thành Gemini Notebook ngày 16/7/2026, giữ nguyên là sản phẩm độc lập, thêm một "cloud computer" riêng cho mỗi notebook để chạy code phân tích dữ liệu trên chính nguồn đã nạp.

Tính tới lúc đổi tên, Google nói có hơn 30 triệu người dùng và hơn 600.000 tổ chức đang dùng nó.

Studio panel hiện tại tạo bảy loại deliverable: Audio Overview (dạng podcast), Cinematic Video Overview, slide deck, infographic, flashcard, quiz, và bảng dữ liệu (Data Table).

Slide deck từ 6/2/2026 chỉnh được từng slide bằng prompt kiểu "fix slide 3", và xuất PPTX trực tiếp qua nút tải xuống. Layout PPTX là AI dựng lại nên không giống pixel với bản xem trên web.

Ghép cả pipeline vào một skill duy nhất bằng notebooklm-skill

Muốn gộp Research, Synthesis, Content, Publishing thành một skill duy nhất thay vì gọi rời từng bước, dùng package có sẵn: notebooklm-skill, cài bằng:

bash
git clone https://github.com/claude-world/notebooklm-skill.git
cd notebooklm-skill && ./install.sh

Nó có sẵn bốn pipeline dựng trước thay vì phải mô tả lại cho Skill Creator mỗi lần: research-to-article (biến nghiên cứu thành bài viết), research-to-social, batch-digest (xử lý hàng loạt từ RSS feed), và generate-all. Nối vào Claude Code qua MCP thay vì gọi CLI trực tiếp:

json
{
  "mcpServers": {
    "notebooklm": {
      "command": "uvx",
      "args": ["--from", "notebooklm-skill", "notebooklm-mcp"]
    }
  }
}

README của chính package này nhắc lại đúng cảnh báo ở mục trên: đây là tích hợp không chính thức với API web của NotebookLM, có thể gãy bất cứ lúc nào Google đổi giao diện.

Obsidian không chỉ nhận file markdown, nó nối thẳng vào Claude Code qua MCP

Cách đơn giản nhất để nối Obsidian vào pipeline là ghi kết quả ra file markdown trong vault. Chạy được, nhưng bỏ phí một nửa: Claude Code đọc lại được vault qua filesystem, còn Obsidian thì không biết gì về những gì Claude vừa làm ngoài việc có thêm file mới.

obsidian-claude-code-mcp là plugin Obsidian dựng một MCP server, mở cổng WebSocket mặc định 22360 cho Claude Code và HTTP/SSE cho Claude Desktop. Cài plugin trong Obsidian, mở claude trong terminal, gõ /ide, chọn "Obsidian" từ danh sách, kết nối tự thiết lập không cần cấu hình thêm.

Từ đó Claude đọc file hiện đang mở, liệt kê cấu trúc vault, tạo và sửa note qua API của Obsidian thay vì chỉ ghi đè file trên đĩa. Khác biệt nằm ở chỗ vault biết được Claude vừa chạm vào đâu, chứ không phải chỉ thấy file mới xuất hiện.

Trước khi bật cả pipeline chạy tự động, năm điều đáng kiểm:

  • Marketplace đúng: claude-plugins-official cho skill-creator, không phải anthropics/skills
  • Tài khoản Google dùng cho NotebookLM: burner account, không phải account chính
  • Tần suất gọi: chạy dày dễ bị nhận diện là bot hơn chạy thưa
  • Điểm gãy: mọi cầu nối NotebookLM đều phụ thuộc giao diện web hiện tại, Google đổi UI là gãy ngay
  • MCP hay ghi file thô: MCP cho Claude ngữ cảnh hai chiều, ghi file thô thì Claude chỉ thấy được nửa sau

Cái giá thật của việc ghép ba mảnh này

Tôi chưa tự chạy trọn pipeline này trên máy thật, mọi thứ trong bài đối chiếu qua tài liệu và mã nguồn của từng dự án nói trên, không phải log chạy thật. Cái duy nhất chỉ chạy thật mới thấy: notebooklm-py hay notebooklm-automation có bị rate limit hay yêu cầu xác minh thêm khi add năm nguồn liên tiếp trong một notebook hay không, không tài liệu nào của ba dự án nói rõ con số.

Đánh đổi rõ nhất: Skill Creator và MCP cho Obsidian là hạ tầng chính chủ, ổn định, có tài liệu. Đoạn nối vào NotebookLM là mảnh yếu nhất trong cả pipeline, vì nó dựa trên thứ không ai cam kết giữ nguyên. Ghép ba công cụ này được, nhưng dùng account phụ cho phần NotebookLM và đừng đặt lịch chạy nó qua đêm không giám sát.

Bài viết liên quan

tất cả bài viết →