Quy trình Zalo Agent -> NotebookLM: từ tin nhắn Zalo tới infographic, audio, video, slide
Chủ bot nhắn trên Zalo, bot nạp tài liệu vào một sổ tay NotebookLM riêng cho cuộc chat, tạo nội dung Studio chạy nền rồi tự tải file về gửi lại. Mọi bước đi qua máy chủ NotebookLM (Docker, Chrome headless) trên chính VPS.
Bạn đưa Bot làm Trả về Chốt chặn (do mã kiểm, không nhờ AI)
Chủ bot nhắn cho agent trên Zalo, ví dụ: "Tạo infographic từ file này" hoặc "Làm podcast tóm tắt tài liệu"
BƯỚC 1
Yêu cầu được nhận và qua cổng kiểm quyền
tức thì

Bạn đưa

  • Câu lệnh rõ việc muốn làm: nạp nguồn, hỏi, tạo, lấy lại, xem danh sách
  • File, link web hoặc link YouTube đính kèm cùng lượt (nếu có)

Bot làm

  • Model chọn hành động của tool notebooklm: them_nguon / hoi / tao / lay / danh_sach
  • Đọc lại cấu hình NOTEBOOKLM_API_URL và trần ngày từ dashboard

Chốt chặn

  • Cửa 1: tool không vào schema khi chưa cấu hình máy chủ, hoặc người nhắn không phải chủ bot (trừ khi bật NOTEBOOKLM_PUBLIC)
  • Trong nhóm chỉ chạy ở lượt mà MỌI tin đều của chủ bot
  • Cửa 2: execute đọc lại DB và kiểm lần nữa
  • Trần NOTEBOOKLM_MAX_PER_DAY mỗi cuộc chat (mặc định 5)
Nhắn thử: Tạo infographic tóm tắt file PDF này giúp anh
BƯỚC 2
Mỗi cuộc chat có một sổ tay riêng
lần đầu khoảng 5-10 giây

Bot làm

  • Tra bảng notebooklm_notebooks theo tài khoản + cuộc chat
  • Chưa có thì POST /notebooks/create, lưu notebook_id và notebook_url
  • Mọi lời gọi sau đều gửi kèm notebook_url (PUT /activate của máy chủ không dùng được)

Trả về

notebook_url của sổ tay

Chốt chặn

  • Mọi lời gọi tới máy chủ NotebookLM đi qua hàng đợi tuần tự (máy chủ chỉ có một Chrome)
BƯỚC 3
Tài liệu được nạp vào sổ tay
vài giây tới 1 phút mỗi nguồn

Bạn đưa

  • Chữ dán thẳng, link web, link YouTube
  • Hoặc file PDF/Word/Excel/PowerPoint/ảnh gửi trong cùng lượt

Bot làm

  • Chữ, link, YouTube: POST /content/sources đúng loại nguồn
  • FILE: bot tự trích chữ (extractDocumentText), ảnh mô tả bằng mắt thuê (describeImage) rồi nạp dạng text
  • Giữ tên file làm tiêu đề nguồn

Trả về

Danh sách nguồn đã nạp + nguồn lỗi kèm lý do

Chốt chặn

  • Tối đa 5 tệp mỗi lượt, cắt 400.000 ký tự mỗi nguồn
  • Đường tải file gốc của máy chủ bị hỏng nên KHÔNG dùng; tệp không trích được chữ báo rõ, không im lặng
Nhắn thử: Nạp 3 file này vào sổ tay rồi tóm tắt cho anh
BƯỚC 4
Hỏi đáp hoặc tạo nội dung Studio chạy nền
hỏi 10-30 giây; infographic ~90 giây, audio ~5 phút, video ~10 phút

Bạn đưa

  • Câu hỏi về tài liệu, hoặc loại nội dung muốn tạo: infographic, audio, video, slide, bảng, báo cáo

