Novel CMS v3
Đăng nhập bằng tài khoản Google được cấp quyền
Đăng nhập bằng Google
Novel CMSv3 — github api
Nội dung
Truyện
Chương
Import
Hệ thống
Staging 0
Cài đặt
Hướng dẫn
?
–
–
Danh sách truyện
Thêm truyện mới
Mới
Slug chỉ được đặt 1 lần khi thêm mới. Sau khi tạo, muốn đổi liên hệ Admin.
Tự động tạo từ tên, có thể chỉnh lại trước khi lưu
Bấm để chọn tags... ▾
Danh sách truyện trong repo
Nhấn "Tải lại" để load từ GitHub
Thêm / Sửa chương
Mới
📝 Có draft chưa lưu
0 từ
Preview PID
Chương của truyện
Kéo để đổi thứ tự (đang phát triển)
Chọn truyện ở form bên trái
Thứ tự đã thay đổi
Import Epub / Docx → Markdown
📄
Kéo file vào đây hoặc nhấn để chọn
Hỗ trợ .epub và .docx
0 chương được tách
Staging — gom commit
Tất cả thay đổi tập trung ở đây. Nhấn Commit để push 1 commit duy nhất → Cloudflare Pages deploy 1 lần (~5 phút/1 lần re-deploy).
Chưa có thay đổi nào trong staging

📖 Hướng dẫn sử dụng Novel CMS v3

Đây là hướng dẫn đầy đủ dành cho người mới bắt đầu. Mỗi mục bên dưới tương ứng với một tính năng trên thanh điều hướng bên trái. Nhấn vào từng tiêu đề để mở rộng và đọc chi tiết.

① Tổng quan ② Đăng nhập ③ Trang Truyện ④ Trang Chương ⑤ Trang Import ⑥ Trang Staging ⑦ Trang Cài đặt ⑧ Mẹo & Lưu ý
🗂
① Tổng quan — Novel CMS v3 là gì?
Luồng hoạt động, vai trò, và cấu trúc giao diện
▾
1

Novel CMS v3 là gì?

Novel CMS v3 là hệ thống quản lý nội dung (CMS) chuyên dùng để thêm, sửa, xóa truyện và chương trên trang web tiểu thuyết. Mọi thay đổi bạn thực hiện trên CMS sẽ được lưu lên kho GitHub, sau đó Cloudflare Pages tự động triển khai trang web trong khoảng 5 phút.

2

Luồng làm việc cơ bản

Điền thông tin → + Thêm vào Staging → Kiểm tra Staging → ⬆ Commit lên GitHub → Web tự cập nhật

Bạn không commit ngay sau mỗi thao tác. Thay vào đó, tất cả thay đổi được gom vào Staging trước, rồi mới commit một lần duy nhất — giúp trang web chỉ triển khai lại 1 lần thay vì nhiều lần.

3

Cấu trúc giao diện

Thanh bên trái (Sidebar): chứa menu điều hướng gồm 5 mục chính: Truyện, Chương, Import, Staging, Cài đặt. Phía dưới cùng hiển thị thông tin tài khoản đang đăng nhập.

Thanh trên (Topbar): hiển thị tên trang hiện tại, nút ↺ Tải lại, nút + Tạo mới (ở trang Truyện/Chương), và nút Commit nhanh khi Staging có dữ liệu.

Vùng nội dung chính: phần bên phải, nội dung thay đổi tùy theo trang đang chọn.

4

Hai loại tài khoản

Người dùng thường: chỉ thấy và thao tác được với truyện do chính mình tạo (truyện mà bạn là chủ sở hữu).

Admin: thấy và thao tác được với tất cả truyện của mọi người. Admin cũng là người duy nhất có thể thay đổi Nhà gõ chữ và Label của một truyện sau khi đã tạo.

ℹ Mọi thay đổi chưa được Commit đều chỉ tồn tại trong Staging trên máy bạn. Nếu bạn đóng trình duyệt trước khi Commit, Staging vẫn được giữ lại (lưu trong localStorage), nhưng Draft chương cũng vậy — hãy yên tâm.
🔐
② Đăng nhập & Đăng xuất
Xác thực bằng tài khoản Google được cấp quyền
▾
1

