Claude Code Audit Content Portfolio 2026: Refresh Queue ROI
Bạn có 150 bài trên blog. Nhìn vào Analytics, traffic tháng này thấp hơn tháng trước. Nhưng không biết bài nào đang kéo xuống. Không biết bài nào đang “mục” dần: hạng tụt, không ai đọc, dữ liệu cũ. Không biết nên sửa bài nào trước để có tác động lớn nhất.
Cách thông thường là mở từng bài, đối chiếu Search Console, ghi chú tay vào spreadsheet. Với 50 bài mất 2-3 ngày. Với 150 bài, bạn bỏ cuộc ở bài thứ 40.
Mình từng làm vậy với ongboit.com. Đến bài thứ 30 thì tắt tab, đi làm việc khác.
Sau đó mình build /blog-audit-pipeline. 1 lệnh. Kit tự quét toàn bộ portfolio, chấm điểm từng bài theo 5 tiêu chí, phân tích tín hiệu cross-post, rồi tính toán và xếp ra refresh queue: danh sách 20 bài nên cập nhật trước theo ROI. Không phải sửa hết 150 bài. Chỉ 20 bài có đòn bẩy cao nhất.
Ví dụ thực tế: thietbinenkhi.vn có 241 bài. Nhiều bài đang tranh nhau cùng từ khóa “máy nén khí kiểm định”. Bài này ăn traffic của bài kia mà chủ site không biết. Kit phát hiện trong vài phút. Tìm thủ công mất vài ngày, nếu bạn biết mình phải tìm cái gì.
Bài này cover /blog-audit-pipeline: audit nội dung (content portfolio). Nếu bạn cần audit hạ tầng site (tốc độ, Core Web Vitals, sitemap, cấu hình kỹ thuật), đó là lệnh khác: audit website (hạ tầng). Hai việc khác nhau, hai lệnh khác nhau, thường chạy song song.
Đọc xong bạn sẽ biết:
- Chạy 1 lệnh audit toàn bộ bài viết của site, không cần mở từng bài.
- Đọc report 3 điểm (Portfolio Health / Decay Risk Inverse / Refresh ROI Potential) và xem refresh queue.
- Phân biệt fix AUTO-SAFE, AUTO-REVIEW, MANUAL rồi đưa thẳng file cho Claude Code xử lý.
- Refresh bài cũ bằng
/blog-refresh-pipelinekhi cần làm mới hoàn toàn.
Nếu chưa setup Claude Code và MCP, đọc bài setup trước khi tiếp tục.
/blog-audit-pipeline audit nội dung blog làm gì?
Ngắn gọn: bạn gõ 1 lệnh, kit tự làm hết: quét toàn bộ bài, chấm điểm theo 5 pillar, phân tích quan hệ giữa các bài, rồi trả về bảng điểm toàn portfolio + refresh queue (20 bài nên sửa trước theo ROI).
Trước khi đi vào chi tiết, giải thích 2 khái niệm cốt lõi:
- Decay (tụt dần): bài đã từng có traffic, nay hạng tụt hoặc lưu lượng giảm dần. Như bài viết năm 2022 về “cài đặt VPS Ubuntu”. Thông tin cũ, đối thủ cập nhật, bài của bạn bị đẩy xuống trang 2–3. Bài không hỏng, không bị xóa. Chỉ đang mục dần mà bạn không hay. Thuật ngữ English gọi là content decay.
- Refresh (làm mới): cập nhật bài cũ để lấy lại thứ hạng. Khác viết mới hoàn toàn. Refresh giữ URL, giữ backlink cũ, chỉ cập nhật nội dung. Thường nhanh hơn và rẻ hơn khi viết mới 3-4 lần. Đây là chiến lược phổ biến ở các blog lớn như Ahrefs hay HubSpot.
Kit chạy theo 9 phase liên tiếp:
- Phát hiện tier: kiểm tra bạn có GSC, DataForSEO, Firecrawl không. Từ đó chọn T1-T4. Không cần cấu hình thủ công.
- Thu thập danh sách bài: đọc sitemap hoặc crawl trực tiếp. Phát hiện tất cả các URL của bài viết.
- Chấm điểm trên từng bài: chạy 5 skill phân tích từng bài theo 5 pillar: chất lượng, GEO, on-page SEO, schema, nguồn.
- Phân tích các bài: chạy 5 skill phân tích tín hiệu giữa các bài: decay, cluster, cannibalization, internal link, anchor.
- Bổ sung GSC nếu có: nếu bạn dùng
--gsc, kit lấy CTR thực và trạng thái index thực từ Google. - Tính 3 composite score: Portfolio Health · Decay Risk Inverse · Refresh ROI Potential. Ba con số tóm tắt tình trạng của toàn portfolio.
- Xếp hạng refresh queue: tính ROI từng bài theo 5 thành phần, xếp giảm dần, cắt top 20.
- Sinh output: report HTML (xem trên browser) + file Markdown (đưa cho Claude xử lý tiếp) + thư mục
fixes/+FIX-INSTRUCTIONS.md. - Lưu baseline nếu có cờ: snapshot điểm số để so sánh lần chạy sau.
Toàn bộ 9 phase chạy tự động. Bạn không cần xem từng phase. Khi kit xong, bạn có ngay report và danh sách việc cần làm.
Khác gì audit hạ tầng? Audit hạ tầng nhìn vào site: tốc độ load, Core Web Vitals, canonical, hreflang, cấu trúc sitemap. /blog-audit-pipeline nhìn vào từng bài viết: chất lượng nội dung, độ tươi, cạnh tranh keyword, liên kết nội bộ. Bạn nên chạy cả hai. Thứ tự không quan trọng, chúng độc lập nhau.
Kit dùng 10 skill lõi: 5 phân tích từng bài, 5 phân tích quan hệ giữa các bài. Chi tiết ở section tiếp theo. (Lưu ý: /seo-pipeline audit hạ tầng site chạy 16 agent; /blog-audit-pipeline audit nội dung chạy 10 skill. Khác pipeline, khác việc, khác số, không phải kit mâu thuẫn.)

