Cách audit website với checklist đầy đủ và ưu tiên

Mục lục bài viết46 mục

Bài này cung cấp checklist audit theo từng hạng mục kèm cách dùng công cụ. Làm theo, bạn hoàn thành audit không sót mục, có backlog vấn đề ưu tiên bằng ma trận Impact/Effort và xuất báo cáo 1 trang rõ ràng.


Tổng thời gian tham khảo: 1–2 ngày làm việc tùy quy mô site.

Kết quả mong đợi: tick ≥95% checklist áp dụng được, danh sách vấn đề theo hạng mục có mức ưu tiên Impact/Effort, 1 trang báo cáo và backlog gắn chủ sở hữu và deadline.

Cách audit website với checklist đầy đủ và ưu tiên

Prerequisites — cần chuẩn bị trước

  • Quyền truy cập: CMS, GA4, Google Search Console, Google Tag Manager nếu có
  • Công cụ: Screaming Frog hoặc Ahrefs/Semrush, PageSpeed Insights, Lighthouse trên Chrome, Rich Results Test
  • File Google Sheet trống để tạo checklist và ma trận ưu tiên
  • Log máy chủ 30–90 ngày nếu muốn làm phần log analysis ở Technical SEO

Bước 0 — Xác định phạm vi và chuẩn bị (~1–2 giờ)

Khung hóa phạm vi trước để không sót hạng mục và không lạc đề khi crawl.

Xác định phạm vi

  • Domain và subdomain: ví dụ www, blog, m., cdn, landing độc lập — ghi rõ subdomain nào nằm ngoài phạm vi
  • Môi trường: production bắt buộc, staging nếu cần kiểm tra fix
  • Ngôn ngữ/locale và khu vực: ví dụ vi-VN, en-US
  • Thời gian dữ liệu: 30–90 ngày gần nhất trong GA4 và GSC

Lập Google Sheet — cấu trúc 2 sheet liên kết

Tạo file Google Sheet với 2 sheet: 01-Checklist và 02-Priority.

Quan hệ giữa hai sheet: 01-Checklist là nơi nhập liệu gốc — mỗi vấn đề phát hiện được ghi vào đây đầy đủ kèm bằng chứng. 02-Priority kéo dữ liệu từ 01-Checklist bằng công thức để tạo ma trận sắp xếp theo Priority Score — không nhập tay lần hai.

Cách liên kết: Tại 02-Priority, dùng =IMPORTRANGE("URL_sheet_01", "01-Checklist!A:T") để kéo toàn bộ dữ liệu, sau đó thêm cột sắp xếp theo Priority Score và lọc Status = Open.

Mẫu 01-Checklist — copy toàn khối vào Google Sheet bằng File → Import → Upload → Replace sheet:

Issue ID,Category,Subcategory,Issue title,URL example,Affected pages,Tool/Report,Evidence/How to reproduce,Severity (H/M/L),Impact (1-5),Effort (1-5),Urgency (1-5),Priority Score,Owner,Due date,Status (Open/In progress/Done),Fix Type (Dev/Content/Config/Linking),Source (Crawl/GSC/GA4/Manual),Last checked,Notes
T-001,Technical,Crawl,Redirect chain >2 hops,https://www.example.com/x,128,Screaming Frog - Reports - Redirect Chains,Export CSV shows 3-hop chains,H,5,2,4,=((J2*2)+L2)-K2,Dev,2026-07-05,Open,Dev,Crawl,2026-06-22,"Consolidate to single 301"
T-002,Technical,Indexing,Noindex on canonicalized pages,https://www.example.com/y,12,Screaming Frog - Filters - Directives,Meta robots noindex on canonical URL,H,4,2,3,=((J3*2)+L3)-K3,Dev,2026-07-08,Open,Dev,Crawl,2026-06-22,"Remove noindex or adjust canonical"
O-003,On-page,Title/Heading,Missing H1,https://www.example.com/z,57,Screaming Frog - H1 - Missing,Page lacks H1,H,3,2,2,=((J4*2)+L4)-K4,Content,2026-07-10,Open,Content,Crawl,2026-06-22,"Add unique H1"
C-004,Content,Duplicate,N-gram near-duplicate cluster,https://www.example.com/a,34,SF - Content - Near Duplicates,Cluster ID 12,M,3,3,2,=((J5*2)+L5)-K5,Content,2026-07-15,Open,Content,Crawl,2026-06-22,"Consolidate and canonicalize"
U-005,UX/A11y,Forms,Form lacks labels,https://www.example.com/checkout,1,Lighthouse - Accessibility,Missing label for input,H,3,3,4,=((J6*2)+L6)-K6,Design,2026-07-07,Open,Dev,Manual,2026-06-22,"Associate labels"
A-006,Analytics,Tracking,Missing consent mode,https://www.example.com/*,All,GA4 Admin + GTM Preview,No Consent Mode v2,H,4,2,4,=((J7*2)+L7)-K7,Dev,2026-07-05,Open,Config,Manual,2026-06-22,"Implement Consent Mode v2"
F-007,Off-page,Backlink,Toxic backlinks spike,,Sitewide,Ahrefs - Backlink profile,Unnatural anchors,L,2,3,2,=((J8*2)+L8)-K8,SEO,2026-07-20,Open,Off-page,Ahrefs,2026-06-22,"Monitor - no disavow yet"

