RED · DỊCH VỤ SEO

Dịch vụ SEO kỹ thuật: chẩn đoán theo tầng, ưu tiên theo bằng chứng, đóng vòng bằng QA

Dịch vụ SEO kỹ thuật của RED: chẩn đoán theo tầng crawl – render – index, ma trận trạng thái indexability, cây quyết định canonical/redirect và QA sau deploy.

Phần lớn báo cáo Technical SEO mà doanh nghiệp nhận được là một danh sách lỗi xuất từ công cụ crawl: 170 issue, chia thành ba mức đỏ – vàng – xanh, kèm một điểm số sức khỏe website. Vấn đề nằm ở chỗ danh sách đó không trả lời được câu hỏi duy nhất mà đội kỹ thuật cần: URL này đang hỏng ở đâu, và sửa xong thì lấy gì để chứng minh là đã hết hỏng.

Trang này mô tả cách RED tiếp cận SEO kỹ thuật theo hướng ngược lại với danh sách lỗi. Điểm bắt đầu là một funnel chẩn đoán: một URL phải đi qua discovery, crawl, render, indexability, canonical selection rồi mới tới search appearance. Hỏng ở tầng nào thì cách xử lý và bằng chứng nghiệm thu ở tầng đó khác nhau hoàn toàn. Sửa nhầm tầng là dạng lãng phí phổ biến nhất trong các dự án technical.

Một ranh giới cần nói trước. Tài liệu kỹ thuật của Google nêu điều kiện tối thiểu để một trang đủ tư cách xuất hiện trên Google Search: Googlebot không bị chặn, trang trả HTTP 200 thành công, và trang có nội dung có thể lập chỉ mục. Đáp ứng đủ ba điều kiện đó không đồng nghĩa trang sẽ được index. Đó là điều kiện cần, không phải điều kiện đủ. Vì vậy RED không cam kết index, không cam kết thứ hạng và không cam kết mốc thời gian phục hồi sau khi sửa lỗi kỹ thuật. Cái RED cam kết được là quy trình chẩn đoán có bằng chứng, tiêu chí nghiệm thu rõ ràng và trạng thái kỹ thuật sau xử lý được kiểm chứng lại bằng dữ liệu chứ không bằng cảm giác.

Technical SEO là một diagnostic funnel, không phải một checklist

Câu hỏi mở đầu của mọi dự án kỹ thuật không phải "website có bao nhiêu lỗi" mà là "URL quan trọng đang dừng lại ở tầng nào".

Một URL đi từ trạng thái không tồn tại trong hệ thống Google đến trạng thái hiển thị trên kết quả tìm kiếm qua nhiều tầng nối tiếp. Google phải biết URL tồn tại (discovery). Googlebot phải lấy được URL (crawl). Nội dung phụ thuộc JavaScript phải được dựng lại (render). Trang phải không bị chặn lập chỉ mục (indexability). Google phải chọn chính URL đó làm bản đại diện cho nhóm nội dung trùng lặp (canonical selection). Cuối cùng mới đến chuyện trang có được chọn hiển thị cho truy vấn nào.

Điểm quan trọng: mỗi tầng có một loại triệu chứng riêng và một loại bằng chứng riêng. Trang không được index vì bị chặn trong robots.txt và trang không được index vì Google chọn URL khác làm canonical là hai vấn đề khác nhau về bản chất, cần hai cách xử lý khác nhau, và không có checklist chung nào giải quyết được cả hai.

Vì sao nhảy thẳng vào checklist gây hại

Khi bỏ qua bước chẩn đoán tầng, đội triển khai thường làm ba việc theo phản xạ: nộp lại sitemap, thêm thẻ canonical hàng loạt, và tối ưu tốc độ. Cả ba đều là hành động hợp lệ trong đúng ngữ cảnh. Nhưng nếu URL đang bị chặn ở tầng crawl, không hành động nào trong ba thứ đó chạm được vào nguyên nhân. Kết quả là dự án tiêu hết ngân sách dev cho những thay đổi không liên quan đến vấn đề gốc, rồi kết luận sai rằng "technical đã làm rồi mà không lên".

Funnel chẩn đoán Crawl – Render – Index

