TRƯƠNG MINH KIÊN · HỆ THỐNG TRIỂN KHAI AI
← Về truongminhkien.vn
Bước 8 / 15 · Cài đặt hạ tầng

Đăng Facebook tự động

Viết bài + lên lịch trong Lark Base như 1 bảng Excel bình thường — máy chủ tự đăng đúng giờ lên Fanpage, không cần ai mở máy tính lúc đó.

Yêu cầu trước khi bắt đầu

Đâ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
1

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...).

2

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).

3

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.

4

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 đăng lấy từ đâu? Cột Ả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_TOKENLARK_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.

Lấy ở Credentials & Basic Info của App Lark vừa tạo (Bước 1).
Đoạn mã trong link Base, vd .../base/<LARK_BASE_ID> — dùng lại đúng Base ở Bước 4, không tạo Base mới.
Để trống nếu chưa fork — Claude AI sẽ tự fork trước rồi điền đúng đường dẫn.
Mọi giá trị bạn gõ chỉ nằm trong trình duyệt — trang không gửi đi đâu, không lưu lại.

Khối lệnh — dán vào Claude AI


    

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.