Bot làm

  • hoi: POST /ask, trả lời kèm trích dẫn nguồn (sources.citations)
  • tao: trả lời ngay "đang làm", xếp hàng rồi POST /content/generate (chặn tới khi xong)
  • So danh sách Studio TRƯỚC và SAU để nhận ra đúng nội dung mới tạo

Trả về

Câu trả lời có trích dẫnNội dung mới trên Studio của sổ tay

Chốt chặn

  • Câu trả lời bọc wrapUntrustedContent (nội dung ngoài, không phải lệnh)
  • Cả bot một việc tạo mỗi lúc; việc hỏng được hoàn lượt trong ngày
Nhắn thử: Làm podcast 2 người bàn về tài liệu này
BƯỚC 5
File được tải về bằng phiên Google sống
vài giây, chờ thêm nếu link chưa sẵn

Bot làm

  • GET /content lấy mediaUrl của nội dung mới
  • Đọc cookie SỐNG từ hồ sơ Chrome của container (giải mã Cookies SQLite v10), không dùng state.json đã cũ
  • Audio M4A đổi sang MP3 bằng ffmpeg; slide/bảng không có file thì gửi link Google Slides/Sheets; báo cáo chữ ghi ra .md

Trả về

PNG infographicMP3 audioMP4 videoLink Slides/SheetsBáo cáo .md

Chốt chặn

  • Link trả 404/5xx thì thử lại tối đa 6 lần cách 20 giây; trả HTML là phiên hết hạn, dừng và báo
  • Chỉ tải từ host Google qua https
BƯỚC 6
Kết quả về Zalo, ghi vào lịch sử, có thể xin lại
tức thì

Bot làm

  • Gửi file vào đúng cuộc chat (deliverFile), ghi thẳng vào lịch sử vì lượt chat đã đóng
  • Hỏng thì nhắn một câu ngắn nêu đúng lý do, không im lặng
  • lay: gửi lại nội dung mới nhất cùng loại đã có, không trừ trần ngày

Trả về

Tin Zalo kèm fileDòng lịch sử để bot nhớ ở lượt sau

Chốt chặn

  • Giám sát mỗi 5 phút: máy chủ không phản hồi, mất đăng nhập Google, không đọc được cookie -> hiện ở Việc cần làm trên app điện thoại + Nhật ký
Nhắn thử: Gửi lại file audio vừa tạo
Cùng sổ tay, hỏi tiếp hoặc tạo thêm loại nội dung khác mà không phải nạp lại tài liệuSổ tay gắn với cuộc chat nên lượt sau vẫn dùng đúng nguồn đã nạp
Nguyên tắc xuyên suốt
Không chính thứcMáy chủ NotebookLM điều khiển Chrome bằng phiên Google thật. Dùng tài khoản Google riêng, không dùng tài khoản chính.
Mặc định chỉ chủ botNgười lạ không thấy tool. Mở cho mọi người là quyết định tường minh qua NOTEBOOKLM_PUBLIC.
Chỉ mở trong máyREST của máy chủ không có xác thực nên cổng 3000 chỉ nghe 127.0.0.1; noVNC 6080 chỉ trên IP Tailscale để đăng nhập Google.
Đo thật, không tin tài liệuHình dạng phản hồi, nút tải xuống, nạp file đều lệch tài liệu của repo gốc; bot chỉ dùng đường đã chạy được.
Không nuốt câmNguồn lỗi, link hết hạn, phiên mất đều có câu báo riêng; việc dở dang được nhắn lại.
Nền tảng dùng chung
roomi-fields/notebooklm-mcpDocker, REST 127.0.0.1:3000Chrome headless + noVNCđăng nhập Google một lầnextractDocumentTexttrích chữ PDF/Word/Excel/PPTdescribeImagemô tả ảnh (Providers > Vision)ffmpegM4A -> MP3Hàng đợi tuần tự + trần ngàynotebooklm-queueGiám sát 5 phútnotebooklm-health -> Việc cần làm
Sơ đồ mô tả bản tích hợp ngày 10/10/2026 (tool notebooklm, src/notebooklm/). Tính năng chỉ có ở bản phát triển, không nằm trong các bản bán.