Audit nội dung chấm theo gì? (5 pillar · 12 dimension)
Kit chấm mỗi bài theo 5 pillar. Mỗi pillar do 1 skill lõi đảm nhiệm, cho điểm 0-100.
| Pillar | Skill | Chấm gì | Ví dụ vấn đề thường gặp |
|---|---|---|---|
| Chất lượng & E-E-A-T | blog-analyze |
Độ sâu nội dung, bằng chứng kinh nghiệm thực, tính chính xác | Bài thiếu tác giả, lý luận vòng, nội dung generic không có góc nhìn riêng |
| GEO / độ trích dẫn AI | blog-geo |
Bài có cấu trúc để AI trích dẫn không: câu trả lời trực tiếp, định nghĩa rõ, dữ liệu dễ đọc | Không có câu trả lời trực tiếp trong 3 dòng đầu, thiếu định nghĩa rõ ràng cho thuật ngữ chính |
| On-page SEO | blog-seo-check |
H1, H2, title, meta description, keyword density, URL | H1 trùng title, meta description quá dài hoặc thiếu, keyword chính không xuất hiện ở vị trí ưu tiên |
| Schema markup | blog-schema |
Có FAQPage, HowTo, Article, BreadcrumbList không | Thiếu FAQPage trên bài có phần hỏi đáp, thiếu HowTo trên bài hướng dẫn |
| Nguồn & fact-check | blog-factcheck |
Số liệu có dẫn nguồn không, link nguồn còn sống không | Số liệu không có nguồn, link dẫn ra ngoài bị 404, tham chiếu mơ hồ (“theo nghiên cứu…”) |
E-E-A-T (viết tắt của Experience, Expertise, Authoritativeness, Trustworthiness) là tiêu chí Google dùng để đánh giá độ đáng tin của trang web. Bài viết về thuốc mà không có tên bác sĩ, bài viết về pháp luật không có tên luật sư, đó là E-E-A-T yếu.
GEO (Generative Engine Optimization) là tối ưu để AI như ChatGPT, Gemini, Perplexity trích dẫn bài của bạn. Khi ai đó hỏi AI về chủ đề bạn viết, bài của bạn có được nhắc tên không? GEO score đo cơ hội đó.
Ngoài 5 pillar per-bài, kit phân tích thêm 5 tín hiệu giữa các bài. Những thứ chỉ thấy khi nhìn toàn portfolio, không thể thấy khi đọc từng bài riêng lẻ:
- Decay signals:
blog-decaydò 5 dấu hiệu cụ thể: traffic giảm nhiều tháng liên tiếp, hạng tụt khỏi top 20, nội dung cũ hơn 1 năm không cập nhật, bài mồ côi (không bài nào link vào), bài ăn thịt nhau. Mỗi dấu hiệu được tính vào decay-score. - Cluster authority:
blog-clusterxem các bài cùng chủ đề có liên kết với nhau không. Cluster yếu là các bài đứng rời rạc, không có bài pillar trung tâm. Ví dụ: 10 bài về “máy nén khí” mà không bài nào link đến bài nào, cluster này yếu. - Cannibalization:
blog-cannibalizationtìm nhiều bài đang tranh 1 từ khóa. Khi bạn có 3 bài đều nhắm “VPS giá rẻ”, Google không biết chọn bài nào, cả 3 bài đều tụt hạng. Thuật ngữ: keyword cannibalization, bài này ăn traffic của bài kia (xem hướng dẫn phát hiện + ma trận fix chi tiết). - Internal link 2 chiều:
blog-internal-linkskiểm tra bài có đủ link vào và link ra không. Bài mồ côi (orphan page) không có link vào từ bài khác. Google khó tìm thấy, PageRank không chảy vào. - Đa dạng anchor:
blog-anchor-qualityxem anchor text dẫn vào bài có bị lặp quá không. Ví dụ: tất cả các link vào bài đều dùng anchor “click ở đây”, đây là tín hiệu xấu.
12 dimension đầy đủ + cách tính 3 composite score
12 dimension chia làm 3 nhóm:
5 per-bài (không cần GSC):
- Quality/E-E-A-T score, từ
blog-analyze - GEO citability score, từ
blog-geo - On-page SEO score, từ
blog-seo-check - Schema completeness, từ
blog-schema - Source integrity, từ
blog-factcheck
5 cross-bài (không cần GSC):
- Decay signal count, từ
blog-decay - Cluster cohesion score, từ
blog-cluster - Cannibalization severity, từ
blog-cannibalization - Internal link ratio, từ
blog-internal-links - Anchor diversity, từ
blog-anchor-quality
2 GSC (chỉ có khi dùng --gsc):
- CTR vs benchmark, từ
gsc-query. So sánh CTR thực của bài với trung bình ngành theo hạng. - Index status, từ
gsc-audit. Bài có được index không, có lỗi coverage không.
3 composite score:
- Portfolio Health: trung bình có trọng số của 10 dimension per-bài và cross-bài. Cao = portfolio tổng thể tốt.
- Decay Risk Inverse: nghịch đảo của tổng rủi ro decay. Cao = ít bài đang decay. Thấp = nhiều bài đang tụt hạng.
- Refresh ROI Potential: tổng ROI tiềm năng còn bỏ ngỏ. Cao = còn nhiều cơ hội cải thiện. Thấp = portfolio đã được tối ưu tốt.
Lưu ý quan trọng: Refresh-ROI cao không có nghĩa là portfolio tệ. Nó đơn giản là còn nhiều việc để làm. Portfolio đã khỏe sẽ có ROI thấp vì cơ hội cải thiện còn lại ít.
Chạy /blog-audit-pipeline trên 3 site thật ra kết quả gì?
Mình chạy /blog-audit-pipeline trên 3 site thực tế với quy mô và ngành khác nhau. Đây là kết quả thật, không phải demo giả.
| Site | Loại | Số bài | Health | Decay-Inverse | Refresh-ROI | Report |
|---|---|---|---|---|---|---|
| ongboit.com | Blog kỹ thuật VN | 185 | 83 | 82 | 7 | xem report |
| thietbinenkhi.vn | Thiết bị nén khí, local VN | 241 | 61 | 27 | 18 | xem report |
| adegagaucha.com | Nhà hàng steakhouse Brazil, Orlando US | 30 | 57 | 30 | 100 | xem report |

