Yêu cầu trước khi bắt đầu
- Đã xong Bước 7: Cài GitHub
- Có Fanpage Facebook và quyền Admin của Fanpage đó
Đây là code thật đang chạy, không phải để AI viết lại từ đầu
Repo này có sẵn 6 workflow GitHub Actions (tạo bảng mẫu, lấy danh sách Page, lấy bài cũ, đăng bài, lấy tài khoản quảng cáo, lấy số liệu quảng cáo) + tài liệu TRIEN-KHAI.md theo đúng 5 bước dưới đây.
https://github.com/hoangminhhoagpt-dot/mentor-club-facebook
Fork repo + tạo App Lark, App Facebook, GitHub PAT
Nói với Claude AI: "Đọc TRIEN-KHAI.md ở repo trên rồi làm giúp tôi Bước 1-2: fork repo về tài khoản GitHub của tôi, tạo 1 App Lark có đủ quyền bitable:app/drive:drive/base:record:retrieve/base:table:create + bật feature Bot + Publish, và hướng dẫn tôi tạo App Facebook (qua Meta for Developers) lấy token dài hạn đủ 7 quyền Pages/Insights." Mọi bước cần mật khẩu/OTP/token thật thì bạn tự làm — AI chỉ bấm được các nút không chạm dữ liệu nhạy cảm (Create fork, Enable Actions...).
Mời App Lark vào đúng Base bạn muốn quản lý
Cấp quyền cộng tác viên (Edit) cho App Lark vừa tạo vào Base bạn muốn dùng — dùng lại đúng Base đã tạo bảng Lead ở Bước 4, không cần tạo Base mới. Làm qua dòng lệnh (lark-cli), không qua nút "Chia sẻ" trên giao diện (xem bẫy #1 bên dưới).
Dán Secrets + Variables vào GitHub (tự tay, không qua AI)
Tại github.com/<tên bạn>/mentor-club-facebook/settings/secrets/actions: mục Secrets dán FB_USER_TOKEN (token Facebook dài hạn) + LARK_APP_SECRET; mục Variables dán LARK_APP_ID + LARK_BASE_ID. 5 biến TABLE_* để trống theo đúng hướng dẫn gốc — workflow đầu tiên (init-tables) sẽ tự tạo bảng và điền lại.
Chạy lần lượt các workflow, kiểm tra dữ liệu thật ở mỗi bước
Thứ tự đúng: init-tables (tạo 5 bảng mẫu, gồm bảng "Đăng bài tự động" với cột Nội dung/Ảnh-video/Ngày giờ đăng/Trạng thái) → fetch-pages (lấy danh sách Fanpage) → fetch-posts (lấy bài cũ) → dang-bai (đăng bài tới lịch). Mỗi lần "Run workflow" xong, mở đúng bảng Lark Base tương ứng xác nhận có dữ liệu thật, đừng chỉ tin thông báo "Success" trên GitHub.
Ảnh-video ở trên không tự có nội dung — cần bạn (hoặc AI) đưa file vào TRƯỚC khi tới giờ đăng, qua 1 trong 2 cách: (1) tự thiết kế ảnh bằng Canva nhờ Claude AI — xem chi tiết ở Bước 13 (Content & Video); (2) cắt sẵn từ video dài bằng Viral Short Studio — xem Bước 9. Cả 2 bước đó nằm sau bước này trong hành trình 15 bước, nhưng bạn có thể đọc trước nếu cần ảnh ngay.Điền 1 lần, dán khối lệnh cho Claude AI
Chỉ điền 2 giá trị KHÔNG bí mật (định danh, không phải token) — FB_USER_TOKEN và LARK_APP_SECRET tuyệt đối không gõ vào đây, chỉ dán trực tiếp vào GitHub Secrets ở Bước 3.
.../base/<LARK_BASE_ID> — dùng lại đúng Base ở Bước 4, không tạo Base mới.
Chưa điền ô nào — khối lệnh đang ở dạng mẫu.
⚠ Bẫy đã gặp thật + cách gỡ
🔴 Nghiêm trọng nhất: bản ghi CHƯA gán lịch đăng bị đăng NGAY LẬP TỨC, không chờ
Nếu tạo 1 bản ghi mới trong bảng mà quên điền cột "Ngày giờ đăng" (để trống), hệ thống cron coi bản ghi đó là "sẵn sàng đăng ngay" thay vì "chưa tới lịch" — bài sẽ lên Facebook thật ngay trong lần cron chạy tiếp theo (tối đa 30 phút sau), dù bạn chưa muốn đăng.
Cách gỡ: LUÔN điền ngày giờ đăng cụ thể (trong tương lai) ngay khi tạo bản ghi mới — không bao giờ để trống cột này, kể cả tạm thời.
1. Đăng bài báo lỗi token dai dẳng dù token vẫn còn hạn
Script đăng bài đọc token đã lưu sẵn trong 1 bảng riêng, KHÔNG đọc trực tiếp token gốc mới nhất mỗi lần chạy — nên sau khi đổi/làm mới token gốc, script vẫn dùng bản cũ đã lưu và báo lỗi.
Cách gỡ: sau mỗi lần đổi token, luôn chạy lại bước "lấy danh sách Fanpage" trước để làm mới token đã lưu trong bảng, rồi mới chạy bước đăng bài.
2. Bài đăng lên nhưng chỉ mình bạn (Admin) nhìn thấy, khách không thấy gì
App Facebook mặc định ở chế độ thử nghiệm ("Development Mode") — bài vẫn đăng thành công về mặt kỹ thuật, nhưng Facebook chỉ hiện cho người quản trị App thấy.
Cách gỡ: vào cài đặt App Facebook, chuyển từ chế độ thử nghiệm sang chế độ chính thức ("Live Mode").
3. Lark Base không tự lặp lịch theo phút
Tính năng tự động hoá có sẵn của Lark Base không hỗ trợ chạy lặp lại theo từng phút/nửa giờ (dropdown chỉ có ngày/tuần/tháng/năm) — không dùng được để tự động đăng bài đúng giờ.
Cách gỡ: dùng GitHub Actions (có lịch cron thật, chạy lặp mỗi 30 phút) làm nơi chạy script, thay vì cố dùng tính năng tự động hoá nội bộ của Lark.
4. Cron GitHub Actions trễ 1-2 tiếng so với giờ cấu hình — bình thường, không phải lỗi
Dù cấu hình cron: '*/30 * * * *', khoảng cách thật giữa các lần chạy đã đo được nhiều lần là 1-2 tiếng, không đúng 30 phút. Đây là hành vi schedule trigger "best-effort" đã biết của GitHub, không phải lỗi cấu hình.
Cách gỡ: chấp nhận độ trễ này cho việc không cần chính xác tới phút; cần gấp thì tự bấm chạy tay (workflow_dispatch) thay vì chờ cron.
Bước tiếp theo
Đã tự động đăng được bài, sang bước kế tiếp: tự động cắt video dài thành nhiều đoạn ngắn để có đủ nội dung mà đăng.
Sang bước 9: Cài Viral Short Studio →