Crawl và tạo inventory URL

  • Screaming Frog: nhập domain gốc → Configuration → Spider → Rendering: chọn JavaScript nếu site dùng JS; thêm sitemaps tại Configuration → Spider → XML Sitemaps
  • Ahrefs/Semrush: tạo dự án Site Audit, bật crawl toàn site, bật tìm orphan pages qua kết nối GA4/GSC
  • Gộp nguồn URL: Crawl + Sitemaps + GSC Indexed pages — tránh bỏ sót URL không có liên kết nội bộ

Công cụ cần dùng

Công cụLink
Google Search Consolehttps://search.google.com/search-console
Google Analytics 4https://analytics.google.com
Google Tag Managerhttps://tagmanager.google.com
PageSpeed Insightshttps://pagespeed.web.dev
Rich Results Testhttps://search.google.com/test/rich-results
Screaming Frog SEO Spiderhttps://www.screamingfrog.co.uk/seo-spider/
Screaming Frog Log File Analyserhttps://www.screamingfrog.co.uk/log-file-analyser/
Ahrefs Site Audithttps://ahrefs.com/site-audit
Semrush Site Audithttps://www.semrush.com/siteaudit/

Xác nhận robots.txt không chặn thư mục cần crawl. Chạy crawl cả 4 biến thể URL (http/https × www/không www) và chốt https làm chuẩn.


Bước 1 — Technical SEO (~3–4 giờ)

Đảm bảo bot thu thập và lập chỉ mục đúng, site nhanh và thân thiện trên thiết bị di động, và xác minh thực tế bằng log.

Crawl — trạng thái URL và liên kết

Screaming Frog:

  • Response Codes: lọc Client Error 4xx (lỗi 404) và Server Error 5xx
  • Reports → Redirects → Redirect Chains: xuất danh sách chuỗi redirect và vòng lặp
  • Canonicals: phát hiện canonical trỏ tới URL redirect hoặc không tồn tại
  • Directives: phát hiện noindex, nofollow, x-robots-tag
  • Sitemaps: Bulk Export → Sitemaps → XML Sitemap Links để so sánh với crawl

Phát hiện trang mồ côi:

  • Tích hợp GA4 và GSC tại Configuration → API Access
  • Sau crawl: Bulk Export → Orphan Pages → Orphan URLs
  • Ahrefs/Semrush: dùng mục Orphan pages sau khi kết nối GSC/GA4

Lập chỉ mục — xác minh trong GSC

  • GSC → Page indexing: xem lý do không lập chỉ mục phổ biến — Crawled – currently not indexed, Discovered – currently not indexed, Excluded by noindex
  • Sitemaps: kiểm tra số URL gửi so với số URL đã lập chỉ mục
  • URL Inspection: test trực tiếp một số URL quan trọng để thấy trạng thái index và robots

Tốc độ và Core Web Vitals

  • PageSpeed Insights: test Mobile và Desktop cho các template chính — Trang chủ, Category, Product, Bài viết, Trang form
  • Lighthouse trong Chrome DevTools: chạy Audit Performance và Accessibility trên trang mẫu
  • GSC → Core Web Vitals: đối chiếu trạng thái Good / Needs improvement / Poor từ dữ liệu thực tế người dùng