Đọc 3 số như thế nào? Ba số Health / Decay-Inverse / Refresh-ROI kể 3 câu chuyện khác nhau về cùng 1 portfolio.
ongboit.com: portfolio khỏe, ít việc cần làm
Health 83, Decay-Inverse 82, Refresh-ROI 7. Ba số đều cao ngoại trừ ROI, đây là dấu hiệu tốt. Portfolio ổn định, ít bài decay, ít cơ hội cải thiện còn bỏ ngỏ.
Tuy nhiên, kit vẫn tìm thấy 2 vấn đề hệ thống quan trọng:
- Thiếu FAQPage schema: 185/185 bài. Toàn bộ. Không phải 1 bài, không phải vài bài, tất cả. Fix 1 lần là xong hết.
- Nguồn mỏng (số liệu không có dẫn nguồn): 103/185 bài. Hơn một nửa portfolio. Đây là vấn đề E-E-A-T ảnh hưởng trực tiếp đến khả năng được AI trích dẫn.
Hai vấn đề này không làm Refresh-ROI tăng vọt vì portfolio tổng thể đã khỏe. Nhưng fix được cả 2 thì GEO score và E-E-A-T score sẽ tăng đáng kể.
thietbinenkhi.vn: decay nặng, cần hành động
Health 61, Decay-Inverse chỉ 27. Decay-Inverse thấp là nhiều bài đang tụt hạng. Vấn đề lớn nhất: cannibalization.
Site có nhiều bài tranh nhau từ khóa “máy nén khí kiểm định”. Khi Google thấy nhiều bài cùng site nhắm 1 keyword, nó không biết chọn bài nào, thường là đẩy tất cả xuống. Giải pháp: gộp bài, chọn 1 URL canonical, redirect các bài còn lại. Việc này không cần viết mới, chỉ cần cấu trúc lại.
Refresh-ROI 18 nghĩa là còn nhiều việc để cải thiện, cao hơn ongboit nhưng không cao nhất.
adegagaucha.com: nhiều việc nhất, cơ hội lớn nhất
Refresh-ROI 100, con số cao nhất trong thang đo. Chỉ 30 bài nhưng 18/30 bài mồ côi: không bài nào link vào, không bài nào link ra. Mỗi bài đứng như một hòn đảo. Google khó tìm thấy, PageRank không chảy vào, không có cluster authority.
Ngoài ra còn có cannibalization ở nhóm bài về thực đơn halal, nhiều bài trùng chủ đề, không phân biệt rõ.
30 bài ít hơn 2 site kia, nhưng portfolio này cần nhiều công nhất để ổn định. ROI 100 không phải là điểm phạt. Đây là bản đồ cơ hội.
Pattern rút ra từ 3 site: portfolio càng yếu → Decay-Inverse càng thấp → Refresh-ROI càng cao → cơ hội cải thiện càng nhiều. Điểm số không đánh giá bạn. Nó cho bạn biết nên làm gì tiếp theo.
Đọc report /blog-audit-pipeline thế nào?
Đây là phần mình dành nhiều chữ nhất. Report sinh ra không để ngắm, mà để hành động theo thứ tự đúng.
4.1 Ba tier đọc report
Đừng đọc report từ trên xuống dưới theo thứ tự bài. Đọc theo 3 tầng hành động:
ACT ngay: bài có Refresh-ROI cao kết hợp với vấn đề rõ ràng, dễ fix. Ví dụ: 185 bài ongboit thiếu FAQPage schema, chạy fix, paste JSON-LD vào, xong. Hoặc bài mồ côi adegagaucha: thêm internal link từ bài liên quan, xong. Những việc này không cần nghiên cứu thêm. Làm luôn vào buổi sáng.
INVESTIGATE thêm: bài có dấu hiệu decay nhưng nguyên nhân chưa rõ. Ví dụ: kit báo decay-score thấp nhưng khi kiểm tra manual, bạn thấy bài vẫn đang được chia sẻ nhiều trên mạng xã hội. Hoặc bài có cannibalization ở T3 nhưng bạn không chắc keyword có thực sự trùng không. Những bài này cần kiểm tra thêm 15-30 phút trước khi quyết định refresh hay không.
TRUST & monitor: bài có điểm tốt trên cả 5 pillar, không có dấu hiệu decay, internal link ổn. Không cần làm gì. Đánh dấu theo dõi định kỳ, chạy lại audit sau 3 tháng để xem có thay đổi không.
Nguyên tắc: làm ACT trước, INVESTIGATE sau, TRUST thì để yên. Đừng tốn thời gian “cải thiện” bài đã tốt trong khi bài ACT đang chờ.
4.2 Refresh queue top 20: tại sao chỉ 20?
Kit mặc định cắt ở 20 bài. Lý do: nếu bạn thấy danh sách 150 bài “cần sửa”, não bạn tê liệt và bạn không làm gì cả. Parkinson’s Law: công việc phình to để lấp đầy thời gian được phân bổ.
20 bài ROI cao nhất cho kết quả tốt hơn 150 bài sửa đại trà. Xong top 20, chạy lại audit thì sẽ có top 20 mới khác.
ROI của từng bài tính từ 5 thành phần:
ROI = lượng search × tiềm năng thứ hạng × ý định thương mại × (1 / điểm chất lượng) × mức decay × 100
Đọc công thức này theo ngôn ngữ thường: bài ROI cao nhất là bài đang ở hạng 5-15 (gần top, dễ leo lên), có lượng search đáng kể, người đọc có xu hướng mua/thuê/đăng ký, chất lượng hiện tại còn yếu (nhiều dư địa để cải thiện) và đang có dấu hiệu tụt hạng (cần hành động sớm).
Ngược lại: bài đã hạng 1-2, chất lượng cao, ít decay thì ROI thấp vì ít cần làm thêm.
5 thành phần ROI (priority từng bài)
- Lượng search: search volume của từ khóa chính của bài nhắm đến. Số này từ DataForSEO (T1/T2) hoặc ước tính từ tiêu đề + chủ đề (T3/T4).
- Tiềm năng thứ hạng: bài đang ở hạng bao nhiêu, còn bao xa để vào top 3. Bài hạng 4-15 có tiềm năng cao nhất, gần top nhưng chưa đến.
- Ý định thương mại: người tìm keyword này có xu hướng mua hàng, thuê dịch vụ, hoặc đăng ký không. Keyword “VPS giá rẻ tốt nhất” có intent thương mại cao hơn “VPS là gì”.
- Nghịch đảo chất lượng: (1/điểm chất lượng). Bài yếu có ROI cao hơn bài đã tốt. Lý do: bài đã tốt khó cải thiện thêm; bài yếu còn nhiều dư địa.
- Mức decay: bài đang tụt hạng nhanh thì cơ hội lớn nếu refresh kịp thời. Decay mạnh + tiềm năng cao = ưu tiên cao nhất.
Giới hạn mặc định là 20 bài. Thay đổi bằng --max-articles N nếu muốn danh sách dài hơn, nhưng mình khuyên giữ 20 để tránh tê liệt phân tích.
4.3 Từ report đến hành động: dùng FIX-INSTRUCTIONS.md
Sau audit, kit tự động sinh thêm 2 thứ ngoài report:
- Thư mục
fixes/: chứa file fix từng bài trong refresh queue. Mỗi file chứa vấn đề cụ thể và hướng dẫn sửa. - File
FIX-INSTRUCTIONS.md: hướng dẫn từng bước, xếp theo 3 mức tự động hóa.
3 mức fix:
- 🤖 AUTO-SAFE: Claude tự áp dụng, không cần bạn xem trước. Phù hợp với fix kỹ thuật rõ ràng. Ví dụ: chèn FAQPage schema JSON-LD vào bài thiếu schema, cập nhật meta description theo template có sẵn, thêm alt text cho ảnh thiếu. Những thứ này không thay đổi nội dung bài, chỉ thêm markup hoặc metadata.
- 👁️ AUTO-REVIEW: Claude sinh bản nháp, bạn duyệt trước khi áp. Phù hợp với fix nội dung. Ví dụ: viết lại intro bài để có câu trả lời trực tiếp trong 3 dòng đầu, thêm section FAQ, mở rộng phần thiếu chiều sâu. Bạn xem bản nháp, chỉnh nếu cần, sau đó mới publish.
- 📋 MANUAL: kit chỉ ghi vấn đề, bạn tự xử lý. Dành cho những việc Claude không thể làm thay. Ví dụ: xác minh số liệu lỗi thời (cần vào nguồn gốc kiểm tra), chụp ảnh mới cho bài (cần thiết bị thực), phỏng vấn chuyên gia để bổ sung kinh nghiệm thực.
Một lưu ý thực tế: phần lớn fix là hướng dẫn tự làm, một phần ra file paste sẵn. Tỉ lệ AUTO-SAFE so với MANUAL tùy vào vấn đề cụ thể từng lần chạy. Đừng kỳ vọng kit tự sửa 100%. Nó là trợ lý phân tích và lên kế hoạch, không phải cỗ máy tự động toàn bộ.
Cách dùng FIX-INSTRUCTIONS.md: mở Claude Code, đưa file blog-portfolio_[site]_[date].md vào context (kéo thả hoặc dùng lệnh /add), bật WordPress MCP nếu bạn muốn áp fix trực tiếp lên WP. Claude sẽ tự đọc instructions và thực hiện theo thứ tự, hỏi lại bạn trước mỗi bước AUTO-REVIEW.
4.4 Refresh hẳn 1 bài với /blog-refresh-pipeline
FIX-INSTRUCTIONS.md là cho fix nhỏ: sửa schema, thêm link, cập nhật metadata. Khi bạn muốn làm mới toàn bộ 1 bài (nghiên cứu lại, viết lại hoàn toàn, publish draft mới), dùng lệnh riêng:
/blog-refresh-pipeline [slug]
Ví dụ: /blog-refresh-pipeline may-nen-khi-kiem-dinh. Lệnh này chạy pipeline refresh đầy đủ cho 1 bài: nghiên cứu lại keyword + đối thủ, phác thảo cấu trúc mới, viết lại, kiểm tra 5 pillar, sinh draft lên WP. Không phải vá lỗi nhỏ, đây là làm mới hoàn toàn.
Dùng khi nào? Khi bài trong refresh queue có ROI rất cao, đang decay mạnh, và nội dung cũ quá không thể vá từng phần. Lúc đó cần viết lại từ đầu.
4.5 Vòng lặp cải thiện: audit → refresh → re-audit
Đây là vòng lặp mình đang dùng cho ongboit.com:
- Chạy
/blog-audit-pipeline: lưu baseline (--baseline). - Xem refresh queue. Chọn top 3-5 bài ROI cao nhất.
- Fix bài ACT ngay trong tuần này. Schedule bài INVESTIGATE cho tuần sau.
- Với bài cần viết lại: chạy
/blog-refresh-pipeline [slug]. - Publish draft lên WP, schedule cho ít nhất 24h sau.
- Chờ 4-6 tuần để Google crawl lại và hạng ổn định.
- Chạy lại
/blog-audit-pipeline --baseline: so điểm trước/sau. - Lặp lại từ bước 2.
Cờ --baseline là điểm mấu chốt của vòng lặp này. Nó lưu snapshot của tất cả điểm số lần chạy trước và so sánh tự động với lần chạy hiện tại. Bạn sẽ thấy bài nào tăng Health score, bài nào Decay-Inverse cải thiện, bài nào vẫn giậm chân.
Không có --baseline, bạn không biết liệu công sức bỏ ra có tác dụng không. Đo lường là bắt buộc, không phải optional.
Chu kỳ thực tế: mình chạy audit mỗi quý (3 tháng/lần). Giữa các lần audit, tập trung refresh top 5 bài của quý đó. Sau 1 năm, portfolio thay đổi rõ rệt khi so baseline đầu năm với cuối năm.

Không có GSC vẫn audit được không?
Được. Kit tự phát hiện công cụ nào bạn đã kết nối và chọn tier phù hợp. Không cần cấu hình thủ công.
Ở mọi tier, kit vẫn chấm đầy đủ 5 pillar từng bài và 5 tín hiệu giữa các bài. Bạn vẫn biết bài nào thiếu schema, bài nào nguồn mỏng, bài nào E-E-A-T yếu, bài nào mồ côi. Refresh queue vẫn có. Report vẫn ra.
Thêm --gsc sẽ bổ sung 2 thứ: CTR thực tế từ Google (để phát hiện bài hạng tốt nhưng CTR thấp, có thể do title/description kém hấp dẫn) và trạng thái index thực (để biết bài có đang bị excluded khỏi index không). Khi có GSC, cannibalization detection cũng chính xác hơn vì dùng keyword thật thay vì ước lượng từ tiêu đề.
4 mức năng lực T1–T4
- T1 (GSC + DataForSEO): đủ 12 dimension. Kết quả chính xác nhất. Cannibalization dùng data keyword thật. CTR và trạng thái index có từ GSC. Refresh ROI tính trên data thực tế nhất.
- T2 (DataForSEO, không GSC): 10 dimension. Thiếu CTR thực tế và trạng thái index từ Google. Search volume và keyword data vẫn có từ DataForSEO. Vẫn đủ để xếp refresh queue hợp lý cho hầu hết site.
- T3 (Firecrawl, không GSC, không DataForSEO): cannibalization phát hiện bằng độ trùng tiêu đề và nội dung (thuật toán Jaccard similarity). Có thể xuất hiện dương tính giả: 2 bài tiêu đề giống nhau chưa chắc đang tranh keyword thật. Cần verify thủ công. Không có search volume thực.
- T4 (không có công cụ bên ngoài): chỉ chấm chất lượng từng bài (5 pillars từng bài). Không có tín hiệu cross-bài dựa trên data thực. Vẫn hữu ích cho content quality audit thuần, biết bài nào thiếu schema, bài nào nguồn yếu.
Khuyến nghị: lần đầu dùng T2+ (có DataForSEO). Khi muốn kết quả đầy đủ nhất, kết nối GSC và chạy T1.
Một điểm cần nhớ về credential isolation: nếu bạn đã kết nối GSC nhưng kit báo “GSC unavailable”, vấn đề là agent con không kế thừa xác thực từ session chính. Giải pháp: restart hoàn toàn Claude Code, chạy lại. Xem thêm ở section troubleshoot bên dưới.
Dùng /blog-audit-pipeline trong tình huống nào?
4 tình huống mình thấy kit phát huy tốt nhất:
6.1 Quarterly content review
Mỗi quý chạy 1 lần. Câu hỏi cần trả lời: portfolio có đang khỏe không? Bài nào cần refresh trước khi decay quá nặng? So với quý trước, điểm số thay đổi thế nào?
Trước khi có kit, quarterly review là ngồi mở từng bài, xem GSC, ghi spreadsheet. Mất 3-5 ngày. Với kit: chạy 1 lệnh, đọc report 2 tiếng, lên kế hoạch cho quý tiếp theo. Phần còn lại là thực thi, không phải phân tích.
6.2 Debug 1 bài yếu
Traffic 1 bài tụt đột ngột. Bạn không biết tại sao. Chạy /blog-audit-pipeline --fast rồi filter bài đó trong report. Kit cho biết: vấn đề chính là gì, decay từ đâu, có cannibalization không, internal link có thiếu không.
Thay vì đoán mò 2-3 tiếng, bạn có diagnosis trong 20 phút. Từ đó mới quyết định refresh hay điều tra thêm.
6.3 Onboarding khách mới (cho agency hoặc freelancer)
Khách mới giao site 300 bài. Buổi đầu bạn chưa biết gì về portfolio. Không biết bài nào đang yếu, không biết có vấn đề hệ thống không, không biết ưu tiên sửa gì trước.
Chạy audit ngay buổi đầu. Trong 2 giờ, bạn có bức tranh toàn portfolio: Health tổng, danh sách vấn đề phân nhóm, top 20 bài cần refresh, ước tính công việc. Làm proposal nhanh hơn, có số liệu cụ thể, thuyết phục hơn.
Dùng cờ --client khi quản lý nhiều khách, report lưu riêng theo tên khách, không lẫn lộn.
6.4 Báo cáo định kỳ với client: có số, không chỉ lời
Mỗi tháng gặp khách, bạn cần chứng minh công việc có tác dụng. Không phải nói “mình đang làm tốt”, mà cần data.
Dùng --baseline để so điểm tháng này với tháng trước. Health tăng từ 61 lên 67. Decay-Inverse cải thiện từ 27 lên 41. 5 bài đã refresh, 3 bài tăng hạng. Những con số này từ report, không phải từ cảm tính. Đặt trong BRAND.md của bạn để report xuất ra có tên agency.
Flag nâng cao đầy đủ
--baseline: lưu snapshot điểm số + so sánh tự động với lần chạy trước. Cần thiết cho vòng lặp audit-refresh-re-audit.--gsc: kích hoạt T1, bổ sung 2 dimension GSC (CTR và index status). Cần đã kết nối GSC trong session chính.--fast: chỉ audit top 20 bài theo ROI ước tính trước khi chấm điểm đầy đủ. Chạy nhanh 5–20 phút. Tốt cho debug nhanh hoặc lần đầu xem format report.--client: chế độ multi-client. Report lưu theo tên khách riêng biệt. Kết hợp với BRAND.md để branded output.--include-pages: bao gồm cả page tĩnh (About, Contact, Landing page) ngoài blog post. Mặc định chỉ audit post.--max-articles N: giới hạn số bài audit. Mặc định 200 (site lớn? hạ xuống 100 để chạy nhanh). Giảm xuống nếu muốn chạy nhanh hoặc kiểm soát chi phí API.--with-pdf: xuất thêm bản PDF ngoài HTML. Tiện cho báo cáo gửi khách.--resume: tiếp tục từ bài cuối cùng đã xử lý nếu audit bị gián đoạn. Không cần làm lại từ đầu.--batch-size N: số bài xử lý song song trong mỗi batch. Giảm nếu muốn tiết kiệm token/chi phí. Tăng nếu muốn chạy nhanh hơn.--agent-timeout-min N: timeout tính bằng phút cho mỗi agent con. Tăng nếu site load chậm hoặc có bài rất dài.
Khi nào KHÔNG nên dùng /blog-audit-pipeline? (giới hạn thật)
Kit không phải là giải pháp cho mọi tình huống. Có 4 giới hạn cần biết trước:
Site dưới 10 bài
Portfolio nhỏ quá thì tự đọc thủ công còn nhanh hơn chạy kit. Kit phát huy khi bạn không thể kiểm tra thủ công trong thời gian hợp lý, ngưỡng đó thường là từ 30-40 bài trở lên. Dưới 10 bài, thời gian setup và chờ chạy không bù được thời gian đọc tay.
Muốn audit hạ tầng kỹ thuật
Nếu vấn đề bạn thấy là tốc độ load chậm, Core Web Vitals đỏ, sitemap lỗi, robots.txt sai cấu hình, canonical bị thiếu, đây là bài toán hạ tầng. Dùng bài audit kỹ thuật website. /blog-audit-pipeline không đo tốc độ, không kiểm tra Core Web Vitals, không phân tích cấu trúc kỹ thuật.
Trang không có content rõ ràng để phân tích
Trang danh mục tự động sinh, trang sản phẩm e-commerce với mô tả 50 từ, trang redirect, trang tag: kit chấm không chính xác vì không có nội dung đủ dày để phân tích E-E-A-T hay GEO. Dùng --include-pages cẩn thận với loại trang này, và không kỳ vọng kết quả chính xác như với bài blog.
Kỳ vọng kết quả ngay sau vài ngày
Audit chỉ là bản đồ, không phải kết quả. Sau khi refresh 1 bài, Google cần crawl lại, index lại, rồi điều chỉnh hạng dần dần. Quá trình này thường mất 4-8 tuần. Không thể rút ngắn. Kit không thay thế được thời gian Google cần để xử lý thay đổi.
Đo bằng --baseline sau 4-6 tuần, không phải sau 3 ngày. Nếu bạn đang trong môi trường yêu cầu kết quả ngay (campaign ngắn hạn, deadline tuần sau), paid ads sẽ phù hợp hơn với content refresh.
/blog-audit-pipeline tốn bao nhiêu tiền?
Kit chạy trong Claude Code, nên chi phí chính là gói Claude Code subscription của bạn (Pro $20/tháng là tối thiểu; portfolio lớn 100-200 bài nên dùng gói Max để khỏi chạm giới hạn quota). Phần Claude/LLM nằm trong gói — không tính thêm tiền mỗi lần audit. Không có phí riêng cho kit.
Chi phí out-of-pocket duy nhất là API bên thứ 3 tùy chọn: DataForSEO/Firecrawl, thường chỉ vài cents đến dưới $1 mỗi lần audit (tier T1/T2). Ở T3/T4 (chỉ đọc HTML công khai, không dùng tool trả phí) thì gần như $0. So với Ahrefs hay Semrush ~$100+/tháng cố định, đây là khác biệt lớn.
(Nếu bạn chạy qua API key trả theo token thay vì gói subscription — hiếm với người dùng Claude Code — thì audit 185 bài ở T2 tốn khoảng 2-5 USD token. Dùng --batch-size nhỏ hơn hoặc --max-articles để kiểm soát.)
Để bắt đầu:
- Đọc bài setup Claude Code nếu chưa cài và cấu hình.
- Cài skill suite
claude-blogtheo hướng dẫn trong bài setup. - Lần đầu chạy với cờ
--fastđể xem kết quả nhanh, hiểu format report, không mất nhiều token:/blog-audit-pipeline --fast. - Khi đã quen format, chạy full:
/blog-audit-pipeline. - Nếu có GSC kết nối, thêm
--gscđể có kết quả T1 đầy đủ nhất.
Lần đầu mình khuyên dùng --fast. Nó chỉ audit top 20 bài theo ước tính ROI nhanh, chạy trong 5-20 phút. Bạn xem report, hiểu cách đọc 3 composite score, đọc refresh queue, rồi mới chạy full toàn portfolio.
Lỗi hay gặp khi chạy /blog-audit-pipeline
Site 200+ bài chạy rất lâu
Đây là hành vi bình thường. Chấm điểm 200+ bài qua 10 skill mất thời gian. Hai cách xử lý: dùng --fast để chỉ audit top 20 theo ước tính ROI nhanh (5-20 phút), hoặc dùng --max-articles 100 để giới hạn 100 bài. Dùng --batch-size N nhỏ hơn để kiểm soát chi phí API đồng thời.
Site 500+ bài: chạy theo nhóm, mỗi lần 100-150 bài với --max-articles, dùng --resume nếu bị gián đoạn giữa chừng.
Report báo cannibalization nhưng thực ra không phải
Ở T3 và T4, cannibalization detection dùng độ trùng tiêu đề (thuật toán Jaccard similarity), không phải data keyword thật. 2 bài có tiêu đề tương tự chưa chắc đang tranh keyword. Dương tính giả là khả năng có thật ở T3/T4.
Giải pháp: kiểm tra thủ công bài bị flag trong GSC (nếu có), xem chúng có thực sự hiển thị cho cùng query không. Hoặc chạy lại với --gsc (T1) để có kết quả chính xác từ data thật.
“GSC unavailable” dù đã kết nối GSC
Đây là vấn đề credential isolation. Agent con trong pipeline chạy trong context riêng, không kế thừa xác thực GSC từ session chính của Claude Code. Không phải lỗi cấu hình của bạn.
Giải pháp: dừng lệnh đang chạy, đóng hoàn toàn Claude Code, mở lại, chạy lại lệnh từ đầu. Lần này, agent xác thực chạy ở main thread sẽ nhận được credential. Nếu vẫn lỗi sau restart, kiểm tra GSC connection trong settings.
Bài chấm 0–10 điểm decay: có phải là bài hỏng không?
Không nhất thiết. Decay-score thấp thường gặp ở bài quá ít traffic để đo decay chính xác, không đủ data để tính xu hướng. Bài quá mới (dưới 3 tháng) cũng có decay-score thấp vì chưa đủ thời gian để thiết lập baseline traffic.
Trước khi quyết định refresh bài có decay-score thấp, kiểm tra thủ công 5 phút: vào GSC xem impression và hạng 3-6 tháng gần nhất. Nếu ổn định hoặc tăng thì bài không decay, decay-score thấp vì thiếu data. Nếu đang giảm đều thì cần refresh.
Audit crash giữa chừng
Thêm --resume khi chạy lại. Kit tự phát hiện bài cuối đã xử lý và tiếp tục từ đó, không làm lại từ đầu, không mất token đã dùng. Nếu không dùng --resume, kit bắt đầu lại hoàn toàn.
Bài nào trong refresh queue nên bắt đầu trước?
Theo thứ tự ROI từ cao xuống thấp trong refresh queue. Nhưng nếu top bài ROI cao nhất cần viết lại hoàn toàn (mất 2-3 ngày), trong khi bài thứ 3-4 ROI gần bằng nhưng chỉ cần thêm schema (mất 30 phút), ưu tiên bài 3-4 trước. ROI là hướng dẫn, không phải quy tắc cứng.
Câu hỏi thường gặp về /blog-audit-pipeline
Khi mình dùng kit để audit cho khách, họ thường hỏi những câu này trong buổi họp trình bày report. Ghi lại để bạn chuẩn bị câu trả lời trước.
Số trong report là thật hay AI đoán?
Phụ thuộc vào tier đang chạy. Ở T1 (GSC + DataForSEO), các số về traffic, hạng, CTR, impression là dữ liệu thật từ Google và DataForSEO, không phải ước tính. Ở T3-T4 (không có công cụ SEO), một số tín hiệu như cannibalization và search volume được ước lượng từ nội dung và tiêu đề. Mỗi finding trong report đều có ghi rõ nguồn gốc data: T1/T2 hay T3/T4. Không phải tất cả số đều có cùng độ tin cậy.
Câu ngắn cho khách: “Số thật nếu kết nối GSC + DataForSEO. Ước tính nếu không có công cụ. Report ghi rõ từng finding lấy từ đâu.”
Refresh xong bao lâu thì thấy kết quả?
Google cần crawl lại trang, index lại nội dung mới, rồi điều chỉnh hạng dần dần. Thường 4-8 tuần mới thấy rõ xu hướng. Một số trường hợp nhanh hơn (Google crawl thường xuyên, fix rõ ràng), một số chậm hơn (site authority thấp, Google lười crawl).
Đo chính xác bằng cách chạy lại /blog-audit-pipeline --baseline sau 4-6 tuần: so điểm số trước/sau, kết hợp xem hạng trong GSC. Đừng đánh giá kết quả sau 1-2 tuần.
Phải sửa hết 185 bài không?
Không. Refresh queue top 20 đã chọn ra 20 bài có đòn bẩy ROI cao nhất trong portfolio. Sửa đúng 20 bài này có tác động lớn hơn so với sửa đại trà 185 bài theo cảm tính.
Sau khi xong top 20, chạy lại audit. Lúc đó top 20 mới sẽ khác (vì 20 bài cũ đã được cải thiện, bài khác nổi lên). Làm việc theo vòng lặp, không phải một lần làm xong hết.
Khác gì so với việc tự xem Search Console?
GSC cho bạn số: impression, click, hạng, CTR từng query. Hữu ích nhưng thô. Nó không làm được những thứ này:
- Xếp hạng 185 bài theo ROI để biết cái gì cần làm trước.
- Phát hiện cannibalization: bài nào đang tranh keyword với bài nào.
- Chấm điểm chất lượng nội dung, schema, E-E-A-T, GEO.
- Nhìn cross-bài để thấy cluster yếu, bài mồ côi, anchor kém đa dạng.
- Tính ROI và sinh danh sách việc cần làm ưu tiên.
GSC là nguồn data. Kit là lớp phân tích và ưu tiên hóa phía trên data đó.
Có thể gắn tên agency lên report không?
Có. Đặt thông tin agency trong BRAND.md (tên, logo, màu sắc, website) trước khi chạy. Report HTML và PDF xuất ra sẽ dùng brand của bạn thay vì brand mặc định. Kết hợp với cờ --client khi quản lý nhiều khách, để report của từng khách lưu riêng biệt, không lẫn.
Mình không phải dev, có chạy được không?
Được, nhưng cần setup Claude Code trước. Phần khó nhất là lần đầu cài và kết nối GSC hoặc DataForSEO, có thể mất 30-60 phút. Sau khi xong setup, chạy audit chỉ là 1 lệnh, không cần biết code. Đọc bài setup: mình viết theo từng bước, giải thích mọi thuật ngữ, không cần nền tảng kỹ thuật.
Tóm lại
/blog-audit-pipeline giải quyết 1 vấn đề cụ thể: bạn có nhiều bài viết, không biết bài nào đang tụt hạng, không biết nên cập nhật cái gì trước.
1 lệnh cho ra bức tranh toàn portfolio: điểm từng bài qua 5 pillar, tín hiệu decay, cannibalization, internal link thiếu, cluster yếu, rồi xếp ra top 20 bài ROI cao nhất để refresh. Không phải sửa hết. Sửa đúng chỗ.
Audit → refresh top bài → re-audit với --baseline → lặp lại mỗi quý. Đây là chu kỳ bảo trì portfolio thực tế, không phải công việc làm một lần.
Nếu vấn đề của bạn là hạ tầng kỹ thuật (tốc độ, sitemap, Core Web Vitals) thay vì nội dung, đọc bài audit hạ tầng site. Hai bài bổ sung cho nhau, nhiều người chạy cả hai trong cùng một buổi.
Câu hỏi về cách đọc report hoặc case cụ thể? Để lại comment bên dưới.