TầngCâu hỏi chẩn đoánBằng chứng cần lấyTriệu chứng khi hỏng
DiscoveryGoogle có biết URL này tồn tại không?Sitemap, internal link, report Pages trong Search ConsoleURL không xuất hiện trong bất kỳ report nào; orphan page
CrawlGooglebot có lấy được URL không?robots.txt, HTTP status, log server (nếu có), crawl statsBlocked by robots.txt; lỗi 5xx; timeout
RenderNội dung và link có tồn tại sau khi dựng trang không?So sánh HTML nguồn với DOM đã render, URL InspectionTrang trắng trong rendered HTML; link không tồn tại ở HTML ban đầu
IndexabilityTrang có tự chặn lập chỉ mục không?Meta robots, header X-Robots-Tag, HTTP statusCrawled – currently not indexed; Excluded by noindex tag
Canonical selectionGoogle chọn URL nào làm bản đại diện?URL Inspection: canonical do người dùng khai và canonical Google chọnAlternate page with proper canonical tag; Duplicate, Google chose different canonical
Search appearanceTrang có đủ điều kiện cho các tính năng hiển thị không?Structured data test, report EnhancementsRich result không đủ điều kiện; hiển thị sai tiêu đề

Cách đọc bảng này trong thực tế: chọn ra nhóm URL có giá trị thương mại cao nhất (trang dịch vụ, trang danh mục, trang sản phẩm chủ lực), chạy từng tầng từ trên xuống, dừng lại ở tầng đầu tiên có bằng chứng bất thường. Đó là tầng cần xử lý. Các tầng phía dưới chưa cần đụng đến vì trạng thái của chúng chưa đáng tin khi tầng trên còn hỏng.

Một lưu ý về giới hạn của chính phương pháp này. Funnel giúp khoanh vùng nguyên nhân, không giúp dự đoán kết quả. Khi một URL vượt qua toàn bộ sáu tầng và vẫn không được index, kết luận đúng là "trang đã đủ điều kiện kỹ thuật, phần còn lại nằm ngoài phạm vi technical" — chứ không phải "cần sửa thêm lỗi kỹ thuật". Việc phân biệt hai kết luận này giữ cho ngân sách dev không bị đốt vào những thay đổi không có cơ sở.

Indexability là một trạng thái, không phải một ô tích

Câu hỏi ở tầng này: sự kết hợp giữa robots.txt, thẻ meta robots, header HTTP, mã trạng thái và thẻ canonical tạo ra những trạng thái nào, và trạng thái nào đang lệch so với ý định của doanh nghiệp?

Sai lầm phổ biến nhất là coi indexability như một công tắc bật/tắt. Thực tế nó là kết quả của nhiều tín hiệu chồng lên nhau, và các tín hiệu này có thể mâu thuẫn. Một trang bị chặn trong robots.txt nhưng có thẻ noindex sẽ không cho ra kết quả như người triển khai mong đợi: Googlebot không tải được trang nên không đọc được thẻ noindex. Đây là lý do robots.txt không phải công cụ để gỡ một trang khỏi chỉ mục. Muốn một trang không xuất hiện trong kết quả tìm kiếm, trang đó phải cho phép crawl để Google đọc được chỉ thị noindex.

Ma trận trạng thái indexability

Trạng tháirobots.txtMeta robots / X-Robots-TagHTTP statusCanonicalKết quả kỳ vọngCách xác minh
Bị chặn crawlDisallowKhông đọc đượcKhông xác địnhKhông đọc đượcKhông crawl; vẫn có thể xuất hiện dạng URL trần nếu có link trỏ tớirobots.txt tester; report Pages
200 + noindexAllownoindex200Bất kỳKhông index; đây là cách gỡ trang đúngURL Inspection; xem header response
404 thậtAllow404/410Loại khỏi chỉ mục sau khi crawl lạiKiểm tra status code trực tiếp
Soft 404Allow200Google coi như không tồn tại dù server trả 200Report Pages: Soft 404
RedirectAllow301/302Tín hiệu hợp nhất về URL đíchTheo dõi chuỗi redirect
Duplicate có canonicalAllowindex200Trỏ URL khácGoogle có thể chọn URL đích, có thể khôngURL Inspection: so sánh canonical khai vs canonical Google chọn
IndexableAllowindex200Tự trỏ chính nóĐủ điều kiện xét indexURL Inspection

Đối chiếu kỳ vọng với thực tế

Giá trị của ma trận không nằm ở việc liệt kê trạng thái mà ở việc đối chiếu. Với mỗi nhóm URL, doanh nghiệp cần trả lời: trạng thái mong muốn là gì, trạng thái thực tế là gì, và nếu lệch thì lệch do đâu.

Các cặp lệch hay gặp trong dự án thực tế:

Trang lọc và trang sắp xếp trong danh mục thương mại điện tử được kỳ vọng không index, nhưng thực tế trả 200, indexable, canonical tự trỏ — sinh ra hàng nghìn URL cạnh tranh nội bộ.

Trang dịch vụ chủ lực được kỳ vọng index, nhưng bị dính noindex sót lại từ môi trường staging sau một lần deploy.