Mobile

  • Kiểm tra responsive trên thiết bị thật hoặc Chrome DevTools → Device Toolbar
  • PSI tab Mobile: xem các vấn đề chạm, kích thước font, viewport, hình ảnh co giãn

Logs — xác thực hành vi bot

  • Yêu cầu log máy chủ 30–90 ngày: access.log từ Nginx/Apache
  • Screaming Frog Log File Analyser: import log → phân tích tỷ lệ Googlebot truy cập theo mã trạng thái, lần truy cập gần nhất cho URL chính
  • Đối chiếu: URL quan trọng có được Googlebot ghé thăm gần đây không; 404/500 có bị bot gặp lặp lại không; tham số động nào đang bị crawl lãng phí

Lưu ý hay sai:

  • Site SPA cần bật Rendering JavaScript trong Screaming Frog — nếu không sẽ sót menu và liên kết
  • Không canonical tới URL đã redirect; không gắn noindex trên trang canonical
  • Sửa CWV theo template trước rồi nhân rộng — đo lại bằng PSI và GSC trước khi đóng ticket

Bước 2 — On-page SEO (~2–3 giờ)

Đảm bảo từng trang có cấu trúc on-page rõ ràng, dữ liệu có cấu trúc đúng và mạng lưới liên kết nội bộ khỏe.

Title và Meta description

Screaming Frog → Page Titles và Meta Description: lọc Missing, Duplicate, Too Long, Too Short.

Nguyên tắc: title duy nhất, chứa chủ đề chính tự nhiên; description mô tả giá trị nhấp — không phải tóm tắt nội dung.

Heading

  • Screaming Frog → H1: lọc Missing hoặc Multiple
  • Kiểm tra H2–H3: bám sát dàn ý nội dung, tránh nhồi nhét từ khóa

Schema — dữ liệu có cấu trúc

  • Rich Results Test: kiểm tra các loại phù hợp — Article, Product, Breadcrumb, Organization, FAQ
  • Đảm bảo dùng JSON-LD; thuộc tính bắt buộc có mặt; không xung đột nhiều schema cùng loại trên 1 trang

Canonical

Screaming Frog → Canonicals:

  • Self-referencing canonical cho trang chuẩn
  • Tránh canonical tới URL non-200 hoặc URL có tham số không chuẩn
  • Kiểm tra trang phân trang, biến thể UTM — canonical về trang chuẩn

Screaming Frog → Inlinks/Outlinks:

  • Depth: trang quan trọng nên ≤ 3 click từ trang chủ
  • Anchor text: rõ ràng, mô tả nội dung đích, không nofollow nội bộ
  • Orphan pages: đã lấy ra ở Bước 1 — bổ sung liên kết hoặc loại bỏ có chủ đích

Lưu ý hay sai:

  • Không dùng cùng một title cho nhiều trang phân loại khác nhau
  • Schema sai hoặc thừa làm mất tính đủ điều kiện kết quả nhiều định dạng — kiểm tra kỹ trước khi rollout
  • Tránh anchor nội bộ mơ hồ như “tại đây”, “xem thêm” ở link quan trọng

Bước 3 — Nội dung (~2–3 giờ)

Tập trung vào chất lượng, tính độc nhất và độ tin cậy của nội dung.

Inventory nội dung

  • Từ crawl + CMS export: liệt kê loại trang, template, ngày cập nhật gần nhất
  • Gắn chỉ số GA4 cơ bản: Pageviews, Average engagement time, Conversions nếu có

Chất lượng nội dung

  • Heuristic nhanh: nội dung phải trả lời ý định tìm kiếm chính, có cấu trúc rõ ràng, có phương tiện hỗ trợ phù hợp (ảnh, video, dữ liệu trích dẫn)
  • Kiểm tra cũ và lỗi thời: nội dung nhiều năm chưa cập nhật, số liệu lỗi thời, link hỏng trong bài

Trùng lặp

  • Screaming Frog → Content → Near Duplicates: xem cluster văn bản tương tự
  • Tìm trang tag, search, phân trang gây nội dung mỏng — xử lý noindex hoặc hợp nhất