Cách đăng nhập

Khi truy cập CMS lần đầu hoặc phiên làm việc hết hạn, màn hình đăng nhập sẽ xuất hiện. Nhấn nút Đăng nhập bằng Google và chọn tài khoản Google mà Admin đã cấp quyền cho bạn.

⚠ Chỉ tài khoản Google được Admin duyệt mới đăng nhập được. Nếu bạn thấy thông báo lỗi sau khi chọn tài khoản, hãy liên hệ Admin để được cấp quyền.
2

Kiểm tra thông tin tài khoản

Sau khi đăng nhập thành công, góc dưới bên trái Sidebar hiển thị ảnh đại diện, tên hiển thị và địa chỉ email của bạn. Bạn cũng có thể xem thông tin chi tiết tại trang Cài đặt.

3

Đăng xuất

Vào Cài đặt → nhấn nút ↩ Đăng xuất. Hệ thống sẽ hỏi xác nhận. Staging và Draft đang có không bị xóa khi đăng xuất — dữ liệu này được lưu trong máy tính của bạn.

📚
③ Trang Truyện — Quản lý danh sách truyện
Thêm mới, chỉnh sửa, xóa truyện và quản lý Tags
▾
1

Điều hướng đến trang Truyện

Nhấn Truyện trên Sidebar. Trang hiển thị hai thẻ chính: Form thêm/sửa truyện ở trên, và Danh sách truyện ở dưới. Hệ thống sẽ tự động tải danh sách truyện từ GitHub khi bạn chuyển sang trang này.

2

Thêm truyện mới — Điền tên và Slug

Tên truyện (*): Nhập tên đầy đủ của truyện, ví dụ "Sóng Thần Phương Nam". Tên này hiển thị trên trang web.

Slug (*): Là định danh duy nhất của truyện, dùng trong URL. Hệ thống tự động tạo slug từ tên bạn nhập (chuyển về chữ thường, bỏ dấu, thay khoảng trắng bằng gạch nối). Ví dụ: "Sóng Thần Phương Nam" → song-than-phuong-nam. Bạn có thể chỉnh slug trước khi lưu, nhưng sau khi tạo xong thì không thể đổi slug nữa — hãy chọn kỹ.

⚠ Slug chỉ được dùng chữ thường a–z, số 0–9 và dấu gạch nối (-). Không được có khoảng trắng hay ký tự đặc biệt. Hệ thống kiểm tra trùng lặp tự động — nếu slug đã tồn tại sẽ báo lỗi màu đỏ.
3

Thêm truyện mới — Thông tin cơ bản

Tác giả: Tên tác giả gốc của truyện.

Nhà gõ chữ: Chọn từ danh sách thả xuống — đây là phân loại nội bộ dùng để nhóm các truyện theo người phụ trách. Sau khi lưu lần đầu, chỉ Admin mới được thay đổi trường này.

Tình trạng: Chọn một trong ba: Đang ra / Hoàn thành / Tạm dừng.