Trang đã ngừng kinh doanh được kỳ vọng loại khỏi chỉ mục, nhưng template lỗi trả về 200 với nội dung rỗng — tạo soft 404 hàng loạt.

Trang phân trang được kỳ vọng đóng vai trò discovery, nhưng bị canonical hóa toàn bộ về trang 1, khiến sản phẩm ở các trang sau mất đường vào.

Mỗi cặp lệch là một finding có thể mô tả bằng câu: URL nhóm X đang ở trạng thái A, cần ở trạng thái B, nguyên nhân nằm ở tầng C, sửa bằng thay đổi D, nghiệm thu bằng bằng chứng E. Cách viết finding này quan trọng hơn số lượng finding, vì nó chuyển vấn đề từ ngôn ngữ SEO sang ngôn ngữ mà đội phát triển có thể nhận việc và đóng việc.

Ranh giới cần giữ: không có trạng thái nào trong bảng trên bảo đảm được index. Ngay cả trạng thái Indexable cũng chỉ mô tả rằng trang không tự loại mình khỏi cuộc xét. Việc Google có index hay không phụ thuộc vào các yếu tố nằm ngoài quyền kiểm soát của bên triển khai kỹ thuật.

Canonical, redirect và duplicate cần một cây quyết định

Câu hỏi ở tầng này: với một URL cụ thể, nên đặt canonical, chuyển hướng 301, trả 404/410, hay giữ nguyên như một trang độc lập?

Tài liệu của Google mô tả canonicalization là quá trình Google chọn một URL đại diện khi có nhiều URL cùng chứa nội dung giống hoặc gần giống nhau. Thẻ canonical mà website khai báo là một tín hiệu để Google cân nhắc, không phải một mệnh lệnh. Google có thể chọn URL khác với URL được khai báo, và điều này xảy ra thường xuyên khi tín hiệu nội bộ mâu thuẫn: canonical trỏ một hướng nhưng internal link, sitemap và redirect lại trỏ hướng khác.

Hệ quả thực tế: đặt canonical không phải là kết thúc công việc. Sau khi đặt, phải kiểm tra lại Google thực sự chọn URL nào.

Cây quyết định canonical – redirect

Tình huốngNội dung có tương đương không?Người dùng còn cần URL cũ không?Hành độngLý doRủi ro nếu làm sai
URL trùng do tham số theo dõiKhôngCanonical về URL sạch, giữ tham số hoạt độngGộp tín hiệu, không phá luồng trackingChặn tham số trong robots.txt làm mất luôn khả năng đánh giá
URL đã chuyển vĩnh viễnKhông301 về URL mớiChuyển hướng cả người dùng lẫn tín hiệu302 kéo dài khiến tín hiệu không hợp nhất
Biến thể sản phẩm khác biệt rõ (màu, dung lượng)Không hoàn toànGiữ riêng, canonical tự trỏMỗi biến thể phục vụ một truy vấn riêngCanonical gộp về sản phẩm gốc làm mất trang có nhu cầu tìm kiếm thật
Trang lọc không có nhu cầu tìm kiếmCó phầnCó, trong phiên duyệtCho crawl, đặt noindex, giữ link nội bộNgười dùng vẫn dùng bộ lọc; Google không cần indexChặn robots.txt làm Googlebot không đọc được noindex
Trang ngừng vĩnh viễn, không có trang thay thếKhông410 (hoặc 404)Tín hiệu dứt khoát, không tạo redirect rác301 về trang chủ hàng loạt dễ bị coi là soft 404
Trang ngừng nhưng có trang thay thế sát nghĩaGần tương đương301 về trang thay thếGiữ trải nghiệm và tín hiệu301 về trang không liên quan gây trải nghiệm hụt
Nội dung trùng giữa hai ngôn ngữ / khu vựcKhông (khác đối tượng)Giữ riêng, khai báo hreflang, canonical tự trỏHai trang phục vụ hai nhóm người dùngCanonical chéo giữa hai phiên bản làm mất một thị trường

Ba điều kiện phải kiểm trước khi canonical hàng loạt

Việc canonical hóa cơ học — đặt canonical cho mọi URL trùng mà không xét ngữ cảnh — là nguồn gốc của phần lớn sự cố mất trang trong các dự án thương mại điện tử. Trước khi áp dụng quy tắc canonical trên diện rộng, cần kiểm tra:

Thứ nhất, nội dung có thực sự tương đương không. Hai trang khác nhau ở một thuộc tính mà người dùng dùng để tìm kiếm thì không tương đương, dù template giống nhau đến chín mươi phần trăm.

Thứ hai, các tín hiệu khác có đồng thuận không. Canonical trỏ URL A trong khi sitemap liệt kê URL B và toàn bộ internal link trỏ URL C là trạng thái mâu thuẫn. Google sẽ tự quyết, và kết quả thường không phải cái bên triển khai mong muốn.

Thứ ba, sau khi triển khai, canonical Google chọn là URL nào. Đây là bước hay bị bỏ. URL Inspection trong Search Console hiển thị đồng thời canonical do người dùng khai và canonical do Google chọn. Chỉ khi hai giá trị này trùng nhau thì mới coi là đã xử lý xong.

Trong phạm vi dịch vụ, RED xử lý phần cơ chế URL: xác định nhóm trùng lặp, dựng quy tắc canonical/redirect theo tình huống, và kiểm chứng lại kết quả sau triển khai. Phần quyết định trang nào nên tồn tại theo chiến lược kinh doanh thuộc về doanh nghiệp, vì nó liên quan đến danh mục sản phẩm và định hướng thị trường chứ không phải kỹ thuật.

JavaScript phải được kiểm tra bằng bằng chứng đã render

Câu hỏi ở tầng này: nội dung và liên kết chỉ xuất hiện sau khi JavaScript chạy — công cụ tìm kiếm có thấy chúng không?

Google có tài liệu riêng về cách xử lý JavaScript, mô tả quy trình crawl, render rồi mới index, cùng những điểm cần kiểm tra khi nội dung phụ thuộc vào JS. Điều tài liệu đó không nói là "mọi website JavaScript đều phải chuyển sang server-side rendering". RED không mặc định SSR là bắt buộc. SSR là một trong nhiều phương án, có chi phí kỹ thuật thật, và chỉ nên đề xuất khi bằng chứng render cho thấy có vấn đề cụ thể không giải quyết được bằng cách khác.

Nguyên tắc làm việc: không tranh luận về framework, chỉ so sánh bằng chứng. HTML nguồn ban đầu chứa gì, DOM sau khi render chứa gì, và khoảng chênh giữa hai thứ đó có ảnh hưởng đến nội dung hay liên kết quan trọng không.

Bộ bằng chứng render JavaScript

Hạng mục kiểm traCách lấy bằng chứngĐạtKhông đạt
Nội dung chínhSo sánh HTML nguồn và rendered HTML trong URL InspectionNội dung chính có mặt trong rendered HTMLRendered HTML trống hoặc chỉ có khung layout
Liên kết nội bộTìm thẻ <a href> trong rendered HTMLLink là thẻ a có thuộc tính hrefĐiều hướng bằng sự kiện click, không có href
Nội dung tải trễCuộn/kích hoạt rồi kiểm tra lại DOMNội dung xuất hiện mà không cần thao tác người dùngNội dung chỉ hiện sau khi người dùng bấm
Định tuyến phía clientKiểm tra URL có thay đổi và trả 200 khi truy cập trực tiếpMỗi trạng thái có một URL riêng, truy cập trực tiếp đượcNội dung chỉ đến được qua điều hướng trong ứng dụng
Tài nguyên bị chặnĐối chiếu robots.txt với file JS/CSS cần cho renderTài nguyên cần cho render không bị chặnJS/CSS bị Disallow khiến render lỗi
Thẻ meta sinh bởi JSSo sánh thẻ trong HTML nguồn và sau renderThẻ tiêu đề, mô tả, canonical, robots nhất quánThẻ bị ghi đè sau render, mâu thuẫn với HTML nguồn
Lỗi thời gian chờKiểm tra thời gian tải tài nguyên chặn renderTài nguyên phản hồi ổn địnhTài nguyên bên thứ ba lỗi làm hỏng toàn bộ render

Trường hợp gây tổn hại âm thầm nhất trong bảng này là mục liên kết nội bộ. Khi điều hướng được xây bằng sự kiện JavaScript thay vì thẻ a có href, người dùng vẫn duyệt được website bình thường, không có lỗi nào hiện ra, không công cụ nào báo đỏ — nhưng cấu trúc liên kết mà crawler nhìn thấy nghèo hơn nhiều so với cấu trúc thật. Hệ quả là các trang sâu trở thành trang mồ côi dù menu vẫn dẫn tới chúng.

Khi bằng chứng render cho thấy vấn đề, thứ tự xem xét phương án nên đi từ rẻ đến đắt: sửa cách khai báo liên kết trước, xử lý tài nguyên bị chặn, điều chỉnh cách sinh thẻ meta, cải thiện định tuyến — rồi mới cân nhắc thay đổi kiến trúc render. Đề xuất SSR ngay từ đầu khi chưa loại trừ các nguyên nhân rẻ hơn là cách nhanh nhất để một dự án technical bị đội chi phí mà không cần thiết.

Sitemap là tín hiệu khám phá, không phải vé vào chỉ mục

Câu hỏi ở tầng này: sitemap nên chứa những URL nào, và kiểm soát chất lượng của nó bằng cách gì?

Tài liệu của Google mô tả sitemap là cách giúp Google phát hiện URL trên website, đặc biệt hữu ích với website lớn, website mới hoặc website có ít liên kết ngoài. Mỗi file sitemap giới hạn 50MB khi chưa nén và tối đa 50.000 URL; website vượt ngưỡng thì tách nhiều file và dùng file chỉ mục sitemap. Điều tài liệu nêu rõ: sitemap không bảo đảm URL trong đó sẽ được crawl hay được index.

Điều này định vị lại vai trò của sitemap trong dự án. Nộp lại sitemap không phải là hành động khắc phục cho một trang không được index. Nó chỉ có tác dụng khi vấn đề nằm ở tầng discovery — tức Google chưa biết URL tồn tại.

Checklist chất lượng sitemap

Tiêu chíYêu cầuCách kiểm traHệ quả khi sai
Chỉ chứa URL canonicalKhông đưa URL bị canonical về nơi khácĐối chiếu danh sách sitemap với thẻ canonicalTín hiệu mâu thuẫn: sitemap nói A, canonical nói B
URL trả 200 và cho phép indexLoại URL 404, redirect, noindexCrawl toàn bộ danh sách trong sitemapLãng phí ngân sách crawl, sinh cảnh báo trong Search Console
Giá trị lastmod phản ánh thay đổi thậtChỉ cập nhật khi nội dung thay đổi thực sựĐối chiếu lastmod với lịch sử chỉnh sửa trong CMSCập nhật hàng loạt mỗi lần build làm mất ý nghĩa của tín hiệu
Tuân thủ giới hạn dung lượngDưới 50MB chưa nén, dưới 50.000 URL mỗi fileĐếm dòng, kiểm tra dung lượng fileFile bị bỏ qua một phần hoặc toàn bộ
Tách theo nhóm nội dungChia sitemap theo loại trangKiểm tra file chỉ mục sitemapKhông xác định được nhóm nào đang gặp vấn đề coverage
Khai báo và theo dõiNộp trong Search Console, khai trong robots.txtXem report SitemapsLỗi phân tích cú pháp không được phát hiện
Đồng bộ khi có thay đổi cấu trúcSinh lại sau mỗi lần thay đổi URLSo khớp sitemap với crawl sau deploySitemap trỏ URL đã chết sau khi tái cấu trúc

Giá trị vận hành lớn nhất nằm ở tiêu chí tách theo nhóm. Khi sitemap được chia thành các file riêng cho trang dịch vụ, trang danh mục, trang sản phẩm và bài viết, report Sitemaps trở thành công cụ chẩn đoán theo nhóm chứ không chỉ là nơi nộp file: có thể thấy nhóm nào đang có tỷ lệ URL được phát hiện nhưng chưa index cao bất thường, và khoanh vùng nguyên nhân theo template thay vì theo từng URL lẻ.

Hiệu năng nằm trong chương trình kỹ thuật, nhưng không phải toàn bộ

Câu hỏi ở tầng này: khi nào một vấn đề hiệu năng thực sự đáng đưa lên đầu hàng đợi phát triển?

Cần tách hai chuyện. Hiệu năng ảnh hưởng đến trải nghiệm người dùng — điều này quan sát được trực tiếp qua tỷ lệ rời trang, tỷ lệ hoàn tất biểu mẫu, hành vi trên di động. Hiệu năng ảnh hưởng đến thứ hạng — điều này là quan hệ gián tiếp, phụ thuộc ngữ cảnh cạnh tranh, và không thể quy ra một lời hứa. RED không tuyên bố rằng đạt ngưỡng Core Web Vitals sẽ làm tăng thứ hạng. Cải thiện hiệu năng được đề xuất khi có bằng chứng người dùng thật đang gặp vấn đề, không phải vì một điểm số cần lên màu xanh.

Khác biệt giữa dữ liệu thực địa và dữ liệu phòng thí nghiệm quan trọng ở đây. Dữ liệu thực địa đến từ người dùng thật với thiết bị thật và mạng thật; dữ liệu phòng thí nghiệm đến từ một lần chạy mô phỏng trong điều kiện chuẩn hóa. Điểm số phòng thí nghiệm thấp trong khi dữ liệu thực địa ổn là tình huống nên xếp ưu tiên thấp. Trường hợp ngược lại — dữ liệu thực địa xấu trên một template phủ nhiều trang quan trọng — mới là thứ cần đưa vào sprint.

Bảng ưu tiên hiệu năng

Chỉ sốNguyên nhân thường gặpBằng chứng cần cóĐòn bẩyKhi nào ưu tiên cao
LCPẢnh hero nặng, thời gian phản hồi máy chủ, tài nguyên chặn renderDữ liệu thực địa theo template, waterfall tải trangTemplate dùng chungChậm trên nhóm trang mang doanh thu
INPTác vụ JS dài, script bên thứ ba, xử lý sự kiện nặngDữ liệu thực địa, hồ sơ tác vụ dàiGỡ hoặc hoãn scriptTrang có tương tác chính: form, bộ lọc, giỏ hàng
CLSẢnh không khai kích thước, banner chèn muộn, font hoán đổiGhi hình quá trình tải, dữ liệu thực địaSửa ở tầng layoutNgười dùng bấm nhầm trên di động
TTFBMáy chủ chậm, thiếu cache, truy vấn nặngĐo phía máy chủHạ tầngChậm trên toàn site, không riêng template nào

Cách chọn việc: ưu tiên theo template chứ không theo URL. Sửa một vấn đề nằm trong template danh mục sẽ chạm tới toàn bộ trang dùng template đó; sửa một URL lẻ chỉ chạm tới chính nó. Với website có hàng nghìn trang, đây là khác biệt giữa một sprint có kết quả đo được và một sprint tiêu hết thời gian dev cho vài trang.

Ưu tiên xử lý phải có tác động, độ tin cậy, công sức và rủi ro

Câu hỏi ở tầng này: khi công cụ crawl trả về 170 phát hiện, chọn cái nào làm trước?

Số lượng lỗi không phải thước đo mức độ nghiêm trọng. Công cụ audit gán mức nghiêm trọng theo quy tắc chung của công cụ, không theo ngữ cảnh kinh doanh của website. Một cảnh báo "thiếu thẻ mô tả" trên hai nghìn trang lưu trữ không có lưu lượng sẽ nhảy lên đầu danh sách vì số lượng lớn, trong khi một trang dịch vụ chủ lực dính noindex chỉ đếm là một lỗi. Điểm sức khỏe website mà công cụ đưa ra là chỉ số nội bộ của công cụ đó, không phải điểm Google chấm cho website.

Vì vậy mọi phát hiện đều phải đi qua bốn câu hỏi trước khi vào hàng đợi: nó ảnh hưởng đến bao nhiêu trang có giá trị, mức độ chắc chắn của chẩn đoán tới đâu, sửa mất bao nhiêu công, và thay đổi này có khả năng làm hỏng thứ khác không.

Ma trận Tác động – Rủi ro – Công sức

Phát hiệnPhạm vi ảnh hưởngTác độngĐộ tin cậy của chẩn đoánCông sứcRủi ro hồi quyThứ tự
Trang dịch vụ chính bị noindex1 trang doanh thuCaoCao — xác minh trực tiếp đượcThấpThấpLàm ngay
Liên kết điều hướng không có hrefToàn siteCaoTrung bình — cần bằng chứng renderTrung bìnhTrung bìnhSprint gần
Chuỗi redirect 3 bước sau khi đổi tên miềnNhóm URL cũTrung bìnhCaoThấpThấpSprint gần
Trang lọc sinh URL không kiểm soátHàng nghìn URLTrung bìnhTrung bìnhCaoCaoCần thiết kế trước
Thiếu thẻ mô tả trên trang lưu trữNhiều trang, ít giá trịThấpCaoTrung bìnhThấpXếp sau
Điểm sức khỏe công cụ dưới ngưỡngKhông xác địnhKhông đo đượcThấpKhông phải một việc

Dòng cuối cùng đáng nói riêng. "Nâng điểm sức khỏe lên trên 90" không phải một yêu cầu kỹ thuật hợp lệ, vì nó không mô tả trạng thái nào của website và không có cách nghiệm thu nào ngoài việc chạy lại đúng công cụ đó. Nếu một bên cung cấp dịch vụ nhận KPI dạng này, họ sẽ tối ưu cho công cụ chứ không cho website. RED chuyển mọi yêu cầu dạng điểm số thành các phát hiện cụ thể có phạm vi, nguyên nhân và tiêu chí đóng.

Cột rủi ro hồi quy thường bị bỏ trong các báo cáo audit. Nó tồn tại vì nhiều thay đổi kỹ thuật có mặt trái: quy tắc redirect viết rộng quá tay có thể tạo vòng lặp; canonical áp hàng loạt có thể xóa sổ một nhóm trang đang có lưu lượng; chặn tham số trong robots.txt có thể làm mất khả năng đo lường chiến dịch. Một phát hiện tác động trung bình nhưng rủi ro hồi quy cao cần thiết kế và kiểm thử kỹ hơn một phát hiện tác động cao nhưng rủi ro thấp.

QA sau phát hành là thứ đóng vòng sửa lỗi

Câu hỏi ở tầng này: sau khi deploy, cần bằng chứng gì để tuyên bố một phát hiện đã được xử lý xong?

Câu trả lời không phải "code đã merge". Merge chỉ chứng minh thay đổi đã vào nhánh chính. Nó không chứng minh thay đổi đã lên môi trường sản xuất, không chứng minh nó hoạt động đúng ở đó, và không chứng minh nó không làm hỏng thứ khác. Phần lớn các dự án technical thất bại không phải vì chẩn đoán sai mà vì không có cổng kiểm soát ở bước này: phát hiện được đánh dấu hoàn thành trong bảng theo dõi trong khi trạng thái thật trên môi trường sản xuất không thay đổi.

Cổng QA SEO khi phát hành

Giai đoạnViệc kiểm traBằng chứng đóng việcNgười chịu trách nhiệm
Trước phát hànhCrawl môi trường thử nghiệm, kiểm tra thẻ robots, canonical, status code trên các mẫu trangBáo cáo crawl môi trường thử nghiệmKỹ thuật SEO + dev
Trước phát hànhXác nhận môi trường thử nghiệm không rò rỉ ra ngoàiKiểm tra chặn truy cập, chặn indexDev
Ngay sau phát hànhKiểm tra mẫu trên môi trường thật: status code, thẻ, redirectẢnh chụp phản hồi HTTP theo URL mẫuKỹ thuật SEO
Ngay sau phát hànhKiểm tra rendered HTML trên trang bị ảnh hưởngKết quả URL InspectionKỹ thuật SEO
Trong 7 ngàyCrawl toàn site, so sánh với ảnh chụp trạng thái trước deployBảng so sánh trước/sauKỹ thuật SEO
Trong 7 ngàyTheo dõi report Pages và Sitemaps trong Search ConsoleẢnh chụp báo cáo theo mốc thời gianKỹ thuật SEO
Liên tụcGhi nhật ký thay đổi và điều kiện quay luiNhật ký thay đổi có ngày, người thực hiện, phạm viDev + quản lý dự án

Ba nguyên tắc vận hành đi kèm bảng này.

Mỗi phát hiện phải có tiêu chí chấp nhận viết trước khi bắt tay sửa. Tiêu chí phải kiểm chứng được bằng một thao tác cụ thể: "URL nhóm X trả 200 và không còn thẻ noindex khi kiểm tra trực tiếp trên môi trường sản xuất" là tiêu chí hợp lệ; "sửa lỗi indexing" thì không.

Mỗi phát hiện phải có một người sở hữu và một ngày. Phát hiện không có chủ sẽ nằm trong bảng theo dõi qua nhiều sprint và cuối cùng bị đóng bằng một dòng ghi chú thay vì bằng bằng chứng.

Ảnh chụp trạng thái trước deploy phải được lưu. Không có ảnh chụp trước thì không có cách nào phân biệt một vấn đề mới xuất hiện sau deploy với một vấn đề vốn đã tồn tại từ trước. Đây là chi phí nhỏ nhất trong toàn bộ quy trình và cũng là thứ tiết kiệm nhiều thời gian tranh luận nhất khi có sự cố.

Cuối cùng, có một loại kết luận mà quy trình QA phải cho phép: đã sửa đúng, đã xác minh đúng, và trang vẫn chưa được index. Đây không phải thất bại của công việc kỹ thuật. Nó nghĩa là rào cản kỹ thuật đã được gỡ và nguyên nhân còn lại nằm ở phạm vi khác — chất lượng nội dung, mức độ trùng lặp với nội dung đã có trên web, hoặc mức độ ưu tiên mà Google dành cho website ở thời điểm đó. Việc gọi đúng tên kết luận này giữ cho dự án không tiếp tục đổ nguồn lực dev vào một tầng đã sạch.

Ranh giới giữa SEO kỹ thuật và các cụm dịch vụ khác

Để tránh chồng lấn phạm vi, RED tách rõ: SEO kỹ thuật sở hữu cơ chế crawl, render, index, phản hồi máy chủ và cấu trúc URL. SEO Onpage sở hữu ý định tìm kiếm, cấu trúc nội dung và giải phẫu trang. Khi doanh nghiệp cần một lần đánh giá tổng thể trước khi quyết định đầu tư vào hạng mục nào, SEO Audit là điểm bắt đầu phù hợp hơn. Với website thương mại điện tử, các vấn đề kỹ thuật thường gắn với cấu trúc danh mục, bộ lọc và biến thể sản phẩm — phần này được xử lý trong SEO ecommerce với cùng bộ công cụ chẩn đoán nhưng đặt trong bài toán danh mục.