E-E-A-T — Trải nghiệm, Chuyên môn, Thẩm quyền, Tin cậy

  • Có tác giả rõ ràng, hồ sơ tác giả uy tín, mô tả năng lực
  • Trang About, Contact, chính sách và thông tin doanh nghiệp minh bạch
  • Trích nguồn đáng tin cậy cho số liệu; hình ảnh có nguồn gốc hợp pháp

Lưu ý hay sai:

  • Tránh xóa hàng loạt nội dung mỏng mà chưa kiểm chứng lưu lượng dài hạn hoặc backlink trỏ về
  • Khi hợp nhất bài trùng lặp: chọn 1 URL chuẩn, 301 các URL còn lại và cập nhật internal links

Bước 4 — UX & Accessibility (~2 giờ)

Đảm bảo người dùng thật tương tác thuận lợi và site tiếp cận được với mọi đối tượng.

Điều hướng

  • Menu rõ cấp bậc, breadcrumb nhất quán
  • Có trang tìm kiếm nội bộ nếu danh mục lớn
  • Screaming Frog → Depth: kiểm tra độ sâu click đến trang tiền bán hàng — không quá 3 bước

Forms

  • Nhãn label cho tất cả các trường nhập liệu
  • Hiển thị lỗi rõ ràng khi submit sai, trạng thái loading và success có phản hồi
  • Kiểm tra tab order: thao tác hoàn toàn bằng bàn phím mà không cần chuột

Accessibility — A11y

Lighthouse → Accessibility (chạy trên từng template chính):

  • Roles và labels: button, input, image đều có aria-label hoặc alt rõ ràng
  • Contrast ratio: text trên nền đạt tối thiểu 4.5:1 (WCAG AA)
  • Focus indicator: tiêu điểm bàn phím luôn hiển thị rõ khi tab qua phần tử
  • Heading order: không bỏ cấp H2 → H4 mà không qua H3

Cách đọc kết quả Lighthouse: score Accessibility từ 90 trở lên là ngưỡng chấp nhận; dưới 70 cần xử lý trước khi audit các hạng mục khác.

Core Web Vitals ở khía cạnh UX

Chỉ sốMục tiêuNguyên nhân phổ biếnCách fix
LCP≤ 2.5sẢnh hero to, server chậmPreload LCP image, optimize server
CLS≤ 0.1Ảnh không có kích thước cố định, font swapThêm width/height cho ảnh, font-display: swap
INP≤ 200msJS blocking main threadCode split, defer non-critical JS

Dùng PSI dữ liệu trường (Field Data) — ưu tiên template có traffic cao nhất.

Lưu ý hay sai:

  • Đổi màu tương phản có thể tác động thương hiệu — phối hợp Design trước khi triển khai
  • Lazy-load ảnh cần kèm width và height cụ thể để không gây CLS
  • Lighthouse Accessibility chỉ bắt được lỗi tự động — khoảng 30–40% vấn đề A11y cần kiểm tra thủ công

Bước 5 — Analytics & Tracking (~1–2 giờ)

Đảm bảo đo lường chính xác và tuân thủ quyền riêng tư.

GA4 cấu hình cơ bản

  • Kiểm tra Property và Data Stream đúng domain
  • Bật Enhanced Measurement phù hợp — loại trừ trùng sự kiện nếu GTM cũng bắn cùng loại
  • Đặt múi giờ và tiền tệ phù hợp

Sự kiện và chuyển đổi

  • Quy ước tên sự kiện nhất quán: ví dụ view_item, add_to_cart, generate_lead
  • Đánh dấu Conversions cho sự kiện mục tiêu
  • Debug: GTM Preview + GA4 DebugView + Realtime để đối chiếu tham số và giá trị

Lọc và hợp nhất dữ liệu

  • Lọc internal traffic dựa trên IP hoặc parameter
  • Cấu hình cross-domain nếu có nhiều domain trong cùng hành trình người dùng
  • Triển khai Consent Mode v2 qua GTM — kiểm tra trạng thái trong Tag Assistant
  • Kiểm tra banner đồng ý: có lưu lựa chọn và tôn trọng lựa chọn ở lần truy cập sau

GSC liên kết

  • Liên kết GSC với GA4 trong Admin
  • Kiểm tra Sitemaps, Page indexing, HTTPS report trong GSC

Lưu ý hay sai:

  • Tránh trùng lặp sự kiện giữa GTM và mã cứng — chọn 1 nguồn triển khai duy nhất
  • Khi đổi cấu trúc sự kiện, ghi lại mapping cũ → mới để không mất khả năng so sánh lịch sử

