Vui lòng chọn một phòng từ danh sách phía trên để cấu hình Column Mapping cho phòng đó.
Cấu hình theo thángChọn tháng để xem / chỉnh cấu hình riêng
Phòng Live
Brand
Tự động--Chưa đồng bộ
Cấu hình Google Sheet
Dán link Google Sheet. Nếu để trống sẽ dùng Sheet URL của Brand.
Bắt buộc — chọn đúng tab chứa dữ liệu của tháng đang cấu hình
Dòng chứa tiêu đề cột (thường là 1)
Dòng đầu tiên chứa dữ liệu (thường là 2)
VD: A, B, C...
Để trống = tự động
Cấu hình cột Thời gian
Để trống nếu ngày nằm trong cột thời gian
Chuẩn: 14/5 từ 0–2h → lấy ngày 14/5 |
Lệch ngày: 14/5 từ 0–2h → thực ra là ngày 15/5
6h
Ví dụ: nếu để 6, các ca bắt đầu từ 0h–5h59 trên ngày 14/5 sẽ được tính là ngày 15/5.
Cấu hình cột Host
Thêm 1 hoặc nhiều cột chứa host. Mỗi cột sẽ được đọc riêng.
Các tên host trong danh sách này sẽ bị bỏ qua khi đọc dữ liệu từ sheet. So sánh không phân biệt hoa thường.
Tên host được phép có lịch trùng giờ (không hiện cảnh báo trùng). Khớp theo tên đầy đủ.
Mã host được phép có lịch trùng giờ. Khớp theo mã (host_code) — dùng khi 1 mã host xuất hiện ở nhiều phòng cùng lúc.
Các ký tự dùng để tách nhiều host trong một ô. Mặc định: , / | & +
Ký tự nối giữa các mã host khi hiển thị trên bảng lịch và viewer. Mặc định: -
Nếu bật, những khung giờ không có tên host sẽ bị loại bỏ và không hiển thị trong lịch phát sóng
Tự động tạo Host trong database nếu chưa tồn tại
Cấu hình lọc theo phòng
Bật nếu sheet chứa dữ liệu nhiều phòng và cần lọc
Nhập tên cột chứa phòng (xem tên cột ở tab Sheet → Kiểm tra kết nối)
Cấu hình cột Platform
Bật nếu sheet có cột Platform (TikTok, Shopee, Lazada...)
Nhập tên cột chứa platform trong sheet
Tự động lấy Platform từ cấu hình phòng
Cấu hình cột Brand
Bật nếu sheet có cột Brand (khi 1 sheet chứa nhiều brand)
Nhập tên cột chứa brand trong sheet
Để trống nếu mỗi ô chỉ có 1 brand
Tự động lấy Brand từ cấu hình phòng
Các cột bổ sung
Khoảng thời gian tối thiểu giữa 2 thông báo cho phòng này. Tăng giá trị nếu phòng đọc nhiều tháng và bị spam.
Cột tùy chỉnh
Khi bật, dữ liệu từ sheet phụ sẽ được đồng bộ và hiển thị trong từng ca live tương ứng theo thời gian.
Tên hiển thị trên card ca live.
Cấu hình Google Sheet (phụ)
Để trống sẽ dùng cùng Sheet URL của lịch chính.
Bấm nút để tải danh sách tab từ Sheet.
Thường là 1
Thường là 2
Để trống = tự động
Cấu hình cột Thời gian
Để trống nếu ngày nằm trong cột thời gian
Cấu hình cột Host
Nhập tên cột chứa host. Nhiều cột thì cách nhau bằng dấu phẩy.
Các ký tự dùng để tách nhiều host trong một ô. Mặc định: , / | & +
Cấu hình lọc theo phòng
Bật nếu sheet phụ chứa dữ liệu nhiều phòng
Cấu hình cột Platform
Bật nếu sheet phụ có cột Platform
Cấu hình cột Brand
Bật nếu sheet phụ có cột Brand
Các cột bổ sung
Thêm các cột dữ liệu tuỳ chỉnh từ sheet phụ.
Xem trước dữ liệu
Nhấn "Tải dữ liệu" để xem trước
Quản lý Lịch phát sóng
Mẫu riêng theo Phòng / Platform / Brand · để "Mặc định" = dùng mẫu chung ở trên
Tiêu đề
Giỏ hàng
Tổ hợp Mẫu tiêu đề Mẫu giỏ hàng
Keep Live
Đang xem lịch tất cả phòng — chế độ chỉ xem
Các chức năng sau chỉ hoạt động khi chọn 1 phòng:
Keep Live (gộp nhóm, Thủ công, Theo Sheet)
Mẫu tiêu đề / giỏ hàng theo phòng
Tùy chỉnh theo Phòng / Platform / Brand
Đồng bộ & Xem Google Sheet của phòng
Cảnh báo trùng giờ trong phòng
#
Ngày
Bắt đầu
Kết thúc
Host
Trạng thái
Thao tác
Tổng hợp lịch phòng Live
–
✦
Link dữ liệu cho Gemini Gems
Dán link vào phần "Nguồn" khi tạo Gem — dữ liệu trực tiếp (live), mặc định 2 ngày trước → 45 ngày tới. Thêm &all=1 để lấy tất cả tháng, hoặc &days=N&back=M để tùy chỉnh.
Tổng hợp lịch phòng Live
Chọn ngày để xem tổng hợp lịch phát sóng của tất cả thương hiệu
Quản lý mẫu tiêu đề
Tạo mẫu tiêu đề tự động với mã placeholder — áp dụng khi fill lịch & sinh tiêu đề ca live.
Hướng dẫn sử dụng mã placeholder
Sử dụng các mã trong ngoặc nhọn để tự động thay thế dữ liệu. Ví dụ: Live {host_code} - {date_short} lúc {start_time_h}
#
Tên mẫu
Nội dung template
Preview
Mặc định
Thao tác
Quản lý mẫu giỏ hàng
Tạo mẫu nội dung giỏ hàng — hỗ trợ mã placeholder, áp dụng tự động khi fill lịch.
#
Tên mẫu
Nội dung
Mô tả
Mặc định
Thao tác
Quản lý Filter Links
Đồng bộ dữ liệu
Google Sheets
Đồng bộ dữ liệu từ Google Sheets
Đang kiểm tra...
Lần đồng bộ cuối: --
Tự động đồng bộ
Lên lịch đồng bộ tự động từ Google Sheets
BẬT: định kỳ (~60 phút) xóa sạch lịch phòng auto rồi đồng bộ lại từ đầu để dọn triệt để ca tồn đọng;
các chu kỳ còn lại đồng bộ nhẹ (chỉ cập nhật thay đổi). Không chạy xóa-sạch mỗi chu kỳ để
tránh ngốn CPU hosting. Tắt = luôn đồng bộ nhẹ.
Đồng bộ tiếp theo: --
Chu kỳ thực tế: --
Làm mới dữ liệu
Xóa cache và tải lại từ database
Nhật ký đồng bộ
Lịch sử các lần đồng bộ gần nhất
Import/Export dữ liệu
Import dữ liệu
Nhập từ file JSON hoặc CSV
Kéo thả file hoặc click để chọn
Hỗ trợ .json, .csv — tối đa 10MB
Preview
Export dữ liệu
Xuất ra file JSON hoặc CSV
Tất cả phòng
→
Chọn loại dữ liệu để xem mô tả
Lịch sử Import/Export gần đây
Chưa có hoạt động nào
Cấu hình hệ thống
Bản quyền viewer (Dynamic Island)
Hiển thị trên trang xem lịch (viewer) — pill "Phát triển bởi". Đổi tên, link và ảnh đại diện ở đây.
Dùng để gửi mã OTP đặt lại mật khẩu về email. Khuyên dùng Gmail + App Password (miễn phí, gửi được tới mọi email).
Hướng dẫn lấy Gmail App Password (bấm mở)
Dùng một tài khoản Gmail để gửi (nên tạo riêng, vd ecolive.otp@gmail.com).
Bật Xác minh 2 bước (2-Step Verification): vào myaccount.google.com/security → bật "Xác minh 2 bước". Bắt buộc — không bật thì không tạo được App Password.
Ở ô "App name" gõ tên bất kỳ (vd Live Schedule) → bấm Create.
Google hiện mật khẩu 16 ký tự (dạng abcd efgh ijkl mnop). Copy nó.
Dán 16 ký tự đó vào ô "App Password" bên dưới (dấu cách không sao, hệ thống tự bỏ). Đây KHÔNG phải mật khẩu đăng nhập Gmail thường.
Bấm Lưu rồi Gửi email thử để kiểm tra.
Nếu không thấy mục App Passwords: tài khoản chưa bật 2FA, hoặc là Gmail công ty (Workspace) bị quản trị viên chặn — hãy dùng Gmail cá nhân.
Google Sheets
Chưa kiểm tra
Cấu hình Tên miền (Domain)
Giới hạn chức năng theo tên miền. Domain chưa cấu hình → truy cập đầy đủ. Nếu chỉ cấp 1 chức năng → login xong tự chuyển hướng vào trang đó.
Đang tải...
Logo Trang Web
Hỗ trợ link trực tiếp hoặc Google Drive link
Kéo thả ảnh vào đây hoặc chọn file
Hỗ trợ: JPG, PNG, GIF, SVG (tối đa 2MB)
Sau khi nhập link hoặc upload ảnh, nhấn "Lưu Logo" để lưu vào hệ thống
Thông tin hệ thống
Đang tải...
Thông báo Link không hợp lệ
Tùy chỉnh nội dung thông báo khi người dùng truy cập link viewer không hợp lệ
Nội dung này sẽ hiển thị cho người dùng khi truy cập link viewer không tồn tại hoặc không hợp lệ. Hỗ trợ định dạng rich text.
Cài đặt AI
Gemini API Key
Đã cấu hình:
Lấy API key tại
Google AI Studio.
Key sẽ được lưu an toàn trong database.
Google Cloud TTS Key
Đã cấu hình:
Dùng giọng đọc vi-VN-Wavenet-B — tự nhiên hơn browser TTS.
Lấy key tại Google Cloud Console (bật API Cloud Text-to-Speech).
Có thể dùng chung key với Gemini nếu cùng project.
AI Provider
Groq API Key
Đã cấu hình:
Lấy API key tại
console.groq.com.
Model sử dụng: llama-3.3-70b-versatile.
OpenRouter API Key
Đã cấu hình:
Lấy API key tại
openrouter.ai/keys.
Model sử dụng: google/gemini-2.5-flash-lite (miễn phí).
Anthropic API Key (Claude Haiku)
Đã cấu hình:
Lấy API key tại
console.anthropic.com.
Model sử dụng: claude-haiku-4-5 — rẻ nhất trong dòng Claude.
Chế độ đọc văn bản
Trung tâm cập nhật
Bản đang chạy so với bản mới nhất của mọi thứ hệ thống phụ thuộc: gói npm, thư viện giao diện nạp từ CDN, và nhị phân máy chủ (Node, yt-dlp, ffmpeg).
Xếp theo mức rủi ro Major / Minor / Patch để bạn quyết cái nào đáng nâng, cái nào để yên.
Trang này không tự cập nhật gì — chỉ đưa sẵn câu lệnh, bạn chạy tay và tự chọn thời điểm.
Đang tải…
Khung trang trí cho trang viewer
Xếp nhiều lớp ảnh quanh trang viewer, mỗi lớp đặt chỗ và cỡ riêng cho từng loại máy. Dòng Nội dung trang chia đôi chồng lớp: lớp trên nó đè lên trang, lớp dưới nó nằm sau lưng trang.
Radar repo — dự án mình sống nhờ
Sàn đổi API/cách ký lúc nào không báo trước. Thứ cứu mình sớm nhất là các dự án cộng đồng đã dính trước và đã vá.
Trang này theo dõi repo hệ thống đang phụ thuộc (yt-dlp, tiktok-live-connector, mpegts.js, stealth…) — còn sống không, vừa ra bản gì, có issue nào báo sàn đổi.
Máy tự soi 6 giờ một lần và bắn Google Chat khi có bản vá liên quan (bật loại “Radar repo” ở trang Cảnh báo Live).
Đang tải…
Cảnh báo Live → Google Chat
Gửi cảnh báo mất tiếng, đứng hình, mất nguồn phát — và báo cả lúc kênh lên live / xuống live — về Google Chat.
Số liệu đo ngầm ở máy chủ ngay trên luồng — không phụ thuộc mạng hay trình duyệt người xem.
Mỗi link có ngưỡng riêng và chọn studio / kênh riêng. Hệ thống này tách hẳn khỏi mục “Thông báo” (lịch).
Đang tải…
Google Chat Webhooks
Tự động gửi thông báo về các sự kiện trong hệ thống đến Google Chat. Mỗi webhook có thể gắn với một Brand cụ thể hoặc nhận thông báo từ toàn bộ hệ thống.
Báo cáo giám sát AI
AI cục bộ (Qwen2.5 chạy thẳng trên VPS) tự tổng hợp lịch & sức khỏe hệ thống rồi gửi Google Chat. Chọn webhook nhận báo cáo bằng cách tick sự kiện “📊 Báo cáo giám sát” khi thêm/sửa webhook bên dưới.
Đang tải danh sách webhooks...
Quản lý Link
Sắp xếp và quản lý link theo thư mục
Đang tải...
Bắt đầu quản lý link
Tạo thư mục đầu tiên để lưu trữ và sắp xếp các link
Quản lý Người dùng
#
Người dùng
Vai trò
Brand
Đăng nhập
Trạng thái
Ngày tạo
Thao tác
Nhật ký hệ thống
Modal Title
Xác nhận
Bạn có chắc chắn muốn thực hiện hành động này?
Thêm cấu hình Domain
Thêm cảnh báo
Gửi sự cố phiên live về một space Google Chat
Tên *
Link webhook Google Chat *
Lấy link trong space Google Chat → Ứng dụng & tích hợp → Webhook.
Báo khi nào *
Ngưỡng riêng của link này. Sự cố phải kéo dài liên tục quá ngưỡng mới gửi, và mỗi sự cố chỉ gửi một lần.
Riêng Lên live / Xuống live thì ngưỡng chỉ là bộ chống rung: trước khi báo “xuống live”, máy chủ
hỏi thẳng sàn để xác nhận kênh tắt thật — sàn báo còn live (Shopee xoay phiên) thì huỷ, không gửi tin nào.
Gửi cảnh báo của kênh nào
Bật cả studio để nhận mọi kênh trong đó, rồi gạt bỏ riêng vài kênh không cần. Kênh đã nằm trong studio đang bật sẽ không hiện lại ở danh sách kênh lẻ.