Yêu cầu trước khi bắt đầu
- Đã xong Bước 1: Cài Claude AI
- 1 tài khoản Zalo riêng dành cho bot — không dùng tài khoản Zalo cá nhân chính của bạn (xem lý do ở mục bẫy bên dưới)
Cách hoạt động (nói với Claude AI để nó tự dựng)
Đăng nhập tài khoản Zalo riêng cho bot
Yêu cầu Claude AI cài công cụ điều khiển Zalo qua dòng lệnh, rồi tự đăng nhập bằng tài khoản Zalo RIÊNG (không phải tài khoản chính bạn nhắn tin cho khách hằng ngày).
Dựng script cầu nối
Y hệt bước 2 bên Lark: 1 script chạy nền, lắng nghe tin nhắn gửi tới tài khoản Zalo của bot → tự chạy Claude Code trả lời → gửi lại qua Zalo.
Đặt lịch chạy 24/7 + gắn watchdog
Giống hệt cách đã làm ở Bước 3 (Lark) — đăng ký tác vụ nền tự chạy khi khởi động máy, cộng thêm 1 script canh gác riêng (độc lập hoàn toàn với watchdog bên Lark, không dùng chung).
⚠ Bẫy đã gặp thật + cách gỡ
1. Dùng tài khoản Zalo chính của mình làm bot thì bot không nhận được tin gì cả
Zalo (kênh không chính thức) không đẩy sự kiện tin nhắn về cho chính chủ tài khoản gửi cho mình — nếu bạn tự nhắn cho chính tài khoản của mình, script sẽ không bao giờ "thấy" tin nhắn đó.
Cách gỡ: luôn dùng 1 tài khoản Zalo THỨ HAI, độc lập, chỉ để làm bot — bạn nhắn từ tài khoản chính sang tài khoản bot, script mới nhận được sự kiện.
2. Gửi tin nhắn báo lỗi "spawn EINVAL" trên Windows
Nếu script gọi thẳng file lệnh dạng .cmd (file khởi chạy kiểu Windows) mà không đi qua đúng cơ chế, Windows từ chối khởi chạy tiến trình với lỗi spawn EINVAL.
Cách gỡ: gọi thẳng chương trình chạy nền (ví dụ node.exe) kèm đường dẫn file mã nguồn thật, thay vì gọi qua file .cmd bọc ngoài.
3. Cùng lỗi "canh gác im lặng" và "tưởng sống mà đã chết" như bên Lark
Áp dụng đúng 2 cách gỡ đã ghi ở trang Bước 3: đặt thời hạn lặp rất lớn cho lịch canh gác, và đo "còn sống" bằng nhịp tim thật (chỉ cập nhật khi thực sự có sự kiện xảy ra) chứ không phải bộ đếm giờ độc lập.
Bước tiếp theo
Đã có 2 kênh trợ lý AI (Lark + Zalo), sang bước kế tiếp: cài GitHub — nơi lưu code và chạy tự động miễn phí, cần trước khi đăng Facebook tự động.
Sang bước 5: Cài GitHub →