Bước 6 — Off-page & SERP (~1–2 giờ)

Phần này là overview — không phải checklist đầy đủ như các hạng mục kỹ thuật. Mục tiêu là phát hiện tín hiệu bất thường và khoảng trống hiện diện bên ngoài website.

Ahrefs hoặc Semrush → Backlink profile:

  • Tổng quan referring domains, phân bổ anchor text, đường cong tăng trưởng
  • Phát hiện đột biến bất thường — tăng nhanh bất ngờ hoặc mất referring domain hàng loạt
  • Kiểm tra trang đích có backlink mạnh: đang 404 hoặc redirect sai → phục hồi nội dung hoặc redirect 301 về URL liên quan

Brand SERP — kết quả cho truy vấn thương hiệu

  • Tìm kiếm tên thương hiệu — quan sát Sitelinks, Knowledge Panel, trang mạng xã hội hiển thị
  • So sánh meta title/description hiển thị — có bị cắt hoặc hiển thị không mong muốn
  • Kiểm tra các trang đứng top cho brand query có phải tài sản của mình không

Local presence

  • Google Business Profile: NAP (tên, địa chỉ, điện thoại) nhất quán với website
  • Danh mục, ảnh, giờ mở cửa, nhận xét — xử lý thông tin sai hoặc lỗi thời
  • Kiểm tra citations trên các danh bạ uy tín — NAP có nhất quán không

Spam và bảo mật

  • Tìm bất thường: site:domain.com trả về trang tiếng nước ngoài không liên quan hoặc từ khóa lạ (dấu hiệu hacked keywords)
  • Kiểm tra subdomain lạ, thư mục upload công khai

Lưu ý hay sai:

  • Thận trọng với disavow — chỉ dùng khi xác nhận mô hình liên kết không tự nhiên và có nguy cơ rõ ràng
  • Backlink tốt trỏ về URL 404 là tài sản đang bị lãng phí — ưu tiên xử lý trước disavow

Bước 7 — Ma trận ưu tiên và báo cáo (~1 giờ)

Tạo ma trận ưu tiên trong 02-Priority

Sau khi dùng IMPORTRANGE để kéo dữ liệu từ 01-Checklist, thêm cột sắp xếp và lọc:

=SORT(IMPORTRANGE("URL_cua_01_Checklist","01-Checklist!A:T"), 13, FALSE)

Cột 13 là Priority Score — sắp xếp giảm dần để vấn đề quan trọng nhất lên đầu.

Công thức Priority Score: =((Impact × 2) + Urgency) − Effort

Logic: Impact được nhân đôi vì ảnh hưởng trực tiếp đến kết quả; Urgency cộng thêm để phản ánh rủi ro nếu chậm; Effort trừ đi để ưu tiên fix nhanh khi Impact ngang nhau.

Phân loại theo màu:

Priority ScoreMàuHành động
≥ 8ĐỏXử lý trong sprint hiện tại
5–7VàngLên kế hoạch sprint tiếp theo
≤ 4XanhBacklog — xử lý khi có dư nguồn lực

Mẫu 02-Priority — dùng sau khi IMPORTRANGE đã kéo dữ liệu:

Issue ID,Issue title,Category,Impact (1-5),Effort (1-5),Urgency (1-5),Priority Score,Owner,Due date,Status
T-001,Redirect chain >2 hops,Technical,5,2,4,=((D2*2)+F2)-E2,Dev,2026-07-05,Open
A-006,Missing Consent Mode v2,Analytics,4,2,4,=((D3*2)+F3)-E3,Dev,2026-07-05,Open
O-003,Missing H1 on 57 pages,On-page,3,2,2,=((D4*2)+F4)-E4,Content,2026-07-10,Open
C-004,Near-duplicate cluster #12,Content,3,3,2,=((D5*2)+F5)-E5,Content,2026-07-15,Open

Gán chủ sở hữu và deadline

  • Mỗi mục có 1 Owner duy nhất — tránh “đồng sở hữu”
  • Ghi rõ Fix Type để phân luồng: Dev, Content, Config, Linking
  • Gom nhóm các fix tương tự theo template để tiết kiệm effort triển khai

Mẫu báo cáo audit 1 trang — bản trống

[LOGO/BRAND] - Báo cáo Audit Website

1. Tóm tắt
   Phạm vi: [domain/subdomain], thời gian dữ liệu: [30–90 ngày]
   Tình trạng tổng quát: [tốt / trung bình / cần cải thiện]
   Chỉ số tham chiếu: [Core Web Vitals], [Index coverage], [Số lỗi chính]

2. Phát hiện nổi bật
   [Vấn đề 1 — tác động]
   [Vấn đề 2 — tác động]
   [Vấn đề 3 — tác động]

3. Top ưu tiên theo Impact/Effort
   [ID — Tên vấn đề] — Owner: [Tên] — Deadline: [Ngày]
   [ID — Tên vấn đề] — Owner: [Tên] — Deadline: [Ngày]
   [ID — Tên vấn đề] — Owner: [Tên] — Deadline: [Ngày]

4. Rủi ro nếu chậm xử lý
   [Rủi ro 1]
   [Rủi ro 2]

5. Ghi chú triển khai
   Phụ thuộc: [Hệ thống/nhóm liên quan]
   Kiểm thử và đo lường lại: [Công cụ — chỉ số]

Mẫu báo cáo 1 trang — bản điền sẵn hoàn chỉnh

Example.com - Báo cáo Audit Website

1. Tóm tắt
   Phạm vi: www.example.com và blog.example.com, dữ liệu 60 ngày
   Tình trạng tổng quát: cần cải thiện
   Chỉ số tham chiếu: CWV Mobile - Needs improvement | Indexed 8.2k/10.5k | 3 lỗi chính

2. Phát hiện nổi bật
   Chuỗi redirect >2 bước trên 128 URL — làm chậm crawl và lãng phí crawl budget
   57 trang thiếu H1 — gây khó hiểu chủ đề và CTR kém
   Chưa triển khai Consent Mode v2 — rủi ro tuân thủ và mất dữ liệu khi người dùng từ chối cookie

3. Top ưu tiên theo Impact/Effort
   T-001 — Redirect chain >2 hops — Owner: Dev — Deadline: 2026-07-05
   A-006 — Missing Consent Mode v2 — Owner: Dev — Deadline: 2026-07-05
   O-003 — Missing H1 on 57 pages — Owner: Content — Deadline: 2026-07-10

4. Rủi ro nếu chậm xử lý
   Tốc độ và lập chỉ mục kém kéo giảm hiển thị truy vấn brand và money pages
   Dữ liệu GA4 thiếu ổn định — khó đánh giá hiệu quả kênh và ra quyết định ngân sách

5. Ghi chú triển khai
   Phụ thuộc: đội Dev chỉnh .htaccess/nginx rules, đội Content cập nhật template
   Kiểm thử và đo lường lại: PSI - CWV, GSC - Page indexing, GA4 DebugView

Lỗi thường gặp khi audit — cách tránh lặp lại

  • Crawl không bật JavaScript trên site SPA → kết quả sót menu và inlinks quan trọng
  • Chỉ dựa vào crawl mà không đối chiếu GSC → bỏ lỡ URL đã index nhưng không còn liên kết nội bộ
  • Sửa từng trang lẻ thay vì theo template → tốn effort, khó kiểm soát chất lượng và đo lại
  • Ghi vấn đề nhưng thiếu bằng chứng và cách tái hiện → khó bàn giao cho Dev/Content, ticket bị treo
  • Không gắn Owner và deadline → backlog treo vô thời hạn
  • Nhập tay dữ liệu vào cả hai sheet → dữ liệu lệch, mất thời gian đồng bộ; dùng IMPORTRANGE để 02-Priority tự kéo từ 01-Checklist

Kết luận

Sau khi áp dụng checklist và mẫu ưu tiên, bạn sẽ có inventory URL đầy đủ, danh sách vấn đề theo hạng mục, ma trận Impact/Effort để sắp xếp xử lý và một báo cáo 1 trang rõ ràng. Hai sheet liên kết qua IMPORTRANGE giúp bạn nhập một lần, ưu tiên tự động theo công thức — không mất công đồng bộ thủ công. Điểm mấu chốt sau audit là đo lại bằng GSC và PSI sau mỗi nhóm fix để xác nhận tác động thực trước khi đóng ticket.