Website Specification: Bản Đặc Tả Mở Giúp Website Của Bạn Đạt Chuẩn SEO, Bảo Mật, Và Sẵn Sàng Cho AI Agents

Câu trả lời nhanh
Website Specification là bản đặc tả open-source (MIT) liệt kê 52 tiêu chí kỹ thuật mà website chất lượng cần có: HTML foundations, SEO, bảo mật, accessibility, performance, privacy, và agent readiness. Có tích hợp llms.txt, MCP server, và Agent Skills để AI agents đọc website. Áp dụng cho mọi platform, đặc biệt hữu ích cho WordPress.

$(cat << CONTENT_EOF

Bạn có bao giờ tự hỏi: website của mình đã thực sự “đúng” chưa? Không phải đẹp hay nhanh — mà là đúng theo tiêu chuẩn kỹ thuật. Có đủ thẻ meta cần thiết, robots.txt chuẩn, bảo mật đầy đủ, accessibility cho người khuyết tật, và giờ thì cả AI agents có thể đọc được?

Mình vừa phát hiện một dự án open-source đang rất hot trên Hacker News (444 điểm trong chưa đầy một ngày): The Website Specification. Đây là một bản đặc tả đầy đủ, platform-agnostic, liệt kê mọi tính năng kỹ thuật mà một website chất lượng nên có. Và mình phải nói — nó chi tiết hơn bất kỳ checklist nào mình từng thấy.

Website Specification Là Gì Và Tại Sao Bạn Nên Quan Tâm?

The Website Specification là một dự án open-source dưới licence MIT, xây dựng công khai trên web. Nó cung cấp một bản đặc tả đầy đủ về các tính năng kỹ thuật mà một website tốt nên có — từ HTML cơ bản, SEO, bảo mật, performance, accessibility, cho đến AI agent readiness.

Điều làm mình thích nhất: nó không gắn với platform nào. Dù bạn dùng WordPress, Shopify, Next.js hay static HTML — bản đặc tả này đều áp dụng được. Mỗi mục đều có giải thích rõ ràng tại sao cần, và có link đến tài liệu chuẩn.

Mình đã từng làm checklist riêng cho việc audit website, nhưng phải nói là bản này comprehensive hơn nhiều. Nó có cả những thứ mình hay quên như llms.txt, security.txt, agent well-known URIs.

9 Phần Chính Của Bản Đặc Tả — Mình Điểm Qua Từng Phần

Bản đặc tả chia thành 9 phần chính. Mình sẽ đi qua từng phần, nêu bật những mục quan trọng nhất mà nhiều developer hay bỏ sót.

1. Foundations — Nền Tảng HTML

Phần này covers những thứ cơ bản nhưng không phải ai cũng làm đúng. Có 14 mục:

Những mục mình thấy nhiều người hay sai:

  • <!doctype html> — đúng rồi, vẫn có người quên. Không có nó, browser vào quirks mode và layout sẽ bị hỏng.
  • <html lang="vi"> — cực kỳ quan trọng cho website tiếng Việt. Screen reader, translator, search engine đều cần nó. Mình từng audit website tiếng Việt mà để lang="en", Google hiểu sai hoàn toàn.
  • <meta charset="UTF-8"> — phải nằm trong 1024 bytes đầu tiên của HTML. Tiếng Việt có dấu mà không có charset đúng là toàn ô vuông.
  • <meta name="viewport"> — một dòng, nhưng không bao giờ được disable user scaling (tức là không dùng maximum-scale=1.0). Accessibility fail ngay.
Lưu ý: Bản đặc tả nhấn mạnh rằng <title> phải có trên mọi trang, không trống, và unique cho mỗi trang. Mình thấy nhiều trang WordPress để chung title cho tất cả pages — đây là lỗi SEO nghiêm trọng.

2. SEO — Tầm Nhìn Tìm Kiếm

Phần SEO có 8 mục, rất bài bản:

  • robots.txt — chuẩn hóa theo RFC 9309. Đừng quên thêm Sitemap URL vào.
  • XML Sitemaps — danh sách tất cả canonical URLs. Dưới 50,000 URL thì một file就够了, trên đó phải dùng sitemap index.
  • URL Structure — lowercase, dùng hyphen, mô tả được nội dung, shallow. URL là public API của content.
  • Canonical URL — mỗi trang phải có rel="canonical". Tránh duplicate content.
  • Soft 404s — trang trả về 200 OK nhưng hiển thị “not found”. Google coi đây là vấn đề chất lượng và từ chối index.

Mình đặc biệt thích mục về Structured Data (Schema Markup). Bản đặc tả yêu cầu JSON-LD trên mọi trang, với loại schema phù hợp. Đây cũng chính là thứ mà AI engines (ChatGPT, Gemini, Claude) dùng để hiểu nội dung website.

3. Security — Bảo Mật

Phần bảo mật có các mục quan trọng:

  • HTTPS — bắt buộc trên mọi trang, mọi request. HTTP phải redirect 301 sang HTTPS.
  • Content Security Policy (CSP) — kiểm soát nguồn tải script, style, image. Chống XSS hiệu quả.
  • security.txt — file tại /.well-known/security.txt cho security researcher báo lỗ hổng. Rất ít website Việt Nam có file này.
Cảnh báo: Bản đặc tả nhấn mạnh rằng không bao giờ được để admin/, wp-admin/, .env hay bất kỳ file nhạy cảm nào public qua web. Mình từng thấy website để wp-config.php.bak accessible — database credentials lộ hoàn toàn.

4. Well-Known URIs

Đây là phần mà mình thấy ít developer Việt Nam biết đến nhất. Bản đặc tả yêu cầu các file sau tại /.well-known/:

  • security.txt — thông tin liên hệ báo lỗi bảo mật
  • change-password — redirect đến trang đổi mật khẩu (chuẩn web standard)
  • assetlinks.json — cho Android App Links
  • apple-app-site-association — cho iOS Universal Links

5. Agent Readiness — Sẵn Sàng Cho AI Agents

Đây là phần mới nhất và mình nghĩ sẽ ngày càng quan trọng:

  • llms.txt — file text tại /llms.txt mô tả nội dung website cho AI agents. Giống như robots.txt nhưng cho LLMs.
  • llms-full.txt — bản đầy đủ, concat tất cả nội dung vào một file.
  • MCP Server — bản đặc tả ví dụ tích hợp MCP (Model Context Protocol) server tại https://mcp.specification.website/mcp, cung cấp các tools như search, audit_url, get_checklist.
  • Agent Skills — file SKILL.md tại /.well-known/agent-skills/ để AI agents biết khi nào và cách nào truy vấn website.

Mình thấy đây là xu hướng mà mọi website nên bắt đầu chuẩn bị. Khi AI agents ngày càng phổ biến, website có llms.txt và MCP sẽ được ưu tiên truy xuất.

6. Accessibility — Truy Cập Cho Mọi Người

Phần accessibility bao gồm:

  • Mọi ảnh phải có alt text mô tả (decorative images thì dùng alt="")
  • Form inputs phải có <label> liên kết
  • Màu sắc không được là cách duy nhất truyền thông tin
  • Contrast ratio tối thiểu 4.5:1 cho text thường
  • Keyboard navigation phải hoạt động trên mọi interactive element

7. Performance — Tốc Độ Tải Trang

  • Core Web Vitals đạt ngưỡng “Good”: LCP dưới 2.5s, INP dưới 200ms, CLS dưới 0.1
  • Lazy loading cho images below the fold
  • Preload critical resources (fonts, above-the-fold images)
  • Compression: Brotli hoặc gzip cho mọi text response

8. Privacy — Quyền Riêng Tư

  • Cookie consent banner nếu dùng analytics/tracking
  • robots.txt block các path nhạy cảm
  • Không track users mà không có consent
  • Referrer-Policy header để kiểm soát thông tin gửi đi khi click external link

9. Internationalisation — Đa Ngôn Ngữ

Quan trọng cho website tiếng Việt có thể mở rộng sang tiếng Anh hoặc ngược lại:

  • hreflang tags cho các ngôn ngữ thay thế
  • Ngôn ngữ được khai báo đúng trên <html lang>
  • Text trong images có translation
  • Date/number format phù hợp locale

Cách Sử Dụng Website Specification Thực Tế

Bản đặc tả cung cấp 3 cách tiếp cận:

Cách 1: Đọc Trực Tiếp Trên Web

Truy cập specification.website, duyệt qua từng phần. Mỗi mục có giải thích chi tiết, ví dụ code, và link đến tài liệu chính thức. Bạn cũng có thể tải file Markdown bằng cách thêm .md vào cuối URL.

Cách 2: Dùng File llms-full.txt

Truy cập https://specification.website/llms-full.txt — đây là toàn bộ nội dung bản đặc tả trong một file text duy nhất. Bạn có thể nạp file này vào ChatGPT, Claude, hay bất kỳ AI nào và yêu cầu audit website của mình.

Ví dụ prompt:

“Đây là bản đặc tả website chuẩn. Hãy kiểm tra website example.com dựa trên các tiêu chí trong file này và liệt kê những gì còn thiếu.”

Cách 3: Dùng MCP Server

Nếu bạn dùng Claude Code hoặc AI agent hỗ trợ MCP, kết nối đến https://mcp.specification.website/mcp. Server này cung cấp 5 tools:

  • search — tìm kiếm trong bản đặc tả
  • list_topics — liệt kê tất cả chủ đề
  • get_topic — lấy chi tiết một chủ đề
  • get_checklist — tạo checklist audit
  • audit_url — audit một URL cụ thể

Mình đã thử kết nối qua Claude Code và nó hoạt động rất tốt. Agent tự động kiểm tra website dựa trên đặc tả và trả về báo cáo chi tiết.

Bảng So Sánh: Website Của Bạn Đã Đủ Chưa?

PhầnSố mụcDễ bỏ sót nhất
Foundations14lang attribute, charset vị trí, feed discovery
SEO8Soft 404s, structured data, URL structure
Security6CSP headers, security.txt, HSTS
Well-Known URIs4Gần như toàn bộ phần này
Agent Readiness4llms.txt, MCP server, agent skills
Accessibility5Alt text, keyboard nav, contrast
Performance4Brotli compression, preload
Privacy3Referrer-Policy, cookie consent
i18n4hreflang, locale format

Tổng cộng: khoảng 52 mục cần kiểm tra. Nghe nhiều, nhưng phần lớn là one-time setup.

5 Bước Áp Dụng Ngay Cho Website WordPress

Bước 1: Kiểm Tra Foundations (15 phút)

Mở source code website, kiểm tra:

  • <!doctype html> có ở dòng đầu tiên không
  • <html lang="vi"> cho website tiếng Việt
  • <meta charset="UTF-8"> có trong head không
  • <meta name="viewport"> có và không disable scaling
  • <title> unique trên mỗi trang

WordPress: Theme tốt thường đã xử lý phần này. Nếu dùng custom theme, kiểm tra header.php.

Bước 2: Setup SEO Essentials (30 phút)

  • robots.txt: thêm Sitemap: URL
  • XML Sitemap: cài Yoast SEO hoặc Rank Math nếu chưa có
  • Canonical URL: plugin SEO tự thêm, nhưng verify
  • Schema Markup: đảm bảo JSON-LD trên mỗi trang (Yoast/Rank Math hỗ trợ)

Bước 3: Harden Security (30 phút)

  • HTTPS: đảm bảo toàn bộ site qua HTTPS, HTTP redirect 301
  • Security headers: cài Really Simple SSL hoặc thêm vào .htaccess
  • Tạo security.txt tại /.well-known/security.txt
  • Kiểm tra không có file nhạy cảm nào public

Bước 4: Tạo llms.txt Cho AI Agents (15 phút)

Đây là bước mới nhất mà mình khuyến nghị. Tạo file /llms.txt mô tả website của bạn:

Upload lên root directory. AI agents như ChatGPT, Claude, Perplexity sẽ dùng file này để hiểu website của bạn tốt hơn.

Bước 5: Audit Hoàn Chỉnh Bằng AI (20 phút)

Lấy nội dung từ llms-full.txt của specification.website, nạp vào ChatGPT hoặc Claude cùng URL website của bạn. Yêu cầu audit dựa trên bản đặc tả.

Mình test thử trên 3 website và phát hiện trung bình 8-12 mục còn thiếu. Phần bị thiếu nhiều nhất: well-known URIs (gần 100% thiếu), security headers (khoảng 70% thiếu), và llms.txt (100% chưa có).

Troubleshooting — Những Lỗi Thường Gặp

Lỗi: robots.txt không được đọc

Kiểm tra file nằm đúng tại root (/robots.txt), trả về 200 OK, và content-type là text/plain. WordPress đôi khi can thiệp vào URL này.

Lỗi: Schema markup không hiển thị trong test tool

Đảm bảo JSON-LD hợp lệ (dùng Google Rich Results Test). Thường bị lỗi dấu phẩy cuối hoặc nháy đơn/kép. Plugin Yoast SEO sinh JSON-LD tự động nên ít bị lỗi hơn.

Lỗi: llms.txt trả về 404

File phải nằm tại root directory. Trên WordPress, kiểm tra permalink settings không override URL này. Nếu dùng Nginx, thêm location rule cho /llms.txt.

Lỗi: Security headers không xuất hiện

Nếu dùng Apache, thêm vào .htaccess. Nếu dùng Nginx, thêm vào server block. Nếu dùng Cloudflare, dùng Transform Rules. Plugin WordPress như Really Simple SSL hoặc Security Optimizer cũng có thể thêm headers.

Lỗi: hreflang xung đột với canonical

Mỗi hreflang URL phải self-referencing canonical. Đừng để canonical trỏ về URL mặc định khi có hreflang alternate.

Ý Kiến Cá Nhân Của Mình

Mình đã audit và setup hàng chục website trong vài năm qua. Bản đặc tả này là thứ mình ước gì có từ lâu. Thay vì phải nhớ checklist rải rác từ Google Search Central, MDN, W3C, OWASP — giờ tất cả ở một nơi.

Phần mình thấy giá trị nhất là Agent Readiness. Đây là xu hướng mới và hầu hết website Việt Nam chưa hề chuẩn bị. Khi AI search engines (ChatGPT, Gemini, Perplexity) ngày càng phổ biến, có llms.txt và agent-ready structure sẽ là lợi thế SEO/GEO đáng kể.

Mình khuyến nghị mọi developer và chủ website dành khoảng 1-2 giờ chạy qua checklist này. Khoảng 80% các mục là one-time setup — làm một lần, quên đi. 20% còn lại (như sitemap, llms.txt) cần update định kỳ nhưng cũng không mất nhiều thời gian.

Bản đặc tả hoàn toàn miễn phí, open-source dưới MIT licence. Bạn có thể dùng cho project cá nhân hay enterprise đều được. Và vì nó được xây dựng công khai, cộng đồng liên tục đóng góp và cập nhật.

Nếu bạn muốn bắt đầu ngay, mình đề xuất đọc phần FoundationsSEO trước — hai phần này có tác động lớn nhất. Sau đó mới đến Security và Agent Readiness. Không cần làm hết một lần, nhưng cần bắt đầu.

CONTENT_EOF

)

Thanh Tùng

Mình là Thanh Tùng. Bạn bè gọi mình là "bác sĩ máy tính" vì hễ máy nào có vấn đề là mình muốn mò vào xem sao. Mình viết hướng dẫn theo cách mà mình mong người khác đã viết cho mình ngày xưa — từng bước rõ ràng, không bỏ sót, và nói luôn cái gì hay bị lỗi. Ngoài giờ làm mình chơi guitar, nuôi mèo, và có một con VPS riêng dành riêng cho việc cài thử đủ thứ linh tinh.

Xem tất cả bài viết →

Để lại một bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *