Cách Audit SEO Website từng bước từ A → Z

Cách audit SEO website là kiểm tra toàn bộ hệ thống từ index, nội dung, UX đến tracking để xác định vì sao website không có traffic hoặc không tạo chuyển đổi. Quy trình chuẩn gồm 5 bước:

  • kiểm tra hiển thị trên Google,
  • đánh giá content theo search intent,
  • tối ưu offer,
  • cải thiện trải nghiệm
  • và đảm bảo dữ liệu đo lường chính xác.

Bước 1: Kiểm tra Traffic (Website có được Google hiển thị không?)

Để biết website có được Google hiển thị hay không, cần kiểm tra trạng thái index bằng Google Search Console và tìm kiếm site:tenmien.com trên Google. Nếu nhiều trang chưa được index, website gần như không thể có traffic SEO và cần xử lý ngay trước các bước tối ưu khác.

Nếu hơn 30 phần trăm trang nằm trong Not indexed, hãy dừng audit và xử lý bước này trước khi chuyển sang Content.

Bạn gõ site:tenmien.com trên Google (thay bằng domain của bạn, ví dụ site:abc.vn). Google sẽ hiển thị các trang đã được index cùng số lượng kết quả ngay dưới thanh tìm kiếm. So sánh con số này với tổng số URL thực tế trên website (có thể lấy từ sitemap hoặc CMS) để đánh giá mức độ hiển thị.

  • Nếu website có 200 URL nhưng Google chỉ hiển thị khoảng 50, nghĩa là ~150 URL chưa được index.
  • Tỷ lệ chưa index cao → Google chưa crawl hoặc chưa chấp nhận trang.
  • Đây là lỗi nền tảng, cần xử lý trước mọi tối ưu SEO khác.
  • Chỉ khi đa số URL được index, website mới có cơ hội có traffic SEO.

Để có dữ liệu chính xác hơn, bạn vào Google Search Console. Trong menu bên trái, chọn Indexing → Pages. Tại đây có hai nhóm chính: Indexed và Not indexed. Sự chênh lệch giữa hai nhóm này cho thấy mức độ website đang được hiển thị.

Với các trang quan trọng, dùng URL Inspection. Dán URL cụ thể vào thanh tìm kiếm phía trên để kiểm tra trạng thái index, lần crawl gần nhất và các vấn đề liên quan.

Các trạng thái thường gặp:

  • Crawled, currently not indexed
    Google đã truy cập nhưng không đưa trang vào kết quả tìm kiếm. Nguyên nhân thường rơi vào 3 nhóm: nội dung quá mỏng (dưới khoảng 300 từ), trùng lặp với trang khác, hoặc không có liên kết nội bộ trỏ đến.
  • Excluded by noindex tag
    Trang đang bị chặn index trong code hoặc plugin SEO. Lỗi này xuất hiện khá nhiều trên WordPress khi dùng Yoast hoặc Rank Math với cấu hình mặc định.
  • Blocked by robots.txt
    File robots.txt tại domain đang ngăn bot truy cập nên Google không thể crawl nội dung.

Khi một trang có impression bằng 0 trong GSC → Performance, vấn đề thường không nằm ở SEO kém mà ở việc chưa được index hoặc chưa được truy cập. Đây là lỗi kỹ thuật và thường có thể xử lý nhanh.

Ngược lại, nếu trang đã index nhưng chỉ nhận khoảng 10 đến 20 impression mỗi tháng, nguyên nhân thường nằm ở độ mạnh website, backlink hoặc nội dung chưa đủ sâu. Trường hợp này không xử lý ở bước Traffic mà chuyển sang bước Content.

Để xử lý, cần đi lần lượt theo các điểm sau:

  • Kiểm tra noindex trong plugin SEO
    • Với Yoast: vào SEO → Search Appearance → Content Types, đảm bảo mục hiển thị trên công cụ tìm kiếm được bật. Kiểm tra thêm Taxonomies nếu cần index category hoặc tag. Với từng bài, trong tab Advanced, mục cho phép index phải để Yes.
    • Với Rank Math: vào Titles & Meta để kiểm tra cấu hình. Ở từng bài, trong tab Advanced, không được bật No Index
  • Kiểm tra cài đặt chung của WordPress
    Vào Settings → Reading và đảm bảo không bật tùy chọn Discourage search engines from indexing this site. Đây là lỗi rất phổ biến khi website vừa chuyển từ môi trường test sang chính thức
  • Kiểm tra file robots.txt
    Mở trực tiếp tại tenmien.com/robots.txt. Nếu có dòng Disallow: /, tức là toàn bộ website đang bị chặn. Cấu hình cơ bản nên như sau:

User-agent: *
Allow: /
Disallow: /wp-admin/
Sitemap: https://tenmien.com/sitemap.xml

  • Gửi sitemap nếu chưa có
    Trong Google Search Console, vào Indexing → Sitemaps, nhập URL sitemap (thường là /sitemap.xml hoặc /sitemap_index.xml) và submit
  • Sau khi sửa, yêu cầu index lại
    Dùng URL Inspection, dán từng URL quan trọng và chọn Request Indexing. Google thường crawl lại trong vòng 1 đến 3 ngày

Theo Ahrefs, 96,55 phần trăm trang web không có traffic từ Google, phần lớn do lỗi index hoặc nội dung không phù hợp intent. Vì vậy, đây luôn là bước cần ưu tiên trước khi làm các tối ưu khác.

Bước 2: Audit Content (Nội dung có đúng search intent không?)

Để biết nội dung có đúng search intent hay không, cần so sánh trang của bạn với top 5 kết quả Google cho cùng từ khóa về dạng nội dung, độ sâu và các chủ đề được đề cập. Nếu nội dung khác biệt rõ hoặc thiếu các phần mà các trang đang xếp hạng đều có, trang gần như không thể lên top.

Nếu nội dung không khớp search intent, mọi tối ưu SEO khác gần như không có tác dụng.

Bắt đầu bằng cách mở trình duyệt Chrome ở chế độ ẩn danh để tránh kết quả bị ảnh hưởng bởi lịch sử tìm kiếm. Sau đó gõ chính xác từ khóa mục tiêu của trang cần audit. Ví dụ, nếu trang nhắm từ khóa “phần mềm quản lý bán hàng”, hãy tìm đúng cụm đó.

Khi đọc các kết quả đang xếp hạng cao, tập trung vào 3 yếu tố:

  • Dạng nội dung
    Các trang đầu là bài so sánh kiểu “Top 10 phần mềm quản lý bán hàng tốt nhất” hay trang sản phẩm cụ thể. Nếu phần lớn kết quả là bài so sánh mà trang của bạn là trang giới thiệu sản phẩm riêng, đây là dấu hiệu sai intent.
  • Góc tiếp cận
    Nội dung đang viết cho người mới hay người đã có chuyên môn. Điều này thể hiện qua cách dùng ngôn ngữ và độ sâu thông tin.
  • Chủ đề con
    Những phần xuất hiện lặp lại ở nhiều trang như bảng giá, ưu nhược điểm, so sánh tính năng. Khi bài của bạn thiếu các phần này, đó là khoảng trống content cần bổ sung.

Một bước thường bị bỏ qua là kiểm tra cannibalization.

site:tenmien.com “từ khóa mục tiêu” (có dấu ngoặc kép). Ví dụ: site:wecan-group.com “phần mềm quản lý bán hàng”. Nếu xuất hiện từ hai trang trở lên cùng nhắm từ khóa này, website đang tự cạnh tranh với chính mình và Google khó xác định trang nào nên xếp hạng.

Để kiểm tra chính xác hơn trong Google Search Console, vào Performance, nhấn “+ New”, chọn Query, nhập từ khóa rồi Apply. Sau đó chuyển sang tab Pages. Nếu có từ hai URL trở lên cùng nhận impression cho truy vấn đó, có thể xác nhận cannibalization.

Sau bước kiểm tra, các vấn đề thường rơi vào 3 nhóm:

  • Sai search intent
    Trang chỉ có khoảng 300 từ mô tả sản phẩm, trong khi các trang đang xếp hạng cao là bài hướng dẫn chi tiết trên 2000 từ.
  • Sai mục đích tìm kiếm
    Trang “Dịch vụ SEO chuyên nghiệp” nhắm từ khóa “cách làm SEO”, trong khi người tìm muốn tự học, không phải mua dịch vụ.
  • Cannibalization
    Nhiều trang trên cùng website cùng nhận impression cho một từ khóa. Ví dụ phổ biến là một bài blog “SEO là gì” và một trang dịch vụ “Dịch vụ SEO” cùng nhắm từ khóa “SEO”, khiến hiệu quả bị chia nhỏ.

Không lên top trong các trường hợp này thường không liên quan đến mật độ từ khóa, mà do sai intent.

Google phân tích hành vi của hàng tỷ lượt tìm kiếm để xác định nội dung phù hợp cho mỗi truy vấn. Khi phần lớn người tìm “audit SEO website” click vào bài hướng dẫn thay vì trang dịch vụ, hệ thống sẽ ưu tiên dạng nội dung đó. Không thể “lừa” bằng cách nhồi keyword.

  • Nội dung phải khớp dạng người dùng thực sự chọn (ví dụ: guide, list, review, hay trang dịch vụ).
  • Sai intent → người dùng không click hoặc thoát nhanh → Google giảm xếp hạng.
  • Xem top 5 kết quả để biết Google đang ưu tiên loại nội dung nào.
  • Cấu trúc và mục tiêu nội dung càng giống top kết quả, khả năng lên top càng cao.

Theo nghiên cứu của Backlinko trên 11,8 triệu kết quả, các trang trong top 10 có độ dài trung bình khoảng 1.447 từ. Viết dài không đảm bảo xếp hạng, nhưng nội dung quá mỏng, dưới 500 từ, rất khó cạnh tranh với bài viết chi tiết.

Google cũng thường xuyên viết lại cách hiển thị. Khoảng 33,4% title tag và 62,78% meta description có thể bị thay đổi. Vì vậy, hãy gõ site:tenmien.com rồi tìm trang cần kiểm tra để xem title và description thực tế đang hiển thị, thay vì chỉ nhìn trong code.

Cách xử lý phụ thuộc vào vấn đề cụ thể.

Với sai intent, cần viết lại nội dung theo đúng dạng mà Google đang ưu tiên. Nếu kết quả chủ yếu là bài hướng dẫn dạng how to mà trang hiện tại là trang dịch vụ, nên chuyển sang dạng hướng dẫn. Khi thay đổi URL, cần redirect 301 từ URL cũ sang URL mới. Trong WordPress có thể dùng plugin Redirection để thực hiện nhanh.

Với nội dung mỏng, bổ sung các phần mà các trang đang xếp hạng đều có. Một cách nhanh là gõ từ khóa mục tiêu lên Google, kéo xuống phần “Mọi người cũng hỏi”, mở các câu hỏi và đối chiếu với bài viết hiện tại.

Với cannibalization, gộp hai bài thành một bài hoàn chỉnh hơn. Giữ URL có hiệu suất tốt hơn trong Google Search Console → Performance → Pages, sau đó redirect URL còn lại về trang chính. Nếu hai bài phục vụ intent khác nhau, cần phân loại lại từ khóa mục tiêu để tránh cạnh tranh nội bộ.

Bước 3: Kiểm tra Offer (Vì sao có traffic nhưng không có khách?)

Nếu website có traffic nhưng không có lead hoặc đơn hàng, nguyên nhân thường nằm ở offer, tức giá trị bạn đề xuất cho người dùng khi họ đến trang. Cần xem CTA, mức độ phù hợp với giai đoạn người đọc và các yếu tố tạo niềm tin trên trang.

Nếu offer không phù hợp với giai đoạn người dùng, traffic gần như không tạo ra chuyển đổi.

Bắt đầu từ dữ liệu thực tế. Mở Google Search Console, vào Performance → Pages và sắp xếp theo lượt click giảm dần. Chọn 5 trang có traffic cao nhất và đọc lại như một người dùng lần đầu, tự hỏi: “Tôi có biết bước tiếp theo là gì không?”

Quan sát cách trang dẫn dắt hành động. Nút hoặc dòng kêu gọi hành động có xuất hiện trong nội dung hay chỉ nằm ở footer hoặc sidebar. Đồng thời, cần xem có bao nhiêu CTA trên toàn bộ trang, vì quá ít sẽ không đủ điểm chạm, nhưng quá nhiều cũng làm loãng hành động chính.

Đặt nội dung vào đúng giai đoạn của người dùng. Với nội dung informational, người dùng thường chưa sẵn sàng mua nhưng có thể tải tài liệu miễn phí. Ở giai đoạn commercial, họ sẵn sàng nhận tư vấn hoặc dùng thử. Với transactional, mới phù hợp với hành động mua ngay.

Trong quá trình xem lại, các vấn đề thường lộ ra khá rõ:

  • CTA chỉ nằm ở footer
    Phần lớn người đọc không scroll đến cuối nên không bao giờ nhìn thấy điểm kêu gọi hành động
  • CTA lệch giai đoạn
    Ví dụ “Mua ngay” đặt trong bài hướng dẫn informational, không phù hợp với người đang tìm hiểu
  • Thiếu yếu tố tạo niềm tin
    Thiếu testimonial, case study hoặc số liệu khách hàng đã sử dụng khiến người đọc không đủ tin tưởng để hành động

Traffic không đồng nghĩa với khách hàng.

SEO leads có tỷ lệ chốt đơn trung bình 14,6%, cao hơn nhiều so với outbound marketing ở mức 1,7% (Nguồn: HubSpot, trích qua Ahrefs SEO Statistics 2024). Con số này chỉ đúng khi hai điều kiện cùng được đáp ứng: traffic đến từ đúng nhu cầu và offer phù hợp với giai đoạn ra quyết định. Thiếu một trong hai yếu tố này, tỷ lệ chuyển đổi gần như bằng 0.

Chẳng hạn, một website bán phần mềm CRM có bài “CRM là gì” đứng top 3, mang về 3.000 lượt mỗi tháng. CTA duy nhất trong bài là “Mua gói Premium 5 triệu/tháng”. Người dùng đang ở giai đoạn tìm hiểu nên không sẵn sàng mua. Khi đổi sang “Tải ebook so sánh 5 phần mềm CRM phổ biến nhất, miễn phí”, họ có lý do để để lại email, tạo lead và tiếp tục nuôi dưỡng.

Cách xử lý cần bám sát hành vi thực tế của người dùng.

Với nội dung informational, nên dùng CTA như “Tải checklist miễn phí”, “Nhận ebook”, “Đăng ký webinar”. Ở giai đoạn commercial, phù hợp với “Dùng thử miễn phí 14 ngày”, “Nhận tư vấn 1:1”. Khi người dùng đã sẵn sàng mua, mới nên dùng “Mua ngay”, “Đặt hàng”.

CTA nên xuất hiện ở ít nhất 3 vị trí trong bài: sau phần mở đầu, giữa bài sau khi đã cung cấp giá trị, và cuối bài.

Offer cần cụ thể thay vì chung chung. “Tải template audit SEO 30 phút, miễn phí” hiệu quả hơn nhiều so với “Đăng ký nhận tin”, vì người đọc cần biết chính xác họ sẽ nhận được gì khi click.

Bước 4: Audit UX (Trải nghiệm có đang làm mất traffic?)

UX không trực tiếp làm tăng thứ hạng, nhưng trải nghiệm kém khiến người dùng rời trang nhanh, giảm thời gian ở lại và tỷ lệ chuyển đổi. Tập trung vào tốc độ tải trang, khả năng hiển thị trên mobile và cách người dùng di chuyển trong website.

UX kém không làm mất thứ hạng ngay lập tức, nhưng làm mất người dùng trước khi họ tương tác với nội dung.

Dùng Google PageSpeed Insights tại pagespeed.web.dev, nhập URL trang chủ và 2 trang quan trọng. Xem điểm Performance (0 đến 100) và 3 chỉ số Core Web Vitals: LCP, INP, CLS.

  • LCP là thời gian tải nội dung chính,
  • INP là độ trễ khi người dùng tương tác,
  • CLS là mức độ bố cục bị dịch chuyển khi tải.

Trong Google Search Console, vào Experience → Core Web Vitals, xem tổng quan số URL “Good” so với “Poor”, tách theo Mobile và Desktop. Vào Experience → Mobile Usability, kiểm tra lỗi hiển thị trên di động.

Những lỗi thường gặp:

  • LCP trên 2,5 giây, INP trên 200ms hoặc CLS trên 0,1
    Cho thấy trang tải chậm, phản hồi kém hoặc bố cục không ổn định, như ảnh hoặc quảng cáo load xong đẩy nội dung xuống
  • Điểm Performance dưới 50
    Nên xử lý ngay; 50 đến 89 cần cải thiện; trên 90 được xem là tốt
  • Lỗi Mobile Usability
    như “Text too small to read” hoặc “Clickable elements too close together”

Website B2B tải trong 1 giây có tỷ lệ conversion cao gấp 5 lần so với website tải trong 10 giây. Với e-commerce, mỗi giây tải chậm thêm làm giảm trung bình 0,3% tỷ lệ chuyển đổi (Nguồn: Portent, phân tích hơn 100 triệu pageviews trên 20 website, cập nhật 04/2022).

Google sử dụng mobile-first indexing, tức phiên bản mobile quyết định thứ hạng, kể cả khi người dùng tìm kiếm trên desktop.

Những lỗi cần xử lý trước:

  • Ảnh chưa nén
    • Nén ảnh bằng TinyPNG → kéo thả ảnh vào → tải ảnh đã nén về → upload lại thay thế ảnh cũ
    • Hoặc dùng ShortPixel (WordPress) để tự động nén toàn bộ ảnh cũ và ảnh mới
    • Chuyển sang WebP (nhẹ hơn 25 đến 35% so với JPEG/PNG). Mục tiêu: ảnh thường dưới 100KB, ảnh hero dưới 200KB
  • Chưa bật lazy loading
    • WordPress 5.5 trở lên đã hỗ trợ. Kiểm tra bằng cách: click chuột phải → View Page Source → tìm thẻ img → xem có loading=”lazy”
  • JavaScript chặn tải trang
    • Có thể sử dụng WP Rocket hoặc Autoptimize → bật Optimize JavaScript và Defer
  • TTFB cao (trên 600ms)
    • Vấn đề nằm ở server, không phải website. Cân nhắc nâng cấp hosting hoặc dùng CDN
    • Với Cloudflare: thêm domain → đổi nameserver → hệ thống tự cache và phân phối nội dung

Với mobile, đảm bảo font tối thiểu 16px (nhỏ hơn sẽ khó đọc trên điện thoại) và khoảng cách giữa các nút hoặc link ít nhất 8px để tránh bấm nhầm.

Bước 5: Kiểm tra Tracking (Dữ liệu có đúng không?)

Sai tracking đồng nghĩa sai toàn bộ quyết định SEO sau đó. Tập trung vào việc dữ liệu có được ghi nhận đầy đủ và chính xác hay không: GSC, GA4, conversion event và UTM. Khi dữ liệu sai, mọi phân tích về traffic, từ khóa và hiệu quả SEO đều trở nên không đáng tin.

Trước tiên, cần nhìn nhanh toàn bộ hệ thống đo lường. GSC phải có dữ liệu, GA4 phải xuất hiện trên mọi trang, conversion event phải được thiết lập và các link ngoài SEO phải có UTM. Chỉ cần thiếu một yếu tố, dữ liệu đã bị lệch.

Bắt đầu từ GSC và kiểm tra property đã hoạt động. Trường hợp chưa có, thêm property, chọn URL prefix, copy meta tag và dán vào thẻ head của website. Với WordPress, có thể đặt trong Appearance → Theme Editor → header.php hoặc dùng plugin Insert Headers and Footers. Đây là dữ liệu trực tiếp từ Google, cho biết index, impression, CTR và vị trí từ khóa.

Tiếp theo là GA4. Dùng Tag Assistant, duyệt 5 đến 10 trang khác nhau và click icon extension để kiểm tra mã GA4 (bắt đầu bằng “G-“) có xuất hiện đồng đều trên toàn site. Nếu một số trang báo “No GA tag found”, nguyên nhân thường do mỗi template (trang chủ, blog, trang sản phẩm) cài tracking khác nhau.

Sau đó kiểm tra conversion. Vào Admin → Events, xem đã có các event như form submit, click số điện thoại, tải tài liệu hoặc click CTA chính hay chưa. Khi chỉ có page_view và session_start, bạn biết có bao nhiêu lượt truy cập nhưng không biết bao nhiêu hành động, tức gần như mù về giá trị thực sự của traffic.

Cuối cùng là UTM. Mở các link gần nhất đã gửi qua email hoặc đăng trên social. Nếu URL không có dạng ?utm_source=…&utm_medium=…, traffic sẽ bị dồn về direct hoặc organic. Trong GA4 → Acquisition → Traffic acquisition, nếu direct traffic trên 40%, dữ liệu thường đã bị phân loại sai.

Các lỗi thường lộ ra rất rõ khi kiểm tra:

  • Thiếu GA tag trên một số trang
    Do mỗi template cài tracking khác nhau
  • Chỉ có page_view và session_start
    Không đo được conversion nên không biết traffic có giá trị hay không
  • Direct traffic quá cao (trên 40%)
    Dữ liệu bị sai do không gắn UTM

Vấn đề không nằm ở số lượng traffic mà ở việc hiểu đúng dữ liệu. Một website có thể tăng traffic nhưng không tạo thêm khách hàng nếu tracking sai. Ngược lại, có những trang ít traffic nhưng lại mang về phần lớn conversion.

Ví dụ, hai trang cùng có 500 lượt mỗi tháng nhưng 20 form submit so với 0. Nếu không tracking conversion, cả hai bị đánh giá như nhau, trong khi trang tạo ra 20 lead đáng được ưu tiên tối ưu.

Cách xử lý nên đi theo thứ tự rõ ràng. Thiết lập GSC trước để có dữ liệu nền, sau đó đảm bảo GA4 chạy trên toàn bộ website. Cách ổn định nhất là sử dụng Google Tag Manager: tạo container, lấy 2 đoạn code và đặt một đoạn trong head, một đoạn ngay sau thẻ body, sau đó quản lý toàn bộ tag mà không cần sửa code từng trang. Với WordPress, có thể dùng Site Kit by Google để kết nối GA4 và GSC tự động.

Conversion cần được định nghĩa rõ. Trong GA4 → Admin → Events → Create Event, đặt tên (ví dụ form_submit) và dùng điều kiện page_location chứa /thank-you hoặc /cam-on, sau đó bật “Mark as conversion” để bắt đầu đo lường.

Cuối cùng, chuẩn hóa UTM cho mọi nguồn ngoài SEO bằng Google URL Builder. Điền utm_source (facebook, newsletter, zalo), utm_medium (social, email, cpc) và utm_campaign, sau đó dùng link đã tạo thay vì link gốc khi chia sẻ.