Cover URL: Dán đường dẫn ảnh bìa (bắt đầu bằng https://...).

Tổng chương: Số chương dự kiến hoặc đã có (có thể để 0 nếu chưa biết).

Ngày xuất bản gốc: Ngày tác phẩm được phát hành lần đầu (tự điền ngày hôm nay).

Ngày cập nhật: Ngày cập nhật gần nhất. Trường này tự động cập nhật khi bạn thêm chương mới.

Cảnh báo nội dung R18: Bật nếu truyện có nội dung dành cho người lớn. Mặc định là tắt.

4

Thêm truyện mới — Tags

Nhấn vào ô "Bấm để chọn tags..." để mở bảng chọn. Các tag đã có trong hệ thống hiển thị dưới dạng chip — nhấn vào chip để chọn (chip chuyển màu cam), nhấn lại để bỏ chọn.

Để thêm tag mới chưa có trong danh sách: nhập tên tag vào ô bên dưới, nhấn + Thêm hoặc nhấn Enter. Tag mới (chưa commit) sẽ hiển thị viền đứt và nhãn "new" — tag này chỉ tồn tại trong phiên làm việc hiện tại cho đến khi bạn commit.

Ví dụ Có sẵn: Ngọt · HE · Ngôn tình · Xuyên không
Thêm mới: Gõ "Võng du" → nhấn Enter → chip "Võng du" xuất hiện với viền đứt
5

Thêm truyện mới — Giới thiệu / Tóm tắt

Nhập nội dung giới thiệu truyện vào ô textarea lớn. Hỗ trợ Markdown và HTML tự do.

Toolbar phía trên ô text cung cấp các nút định dạng nhanh: B (in đậm), I (in nghiêng), U (gạch dưới), Color (chèn thẻ màu cam), BR (xuống dòng HTML), HTML (chuyển font monospace để dễ viết code).

Để sử dụng nút định dạng: bôi đen đoạn text trước, rồi nhấn nút tương ứng — hệ thống sẽ bọc đoạn đó bằng cú pháp phù hợp.

6

Lưu truyện vào Staging

Sau khi điền đầy đủ thông tin, nhấn + Thêm vào Staging. Nếu thành công, thông báo xanh lá hiện ra và form được xóa trắng để sẵn sàng nhập truyện tiếp theo. Truyện vừa thêm chưa lên web — bạn cần vào Staging để Commit.

7

Sửa truyện đã có

Trong thẻ Danh sách truyện, tìm tên truyện cần sửa, nhấn nút ✏ Sửa. Hệ thống sẽ tải toàn bộ thông tin của truyện vào form phía trên, và badge chuyển sang Sửa màu cam.

Lưu ý: khi đang sửa, Slug bị khóa (không thể chỉnh), và Nhà gõ chữ / Label bị khóa (chỉ Admin thay đổi được). Sau khi sửa xong, nhấn + Thêm vào Staging như thường.

Nếu muốn hủy bỏ việc sửa và quay về tạo truyện mới, nhấn nút ✕ Hủy hoặc nhấn + Tạo mới trên Topbar.
8

Xóa truyện

Trong danh sách, nhấn nút 🗑 bên cạnh truyện cần xóa. Hộp thoại xác nhận sẽ hiện ra — nhấn OK để xác nhận. Thao tác xóa được thêm vào Staging với nhãn XÓA, bạn vẫn có thể gỡ bỏ trước khi Commit.

⚠ Xóa truyện chỉ xóa file metadata. Các file chương riêng lẻ trong thư mục chương của truyện không bị xóa theo — cần xóa thủ công từng chương hoặc liên hệ Admin.
9

Tìm kiếm trong danh sách

Ô tìm kiếm ở góc trên phải của thẻ danh sách — gõ tên truyện hoặc slug, danh sách lọc theo thời gian thực. Xóa hết nội dung trong ô tìm kiếm để hiển thị lại tất cả.

📄
④ Trang Chương — Thêm, sửa, xóa nội dung chương
Soạn thảo, định dạng, PID, Draft tự động lưu
▾
1

Bố cục trang Chương

Trang chia hai cột: bên trái là form soạn thảo (điền thông tin và nội dung chương), bên phải là danh sách các chương đã có của truyện đang chọn.

2

Chọn truyện và số chương

Truyện (*): Chọn truyện từ danh sách thả xuống. Danh sách chỉ hiện các truyện bạn có quyền chỉnh sửa. Sau khi chọn, cột phải tự động tải danh sách chương của truyện đó.

Số chương (*): Nhập số thứ tự của chương (có thể là số thập phân, ví dụ 3.5 cho chương ngoại truyện giữa chương 3 và 4).

Ví dụ Chương chính: 1, 2, 38
Ngoại truyện: 10.5, 22.1
3

Tiêu đề và File slug

Tiêu đề (*): Tiêu đề hiển thị của chương trên trang web.

File slug: Tên file markdown sẽ được tạo trên GitHub. Nếu để trống, hệ thống tự tạo từ số chương (ví dụ chương 5 → 005). Chỉ cần điền thủ công nếu bạn muốn tên file đặc biệt.

4

Ngày đăng, Số từ, Password

Ngày đăng: Tự điền ngày hôm nay, có thể chỉnh lại nếu muốn đặt ngày khác.

wordCount: Trường chỉ đọc — hệ thống tự đếm số từ từ nội dung bạn viết, cập nhật khi bạn nhấn Staging.

Password: Nếu điền, chương này yêu cầu mật khẩu khi đọc. Để trống = công khai.

Ghi chú tác giả: Dòng chú thích hiển thị cuối chương (tùy chọn).

5

Soạn thảo nội dung chương

Nhập nội dung vào ô textarea lớn (hỗ trợ Markdown + HTML). Toolbar phía trên cung cấp:

B In đậm   I In nghiêng   U Gạch dưới   S Gạch ngang   — Ngắt Chèn dòng kẻ ngang (ngắt cảnh)   ❝ Chèn blockquote.

Góc phải toolbar hiển thị số từ theo thời gian thực (cập nhật khi bạn gõ).

Để dùng nút định dạng: bôi đen đoạn cần định dạng rồi nhấn nút. Với nút chèn (Ngắt, ❝), con trỏ sẽ ở vị trí hiện tại khi nhấn.
6

Tính năng PID (Paragraph ID)

PID là mã định danh gắn cho từng đoạn văn — dùng để hệ thống theo dõi bình luận theo đoạn. Khi Staging một chương chưa có PID, hệ thống tự động gán PID cho tất cả đoạn.

⊕ PID: Nhấn để gán/bổ sung PID thủ công cho các đoạn chưa có (hữu ích khi bạn thêm đoạn mới vào chương cũ).

👁 PID: Nhấn để xem trước danh sách đoạn cùng mã PID tương ứng ngay bên dưới textarea — tiện kiểm tra.

Ví dụ — PID trong text <!-- pid:p001 -->
Đây là đoạn văn đầu tiên của chương.

<!-- pid:p002 -->
Đoạn thứ hai...
7

Draft tự động lưu

Khi bạn đang soạn thảo (đã chọn Truyện và nhập Số chương), hệ thống tự động lưu Draft sau mỗi 30 giây bất kỳ khi nào bạn gõ. Dấu chấm xanh nhỏ cạnh tên card sẽ chớp sáng khi Draft được lưu.

Nếu bạn đóng tab rồi quay lại với cùng Truyện + Số chương, một thanh vàng "📝 Có draft chưa lưu" sẽ xuất hiện ở đầu form. Nhấn Khôi phục để nạp lại, hoặc Bỏ để xóa Draft đó.

Để lưu Draft thủ công ngay lập tức: nhấn nút 💾 Lưu draft.

✓ Draft được lưu riêng theo từng cặp (truyện + số chương) nên không bao giờ bị ghi đè lẫn nhau.
8

Thêm chương vào Staging

Sau khi soạn xong, nhấn + Staging. Nếu chương đã tồn tại trên GitHub, một hộp thoại so sánh nội dung sẽ hiện ra với màu đỏ (dòng bị xóa) và xanh (dòng thêm vào). Chọn Giữ nguyên bản cũ hoặc Ghi đè bằng bản mới.

Khi staging thành công, hệ thống tự động cập nhật ngày cập nhật của truyện cha vào Staging luôn — bạn không cần làm thủ công.

9

Sửa chương đã có

Trong cột phải, tìm chương cần sửa, nhấn ✏. Toàn bộ nội dung được tải vào form. Badge chuyển Sửa màu cam. Chỉnh sửa như bình thường, rồi nhấn + Staging.

Để tạo chương mới trong khi đang sửa: nhấn nút ✕ Hủy hoặc + Tạo mới trên Topbar (sẽ hỏi xác nhận nếu đang có dữ liệu).

10

Xóa chương

Trong danh sách chương bên phải, nhấn 🗑 cạnh chương cần xóa → xác nhận → thao tác xóa được thêm vào Staging với nhãn XÓA.

11

Đổi thứ tự chương (kéo thả)

Trong danh sách chương bên phải, giữ và kéo biểu tượng ⠿ ở đầu mỗi dòng để đổi vị trí. Sau khi thay đổi thứ tự, một thanh màu vàng xuất hiện bên dưới danh sách — nhấn + Staging thứ tự mới để ghi nhận vào Staging.

⚠ Tính năng này đang trong giai đoạn phát triển — hãy kiểm tra kỹ kết quả trước khi Commit.
📥
⑤ Trang Import — Nhập hàng loạt từ Epub / Docx
Tách chương tự động, kiểm tra xung đột, staging hàng loạt
▾
1

Import dùng để làm gì?

Thay vì nhập từng chương một bằng trang Chương, trang Import cho phép bạn tải lên một file .epub hoặc .docx chứa nhiều chương, hệ thống tự tách thành từng chương riêng và đưa vào Staging một lần.

2

Cấu hình trước khi tải file

Truyện (*): Chọn truyện muốn thêm chương vào.

Chương bắt đầu từ số: Số thứ tự của chương đầu tiên trong file (thường là 1, nhưng nếu bạn import tiếp phần 2 thì đặt là số tiếp theo).

Tách chương theo: Quy tắc để phân biệt các chương. Chọn một trong các tùy chọn:

🤖 Tự động nhận diện: Hệ thống thử các quy tắc phổ biến, chọn cái nào cho nhiều chương nhất.

Heading 1 (#): Mỗi tiêu đề bắt đầu bằng # là một chương mới.
Heading 2 (##): Tương tự nhưng dùng ##.
Từ khóa: Nhận diện "Chương", "Chapter", "第" và các biến thể.
Dòng kẻ ngang (---): Mỗi dòng --- là ranh giới chương.
Regex tùy chỉnh: Nhập biểu thức chính quy riêng (dành cho người dùng nâng cao).
3

Tải file lên

Kéo file .epub hoặc .docx vào vùng kẻ nét đứt, hoặc nhấn vào vùng đó để mở hộp chọn file. Hệ thống bắt đầu phân tích file ngay lập tức — quá trình này diễn ra ngay trên trình duyệt của bạn, không gửi file lên server.

4

Kiểm tra kết quả tách chương

Sau khi phân tích, hệ thống hiển thị danh sách chương đã tách. Nhấn vào từng chương để xem/chỉnh nội dung. Nếu kết quả tách không đúng, thay đổi tùy chọn "Tách chương theo" rồi nhấn ↺ Tách lại.

Nếu chương đó đã tồn tại trên GitHub, hệ thống hiển thị khung so sánh nội dung hai cột (bản cũ bên trái, bản mới bên phải) để bạn tự quyết định giữ bản nào.

5

Thêm tất cả vào Staging

Sau khi kiểm tra xong, nhấn + Staging tất cả. Toàn bộ chương sẽ được thêm vào Staging trong một thao tác. Vào trang Staging để kiểm tra rồi Commit.

Để huỷ toàn bộ kết quả import và bắt đầu lại: nhấn ✕ Xóa.

⬆
⑥ Trang Staging — Xem lại và đẩy lên GitHub
Gom commit, viết commit message, đẩy lên một lần
▾
1

Staging là gì?

Staging là "rổ gom hàng" — mọi thao tác Thêm/Sửa/Xóa truyện và chương đều đi vào đây trước. Khi bạn đã gom đủ các thay đổi, bạn Commit một lần duy nhất → GitHub nhận được 1 commit → Cloudflare Pages triển khai lại 1 lần. Điều này quan trọng vì mỗi lần deploy mất ~5 phút và có giới hạn số lần/ngày.

2

Đọc danh sách Staging

Mỗi dòng trong Staging hiển thị: nhãn LƯU hoặc XÓA, tên file/truyện/chương, đường dẫn file, và thông tin người thực hiện + thời gian.

Số thay đổi đang chờ được hiển thị ở badge cam cạnh mục "Staging" trên Sidebar, và ở nút ⬆ Commit trên Topbar.

3

Gỡ bỏ một thay đổi khỏi Staging

Nhấn nút ✕ ở cuối dòng tương ứng để gỡ thay đổi đó ra khỏi Staging — mà không ảnh hưởng đến các thay đổi còn lại. Dữ liệu trên GitHub không bị thay đổi gì.

4

Viết Commit message

Điền vào ô Commit message mô tả ngắn gọn nội dung thay đổi. Nếu để trống, hệ thống tự tạo message mặc định dạng cms: update N file(s).

Ví dụ commit message hay feat: thêm chương 38–40 · sóng thần phương nam
fix: sửa lỗi chính tả chương 12 · mưa xứ lạ
chore: cập nhật cover + tình trạng 3 truyện
5

Commit lên GitHub

Nhấn ⬆ Commit lên GitHub. Nút chuyển sang trạng thái "⏳ Đang commit..." trong quá trình xử lý. Khi thành công, thông báo xanh hiện ra kèm mã commit (7 ký tự đầu) và Staging được xóa sạch.

Sau khi commit, Cloudflare Pages sẽ tự triển khai trong vòng khoảng 5 phút. Bạn không cần làm gì thêm.

⚠ Nếu gặp lỗi trong quá trình Commit, đọc thông báo lỗi màu đỏ. Lỗi phổ biến nhất là session hết hạn — đăng xuất và đăng nhập lại, Staging vẫn còn nguyên.
6

Xóa toàn bộ Staging

Nhấn 🗑 Xóa staging để xóa toàn bộ. Hệ thống hỏi xác nhận. Thao tác này không ảnh hưởng gì đến GitHub — chỉ xóa danh sách chờ trên máy bạn.

⚙
⑦ Trang Cài đặt — Tài khoản và kết nối
Xem thông tin tài khoản, kiểm tra kết nối, đăng xuất
▾
1

Thông tin tài khoản

Trang Cài đặt hiển thị GitHub Login (địa chỉ email Google của bạn) và Tên hiển thị. Hai trường này ở chế độ chỉ đọc — không chỉnh sửa được từ đây.

Token GitHub, tên repo và branch được Admin cấu hình và lưu tập trung trên Cloudflare KV — bạn không thấy và không cần quan tâm đến các thông tin này.

2

Kiểm tra kết nối

Nhấn ⚡ Test kết nối để kiểm tra xem CMS có đang kết nối được với GitHub hay không. Nếu thành công, thông báo xanh hiện "OK: Đã kết nối thành công.". Nếu lỗi, đọc thông báo đỏ và liên hệ Admin.

3

Đăng xuất

Nhấn ↩ Đăng xuất → xác nhận → bạn được chuyển về màn hình đăng nhập. Staging và Draft đang có vẫn được lưu lại trên máy.

💡
⑧ Mẹo & Lưu ý quan trọng
Tóm tắt những điều cần nhớ để tránh sai sót
▾
!

Slug truyện — không thể đổi sau khi tạo

Slug là khóa định danh vĩnh viễn. Sai slug = sai URL trang web. Hãy kiểm tra kỹ trước khi nhấn Staging lần đầu. Muốn đổi sau này phải liên hệ Admin.

!

Staging trước, Commit sau

Đừng Commit sau mỗi thao tác nhỏ. Hãy gom nhiều thay đổi vào Staging rồi Commit một lần để tránh tốn quota deploy của Cloudflare Pages. Ví dụ: thêm 3 chương + sửa 1 truyện → đưa hết vào Staging → Commit 1 lần duy nhất.

!

Draft chương lưu theo truyện + số chương

Draft tự lưu chỉ hoạt động khi bạn đã chọn truyện VÀ đã điền số chương. Nếu bạn chưa điền một trong hai, Draft sẽ không được lưu tự động. Hãy điền số chương sớm trước khi bắt đầu soạn.

!

Không thấy truyện trong danh sách?

Người dùng thường chỉ thấy truyện họ tạo. Nếu truyện "biến mất", có thể do: (1) bạn chưa được cấp quyền chủ sở hữu truyện đó, (2) truyện do Admin hoặc người khác tạo. Liên hệ Admin để được gán quyền.

!

Nút "↺ Tải lại" dùng khi nào?

Nhấn nút này để đồng bộ lại dữ liệu mới nhất từ GitHub về giao diện. Hữu ích khi: bạn vừa Commit xong và muốn thấy kết quả, hoặc khi Admin vừa thêm truyện mới và bạn chưa thấy trong danh sách.

!

Trang web cập nhật sau bao lâu?

Sau khi Commit thành công, Cloudflare Pages tự triển khai lại. Thường mất 3–5 phút. Nếu sau 10 phút vẫn chưa thấy thay đổi, hãy xóa cache trình duyệt (Ctrl+Shift+R) hoặc liên hệ Admin kiểm tra log deploy.

Tài khoản
Token, repo, branch được quản lý bởi admin qua Cloudflare KV. Liên hệ admin nếu cần thay đổi.