Về phía năng lực triển khai: RED làm phần chẩn đoán, thiết kế giải pháp, viết tiêu chí chấp nhận và kiểm chứng sau deploy. Phần viết code và deploy do đội phát triển của doanh nghiệp hoặc đối tác kỹ thuật thực hiện, trừ khi có thỏa thuận riêng — [CẦN RED XÁC NHẬN] phạm vi thực thi kỹ thuật mà RED nhận trực tiếp.

Câu hỏi thường gặp

SEO kỹ thuật khác SEO Onpage ở điểm nào?

SEO kỹ thuật xử lý cơ chế: Googlebot có vào được không, trang có dựng được nội dung không, URL nào được chọn làm bản đại diện, máy chủ trả mã trạng thái gì. SEO Onpage xử lý nội dung: trang này phục vụ ý định tìm kiếm nào, cấu trúc tiêu đề ra sao, nội dung có đủ độ sâu cho truy vấn mục tiêu không. Một trang có thể hoàn hảo về Onpage nhưng không bao giờ xuất hiện vì bị chặn ở tầng kỹ thuật, và ngược lại.

Sửa hết lỗi kỹ thuật thì trang có được index không?

Không có bảo đảm. Tài liệu của Google nêu rõ các điều kiện kỹ thuật tối thiểu — không bị chặn crawl, trả HTTP 200, có nội dung lập chỉ mục được — là điều kiện để trang đủ tư cách được xét, không phải điều kiện bảo đảm được index. Sửa lỗi kỹ thuật gỡ bỏ rào cản; việc Google có index hay không phụ thuộc thêm nhiều yếu tố khác.

Đặt thẻ canonical có buộc Google phải chọn URL đó không?

Không. Google mô tả thẻ canonical do website khai báo là một tín hiệu được cân nhắc trong quá trình chọn URL đại diện. Google có thể chọn URL khác, đặc biệt khi các tín hiệu nội bộ mâu thuẫn nhau. Sau khi đặt canonical, cần dùng URL Inspection để kiểm tra canonical mà Google thực sự chọn.

Đưa URL vào sitemap có đảm bảo được crawl và index không?

Không. Sitemap giúp Google phát hiện URL, hữu ích với website lớn, website mới hoặc website ít liên kết ngoài. Tài liệu của Google nói rõ sitemap không bảo đảm URL sẽ được crawl hoặc index. Nộp lại sitemap chỉ là hành động phù hợp khi vấn đề nằm ở khâu phát hiện URL.

Website chạy JavaScript cần kiểm tra những gì?

Tối thiểu: nội dung chính có xuất hiện trong HTML đã render không, liên kết điều hướng có phải thẻ a kèm href không, các tài nguyên cần cho việc dựng trang có bị chặn trong robots.txt không, mỗi trạng thái nội dung có URL riêng truy cập trực tiếp được không, và các thẻ meta sinh bằng JavaScript có mâu thuẫn với HTML nguồn không. Kết quả kiểm tra quyết định phương án; không mặc định rằng mọi website JavaScript đều cần chuyển sang server-side rendering.

Core Web Vitals có phải là toàn bộ SEO kỹ thuật không?

Không. Hiệu năng là một phần trong chương trình kỹ thuật, nằm cạnh crawl, render, indexability, canonical, cấu trúc URL và quản trị thay đổi. Một website đạt ngưỡng Core Web Vitals vẫn có thể không xuất hiện trên kết quả tìm kiếm nếu bị chặn ở tầng crawl hoặc index. RED không cam kết rằng cải thiện Core Web Vitals sẽ làm tăng thứ hạng.

Gửi website để RED đánh giá phạm vi kỹ thuật

Nếu bạn đang gặp tình trạng trang không được index, lưu lượng giảm sau một lần deploy, hoặc nhận một bản audit hàng trăm lỗi mà không biết bắt đầu từ đâu, hãy gửi cho RED:

  • Tên miền và nhóm URL quan trọng nhất với hoạt động kinh doanh
  • Mục tiêu cụ thể của giai đoạn này
  • Quyền truy cập Search Console (nếu chia sẻ được) và các báo cáo audit đã có
  • Thông tin về nền tảng, framework và quy trình phát hành hiện tại

RED sẽ chạy chẩn đoán theo tầng và phản hồi bằng bản mô tả phạm vi công việc phù hợp với tình trạng thực tế của website. RED không cam kết thứ hạng, không cam kết trang sẽ được index và không đưa ra mốc thời gian phục hồi.