Thực hành tốt
SEO on-page với KDIGI CMS: checklist từng bước
Đặt mẫu tiêu đề một lần cho cả site, điền knowledgeGraph, chạy SEO audit định kỳ. CMS tự làm phần còn lại khi lưu.
Cập nhật lần cuối:

Mẫu tiêu đề và mô tả đặt ở cấp site; từng bài chỉ ghi đè khi cần. Breadcrumb, JSON-LD và redirect khi đổi slug do CMS tự sinh mỗi lần lưu.
Tóm tắt nhanh
- Tiêu đề và mô tả là mẫu
Sites.seoTitles, ghép lúc render.- Mỗi lần lưu sinh
@graphJSON-LD vàoseo.jsonLd.raw.- Ảnh OG: ảnh OG riêng → ảnh đại diện → ảnh mặc định.
GET /api/seo/auditliệt kê tài liệu yếu.

Mẫu tiêu đề và mô tả
Sites.seoTitles có separator và sáu nhóm: homepage, posts, pages, products, landings, taxonomies, mỗi nhóm có titleTemplate và descriptionTemplate.
| Nhóm | Mẫu tiêu đề mặc định | Mẫu mô tả |
|---|---|---|
homepage |
%sitename% |
%excerpt% |
posts, pages, products, landings |
%title% %sep% %sitename% |
%excerpt% |
taxonomies |
%term% %sep% %sitename% |
%excerpt% |
- Giữ tiêu đề 40–60 ký tự; rút gọn tên site nếu mẫu quá dài
- Chỉ ghi đè
seo.titleở trang quan trọng - Đừng viết script điền
seo.titlecho mọi bài: nó đóng băng giá trị lẽ ra theo mẫu
Lưu ý
seo.titletrống khiến audit báomissing-title; hãy đọc là “chưa ghi đè”, không phải “không có title”.
Từ khóa chính và slug
Từ khóa đầu tiên trong seo.focusKeywords quyết định điểm SEO. Bảng chấm điểm trong editor kiểm tra:
- Từ khóa trong tiêu đề, mô tả, slug
- Từ khóa trong 10% đầu nội dung
- Mật độ 1–1,5%
- Tiêu đề ≤ 60, mô tả ≤ 160, URL ≤ 75 ký tự
- Có ít nhất một liên kết nội bộ
Slug tự sinh từ tiêu đề (bỏ dấu, đ → d), không dịch theo ngôn ngữ; hãy chốt slug ngắn trước khi đăng.
Open Graph và Twitter Card
Ảnh OG điền lúc đọc qua REST: seo.openGraph.image → featuredImage → Sites.seoDefaults.ogImage, không ghi ngược vào database. twitterMeta.card mặc định summary_large_image.
Mẹo Đặt
seoDefaults.ogImagengay từ đầu để không bài nào chia sẻ thiếu ảnh.
JSON-LD
Hook sinh seo.jsonLd.raw: một thẻ <script type="application/ld+json"> chứa @graph, đã escape <.
| Loại tài liệu | Node chính |
|---|---|
| Bài viết | BlogPosting, Person, WebPage, ImageObject, BreadcrumbList, WebSite, Organization |
| Trang | WebPage (ContactPage/AboutPage cho slug quen thuộc), FAQPage, BreadcrumbList |
| Sản phẩm / landing | Product + Offer, ItemPage, FAQPage |
| Chuyên mục/thẻ | CollectionPage, BreadcrumbList |
Điền knowledgeGraph và socialProfiles[] của site để có Organization và sameAs. Giá trị này rỗng cho đến khi tài liệu được lưu ít nhất một lần. Xem SEO và JSON-LD.
Breadcrumb và redirect
- Breadcrumb Tự sinh khi lưu nếu đang trống: tên site → chuyên mục chính → tài liệu. Chọn taxonomy ở
Sites.breadcrumbs. - Redirect 301 Đổi slug tạo dòng
redirectsvà job revalidate cho slug cũ. Chuỗi redirect chỉ bị cảnh báo, không bị chặn.
Khi chuyển từ WordPress, permalink cũ được sinh redirect 301 tự động; xem chuyển từ WordPress.
Liên kết nội bộ
Gõ @ trong editor để chèn liên kết tới bài/trang/sản phẩm/landing cùng site. Panel gợi ý (GET /api/seo/internal-link-suggest) trả tối đa 10 gợi ý. Mục tiêu: mỗi bài có ít nhất 3 liên kết nội bộ có ngữ cảnh, không trang mồ côi. Xem cấu trúc nội dung.
SEO audit định kỳ
GET /api/seo/audit (cần đăng nhập) quét tối đa 200 tài liệu mỗi collection và trả tài liệu yếu nhất trước, kèm reasons: missing-title, missing-desc, noindex, broken-canonical, low-score:<n>.

- Xem widget Mở dashboard mỗi tuần.
- Sửa ngay
noindexhoặcbroken-canonical. - Làm xanh checklist Bài
low-scoređang có traffic trước. - Bổ sung trang quan trọng
missing-title/missing-desc: ghi đè thủ công hoặc dùng AI gợi ý.
AI SEO (tùy chọn)
Nút AI gọi POST /api/seo/ai-generate (đăng nhập, mặc định 20 lần/phút/người) để gợi ý tiêu đề, mô tả, FAQ hoặc alt ảnh bằng DeepSeek. Chỉ bật khi đặt DEEPSEEK_API_KEY và DEEPSEEK_MODEL; coi đầu ra là bản nháp.
Checklist trước khi bấm Đăng
- Từ khóa chính trong
seo.focusKeywords, tiêu đề, slug, 10% đầu nội dung - Tiêu đề ≤ 60 ký tự, mô tả ≤ 160 ký tự
- Một H1 duy nhất; mục con H2/H3 theo thứ tự
- Ảnh đại diện và
altcho mọi ảnh - Ít nhất 3 liên kết nội bộ có ngữ cảnh
- Không dính
noindex;canonicalOverridebắt đầu bằnghttp - FAQ hiển thị ra trang, không chỉ trong JSON-LD
- Sau khi đăng: kiểm tra title, canonical, ảnh OG và JSON-LD trong HTML
Sitemap, robots.txt và canonical trong HTML do frontend xuất ra; CMS cung cấp dữ liệu. Thử trên bản demo hoặc tự host.
Câu hỏi thường gặp
Vì sao seo.title của bài viết trong API thường để trống?
Điểm SEO trong editor có được lưu không?
Đổi slug có làm mất thứ hạng không?
JSON-LD có cần plugin hay code thêm không?
Có bắt buộc dùng AI để viết tiêu đề không?
Đọc tiếp
SEO và JSON-LD
Trường SEO, mẫu title kiểu RankMath, đồ thị JSON-LD, ảnh OG dự phòng, kiểm tra SEO, gợi ý internal link và AI SEO tùy chọn ngay trong trình soạn thảo.
Nội dung và cấu trúc
Mô hình nội dung gồm trang, bài viết, sản phẩm, landing, taxonomy, tác giả, FAQ, menu dạng cây, redirect, bình luận, đánh giá, phiên bản và thùng rác.
Cấu trúc nội dung
Cách tổ chức loại nội dung, danh mục, thẻ và liên kết pillar–cluster trong KDIGI CMS để tránh nội dung trùng lặp và giúp Google lẫn AI hiểu chủ đề.
Chuyển từ WordPress
Hướng dẫn chuyển WordPress sang KDIGI CMS: bài viết, trang, media, menu, dữ liệu Yoast/RankMath, WooCommerce, redirect 301. Có checklist và giới hạn rõ ràng.