# AI Website Check — kế hoạch để thảo luận

Ngày nghiên cứu: 07/11/2026 · Cập nhật triển khai: pilot scan một trang đã được cho phép và triển khai; phạm vi trả phí mở rộng vẫn là đề xuất.

## Cập nhật pilot đã triển khai

Theo yêu cầu triển khai mới, backend dùng TypeScript trên Cloudflare Worker hiện có và D1 để giao bản chạy được ngay. Nhận URL → GET tĩnh có giới hạn → report bền vững → JSON/Markdown → phản hồi tự nguyện. Dùng nguyên 38 tiêu chí; chỉ chạy phần tĩnh đã có adapter, phần còn lại ghi `not_tested`. Không có điểm tổng. API hỗ trợ `basic` và `pro_preview`; pilot một trang miễn phí, chưa có billing hoặc quyền Pro trả phí. Site vẫn riêng tư theo quyền hiện có.

Bản này không render JavaScript, không chạy browser/action, không crawl nhiều trang. A01–A03 chưa kiểm chứng runtime Discovery/Schema/State; link contact/booking chỉ là inventory. Worker có thời gian/byte/parser budget, DNS/public-address và redirect checks, robots policy, quota và idempotency. Đây chưa phải durable paid-job queue. Xem [API](scan-api.md), [security](security-review.md) và [validation](validation.md). Kiến trúc Python phía dưới là hướng tách package sau này, không phải code đã được triển khai.


## 1. Quyết định sản phẩm

Khách hàng chính: người phụ trách marketing tại SME, nhất là người phải giải thích cho sếp website đã sẵn sàng cho AI agents đến đâu. CxO đọc bản tóm tắt và duyệt việc. Nhóm freelancer gồm hai nhu cầu: người làm website dùng report để xác định phạm vi sửa cho khách; người bán chuyên môn bằng website cá nhân (speaker, event moderator, consultant) muốn xem chuyên môn, dịch vụ và đường liên hệ của mình có dễ được hiểu hay không. Freelancer là nhóm bổ sung, không thay thế Marketing ở thông điệp chính. Individuals tò mò là nhóm thử miễn phí. Đơn vị bán là một assessment theo lần, không tự gia hạn.

Landing page dành cho người ra quyết định ít thời gian: ngay màn hình đầu có câu hỏi “Is your website AI-agent ready?” và ô nhập website. Thông điệp chính là **Discovery → Relevance → Enquiries**: được AI cân nhắc khi khách tìm nhà cung cấp; giải thích đúng đối tượng/nhu cầu phục vụ; đường đi rõ tới contact, booking hoặc quote. Giữ câu “Could an AI assistant shortlist us?”. Không dùng “What should I tell my boss?” làm pain point chính; report cho lãnh đạo là lợi ích phụ của một bản đánh giá có bằng chứng. Mỗi kết luận phải nối bằng chứng → hệ quả có thể xảy ra → hành động. Không dự báo doanh thu mất đi, không gọi thị trường là blue ocean đã được chứng minh và không hứa agent sẽ giới thiệu doanh nghiệp sau khi sửa.

Nút “See results in minutes” chạy pilot thật trên một URL công khai. Ngân sách xử lý HTTP khoảng 28 giây; đây chưa phải SLA production được đo ở quy mô lớn. Form hiển thị tiến trình, lỗi, reconnect và report đã lưu. Nhãn miễn phí và phần chưa kiểm tra phải rõ. Không nhập URL chứa bí mật hoặc token riêng tư.

Các ví dụ cho freelancer có thương hiệu cá nhân: chủ đề diễn thuyết, kinh nghiệm điều phối sự kiện, đối tượng phục vụ, ngôn ngữ/khu vực làm việc nếu có, và cách gửi lời mời hoặc hỏi báo giá. Chỉ áp dụng tiêu chí phù hợp mục tiêu website; không coi thiếu giá công khai hoặc không có booking tool là lỗi mặc định. Đây là giả thuyết phân khúc để kiểm chứng, chưa phải bằng chứng nhu cầu thị trường.

Landing page hiện tại là bản trình bày sản phẩm bằng tiếng Anh, có report hư cấu được ghi rõ, bảng giá dự kiến và trang phương pháp. Đã có scan tĩnh một trang và report thật; không có checkout, thu lead hoặc gửi email. Phạm vi mở rộng vẫn theo kế hoạch dưới đây.

| Gói dự kiến | Phạm vi | Kết quả | Kiểm tra lại |
|---|---|---|---|
| Basic — €0 | Trang chủ và metadata discovery trong ngân sách nhỏ | 12 tiêu chí nền tảng; phát hiện có bằng chứng; 3 ưu tiên | Có thể chạy lại Basic |
| Pro — €5/report | Tối đa 5 trang được chọn | Các tiêu chí áp dụng đã được triển khai, report chi tiết và checklist giao việc | 1 lần trong 7 ngày |
| Business — €100/assessment | Đề xuất tối đa 50 trang được chọn; 3 hành trình đọc trong browser khi có module | Tóm tắt cho sếp, phát hiện theo nhóm nguyên nhân, người phụ trách, tiêu chí nghiệm thu; rà soát thủ công trong pilot | 1 lần trong 30 ngày |

Giữ €100 làm giá thử nghiệm Business. Số trang là giới hạn khối lượng công việc. Website có hơn 5 trang vẫn có thể chọn 5 trang để mua Pro; không tự tăng giá chỉ vì sitemap có 6 URL. Giới hạn 50 trang và thời hạn re-test là đề xuất cần chốt. Giá cuối cùng/thuế cần cấu hình rõ khi triển khai checkout; hiện chưa có giao dịch.

## 2. Kết luận từ nghiên cứu

Phải phân biệt **khả năng truy cập**, **khả năng tìm/hiểu thông tin**, **khả năng tương tác** và **việc được một dịch vụ AI giới thiệu**. Scanner bên ngoài có thể thu thập bằng chứng cho ba nhóm đầu trong phạm vi cụ thể. Nó không chứng minh thứ hạng, trích dẫn, doanh thu hay hoạt động của tất cả agent.

Google không yêu cầu file AI đặc biệt hoặc schema riêng để xuất hiện trong tính năng AI Search; đủ điều kiện vẫn không bảo đảm xuất hiện. OpenAI phân biệt search crawler, training crawler và user-triggered fetch. Website có thể cho phép tìm kiếm nhưng từ chối huấn luyện. web.dev giải thích agent có thể sử dụng HTML, accessibility tree và ảnh chụp; kiểm tra raw HTML không đủ để kết luận browser agent thất bại.

`llms.txt`, Markdown alternates, OpenAPI, MCP, WebMCP được đưa vào nhóm tùy chọn. Thiếu chúng trên một website giới thiệu SME không bị tính là lỗi. Chính sách các nhà cung cấp thay đổi; lưu ngày kiểm chứng nguồn, không lặp lại tuyên bố tuyệt đối từ README của đối thủ.

38 tiêu chí cuối cùng được định nghĩa trong [criteria.md](criteria.md) và [criteria.json](../data/criteria.json):

| Nhóm | Số tiêu chí | Basic | Pro mở rộng |
|---|---:|---:|---:|
| Access & discovery | 8 | 6 | 2 |
| Readable content | 7 | 4 | 3 |
| Agent interaction | 5 | 0 | 5 |
| Business clarity | 10 | 2 | 8 |
| Optional interfaces | 5 | 0 | 5 |
| Action capabilities | 3 | 0 | 3 |
| Tổng | 38 | 12 | 26 |

Basic và Pro là lớp quyền sử dụng; phase là giai đoạn phát triển. Chưa thể quảng cáo tất cả 38 mục là đang chạy ở lần ra mắt đầu. Pro/Business bao gồm các mục Basic trên phạm vi trang đã chọn. Không đếm một tiêu chí nhiều lần theo số bot hoặc số trang để làm lớn con số marketing.

## 3. Hợp đồng kết quả và độ quan trọng

### Mục trả phí: nguồn lực cho Contact / Book demo / Schedule meeting / Ask for quote

Phạm vi đã làm rõ: **chỉ kiểm tra tiềm năng qua Discovery → Schema → State**, không chạy thử hành trình đặt lịch. A01–A03 thuộc Pro/Business; Basic chỉ giới thiệu phạm vi tính năng, không thực hiện các checks này. Quyền xem kết quả và chạy các checks phải được kiểm tra tại API/worker khi paywall được triển khai, không chỉ giấu bằng CSS. Pilot một trang hiện miễn phí, chưa có paywall thật. Không quảng cáo A01–A03 đã hoàn tất chỉ từ các link UI được quan sát.

| Kiểm tra | Bằng chứng cần tìm | Không suy diễn thành |
|---|---|---|
| A01 — Discovery | Tool được đăng ký trong page context; metadata tools/list của MCP được quảng bá; operation trong OpenAPI; ghi UI fallback riêng | Có nút Book demo đồng nghĩa có tool gọi được |
| A02 — Schema | Input types/required fields, mô tả tham số, output contract nếu có; tính hợp lệ theo dialect | Schema hợp lệ đồng nghĩa action chạy thành công; thiếu outputSchema tùy chọn là sai chuẩn |
| A03 — State | Context hiện đang lộ ra, prerequisites, state/availability resource được khai báo | Có get_availability đồng nghĩa có giờ trống; có tool đồng nghĩa luôn dùng được |

Hiển thị theo từng mục tiêu: **tool đăng ký được quan sát / chỉ có API được mô tả / chỉ có UI / không tìm thấy trong phạm vi kiểm tra / chưa kiểm tra được**. Có nhiều kênh thì giữ đầy đủ inventory và bằng chứng. Không tìm thấy ở vài trang không được kết luận toàn công ty không có công cụ. Login, iframe không đọc được, runtime không hỗ trợ WebMCP hoặc JavaScript chưa quan sát được phải ghi giới hạn.

Ví dụ minh họa, không phải scan thật: “Schedule meeting: quan sát tool book_meeting; input schema có service_id và timezone; state hiện tại chưa được công khai; chưa gọi tool.” Hoặc “Ask for quote: chỉ tìm thấy form cho người dùng, chưa tìm thấy tool/API được khai báo.” Thiếu giao diện tool là cơ hội cải thiện direct tool support, không có nghĩa mọi browser agent đều bất lực.

Triển khai dùng lại P03–P05 để thu inventory; A01–A03 diễn giải inventory cho mục tiêu kinh doanh cụ thể. Một bằng chứng chỉ được thu một lần; không nhân bản finding hoặc tính điểm hai lần. V1 có thể parse khai báo tĩnh bằng rule, không cần LLM. Kết luận về runtime registration cần browser adapter phù hợp phiên bản; giữ trong phase 3 cho tới khi adapter hoạt động. Metadata discovery/listing được phép; **không gọi business tool, kể cả tool tự khai báo read-only**, không điền form, chọn slot, submit, tạo lead/meeting hoặc payload thử. State cần gọi tool mới biết thì ghi chưa xác minh.

WebMCP còn là đề xuất/draft theo tài liệu kiểm tra ngày 07/11/2026. Ghi browser/protocol version vào evidence; không hard-code một tên JavaScript API cho mọi phiên bản. MCP, WebMCP và OpenAPI là các cơ chế khác nhau, không giả định đều được mọi agent hỗ trợ hoặc đều có chung state schema.

Fixture bổ sung: tool đăng ký đúng; chỉ có CTA; chỉ có API docs; schema sai; output schema tùy chọn vắng; state resource chỉ được khai báo; iframe/auth không inspect được; một endpoint/tool cùng xuất hiện ở nhiều trang. Không cần tạo business data để kiểm tra các trường hợp này. Acceptance: không có business tool invocation/form fill/submission trong trace; unknown không bị biến thành absent; mọi kết luận có source và scope.

Mỗi kết quả gồm `rule_id`, `rule_version`, `status`, `importance`, `evidence_class`, URL, thời điểm, môi trường, bằng chứng, lý do, cách sửa, vai trò phụ trách và tiêu chí nghiệm thu. Evidence lưu nguyên văn ngắn cùng giá trị đã chuẩn hóa; model không được tự tạo bằng chứng.

- **Pass:** điều kiện được kiểm tra đạt trong phạm vi nêu rõ.
- **Issue:** quan sát đủ bằng chứng về vấn đề của mục tiêu đã chọn.
- **Review:** heuristic hoặc bối cảnh chưa đủ; cần người xem xét.
- **Not tested:** không đủ dữ liệu, bị chặn, timeout, chưa có module hoặc ngoài ngân sách.
- **Not applicable:** không phù hợp với loại website/mục tiêu.

Blocker chỉ dùng khi điều kiện quan sát được chặn tác vụ đã chọn; High ảnh hưởng trực tiếp tác vụ quan trọng; Medium tăng độ rõ/độ bền; Informational ghi nhận lựa chọn hoặc tích hợp. Đây là mức ưu tiên do sản phẩm đề xuất, không phải trọng số khoa học hay dự báo thiệt hại.

Không dùng điểm tổng 0–100 ở v1. Hiển thị số mục đã kiểm tra, chưa kiểm tra, có vấn đề và số trang được bao phủ. Một scan bị chặn không được hiện như một website có hàng chục lỗi. Kết quả Basic phải công khai blocker đã quan sát; thanh toán mua thêm phạm vi, độ sâu và kế hoạch triển khai.

## 4. Kiến trúc Python dự kiến cho giai đoạn sau

Phần dưới là thiết kế tương lai; pilot hiện tại dùng TypeScript, không phải Python. Core Python dự kiến không phụ thuộc web UI, thanh toán hoặc model provider. Các adapter CLI/API dùng chung report schema và rule registry.

| Thành phần | Đề xuất | Vai trò |
|---|---|---|
| CLI/package | Python, Typer, Pydantic | Chạy assessment và xuất JSON/Markdown; tên package chưa đăng ký |
| Fetcher | HTTPX async, HTML/XML parsers, robots parser chuẩn | Fetch có giới hạn, trích xuất, lưu evidence |
| Rules | Hàm thuần trên snapshot | Chạy lại được với cùng fixture; không mỗi rule tự fetch tùy ý |
| Fact extraction | Quy tắc trước; model nhỏ khi cần | Trả JSON có source span; kiểm tra lại span bằng code |
| API | FastAPI | Nhận scope, tra tiến độ, phân quyền xem report |
| Worker | Một worker container tách khỏi API ban đầu | Thực hiện job bền vững, timeout/cancel và retry có giới hạn |
| Jobs/reports | Postgres; object storage cho PDF/evidence | Giữ trạng thái job, snapshot, scope và phiên bản |
| Browser, giai đoạn sau | Playwright trong container cô lập | Kiểm tra rendered DOM, accessible controls và hành trình đọc |
| Web | Landing page hiện tại + trang report | Trình bày cùng JSON report; thanh toán theo lần |

Một job có trạng thái `queued → fetching → checking → reporting → completed`, hoặc `partial/failed/cancelled`. Claim job bằng lease; worker chết thì job có thể được xử lý lại. Không dựa vào background task trong process HTTP cho job khách đã thanh toán. Chỉ bổ sung Redis queue nếu thực sự cần; không dựng hệ thống nhiều service ngay.

Landing page có thể chạy trên hosting hiện tại; Python worker chạy container/VM riêng. Không giả định Python browser workload chạy được trong Cloudflare Worker của website.

## 5. Cách chạy một assessment

1. Người mua chọn mục tiêu, loại website và scope; chọn URL trang quan trọng, không crawl vô hạn.
2. Preflight kiểm tra URL, robots policy của scanner, khả năng lấy trang và ước lượng scope. Không thu tiền cho một deep scan đã biết không thực hiện được.
3. Đọc trang chủ, robots/sitemap có giới hạn; chọn trang trong scope, bỏ fragment và deduplicate cẩn thận.
4. Tạo snapshot: response, raw text, links, markup, thời gian; rule engine dùng lại snapshot.
5. Chạy HTTP/HTML rules. Khi phụ thuộc không có dữ liệu thì trả `not_tested`, không tự suy ra lỗi.
6. Tạo fact ledger cho thông tin doanh nghiệp. So sánh theo entity, locale và branch; khác số điện thoại có thể là bộ phận khác chứ không phải sai.
7. Chỉ chạy browser cho trang/tác vụ cần thiết và trong ngân sách. Đọc và điều hướng; không submit, mua, đặt lịch hoặc tạo tài khoản.
8. Tổng hợp lỗi cùng nguyên nhân; viết executive summary và checklist có owner/acceptance criteria từ evidence.
9. Khi re-test, giữ nguyên scope và rule version để so sánh; nếu phương pháp đổi thì chỉ rõ phần không so sánh trực tiếp được.

Ví dụ đầu ra: “Không tìm thấy khu vực phục vụ trong 5 trang đã kiểm tra”, kèm URL và trích đoạn; hành động là Content xác nhận và bổ sung nếu phù hợp. Không biến thành “ChatGPT không biết bạn phục vụ ở đâu”.

## 6. Các giai đoạn và điều kiện hoàn thành

Ước lượng dưới đây là dự toán kỹ thuật cho một người đã quen Python/web, chưa phải cam kết. Bổ sung thời gian cho lỗi tích hợp thực tế. Với 4 giờ tập trung/ngày, 24 giờ tương đương khoảng 6 ngày làm việc.

| Giai đoạn | Phạm vi | Ước lượng | Điều kiện để đi tiếp |
|---|---|---|---|
| Hiện tại | Landing page, catalog, plan, sample | Đang bàn giao | Bạn chốt scope/tiêu chí/gói |
| 1 — Core deterministic | Fetcher an toàn, schema/fixtures, HTTP/HTML rules khả thi, CLI JSON/Markdown | 15–25 giờ | Golden fixtures và kiểm tra false positive đạt; mọi Issue có evidence |
| 1b — Report & pilot | API/job, report HTML/PDF, scope/re-test, thanh toán test mode rồi live sau xác nhận | 10–18 giờ | Demo từ URL tới report với fixture/website được phép; không thu trùng |
| 2 — Business clarity | Fact ledger, extraction có nguồn, consistency, report giao việc | 15–25 giờ | Thử corpus có nhiều chi nhánh/ngôn ngữ; không bịa fact |
| 3 — Browser & optional | Render diff, controls, 3 hành trình đọc giới hạn, tích hợp tùy chọn và A01–A03 discovery/schema/state | Ước lượng cũ 15–25 giờ; cần dự toán lại phần adapter A01–A03 sau spike | Egress isolation/cost cap; chỉ hành động đọc/metadata; không gọi business tool; báo coverage chính xác |

Mốc ra thị trường hẹp sau khoảng 25–43 giờ phát triển sau khi chốt, với nhãn phạm vi minh bạch và Business pilot có người rà soát. Đầy đủ nghiên cứu 38 mục cần thêm phase 2/3. Không gom toàn bộ thành lời hứa “xong trong hai ngày”.

## 7. Chất lượng, an toàn và dữ liệu

Đây là yêu cầu triển khai scanner công khai, không phải các tiêu chí cộng điểm website:

- Chỉ HTTP(S) và cổng cho phép; cấm credentials trong URL; kiểm tra cả IPv4/IPv6, localhost, private/link-local/metadata. Chặn bằng network egress thực tế, không chỉ regex hoặc một lần kiểm tra DNS. Revalidate từng redirect, sitemap target và browser subrequest để chống SSRF/DNS rebinding.
- Robots của scanner được tôn trọng; UA công khai; không vượt CAPTCHA, login hoặc firewall. Một 403 từ IP của scanner không chứng minh bot thật của OpenAI bị chặn.
- Ngân sách đề xuất để benchmark: 2 request đồng thời/domain, tối đa 3 redirect, timeout hữu hạn, 2 MB HTML/page, 5 MB sitemap, 60 giây Basic. Pro/Business có cap pages/bytes/browser-seconds/tokens riêng. Đây là cấu hình thử nghiệm cần đo, không là tốc độ bán hàng đã xác minh.
- XML không cho external entity; giới hạn nén/đệ quy. Render evidence bằng escape HTML để report không chạy script từ website được scan.
- Nội dung website là dữ liệu không tin cậy. Model extraction không được gọi tool hoặc làm theo chỉ dẫn nhúng trong trang; validate output/source span; fail closed về `review` khi không có chứng cứ.
- Report riêng tư theo mặc định; token có quyền hạn rõ, URL khó đoán không thay cho authorization. Snapshot ngắn, giữ những gì cần; chính sách lưu/xóa và chia sẻ do người dùng chủ động. Không collect form submissions, cookies hay session đăng nhập của khách.
- Thanh toán theo order: verify webhook, idempotency, trạng thái payment tách khỏi scan; retry kỹ thuật không tạo giao dịch mới. Gói và phạm vi cố định lúc mua. Quy trình failed-scan/refund phải rõ trước mở live checkout.

## 8. Kiểm chứng trước khi bán

Fixture bắt buộc: robots 404/5xx, training deny nhưng search allow, scoped path rules, noindex đúng chủ ý, CSR-only, nội dung ngắn hợp lệ, JSON-LD sai/đúng, nhiều branch/currency, accessible icon button, overlay hợp lệ, challenge thật và 403 không rõ nguyên nhân. Kiểm tra URL/redirect/DNS rebind ở mọi đường fetch, kể cả browser và sitemap.

Làm corpus 20 website/fixture có sự cho phép hoặc kiểm soát, nhiều kiểu HTML/CSR/đa ngôn ngữ. Người rà soát gán nhãn trước, đối chiếu với kết quả máy; phân loại false positive/negative theo rule. Mục tiêu ban đầu do team đề xuất: ≥95% precision cho rule được phép ghi `Issue`, 100% Issue có bằng chứng có thể mở lại, 0 critical false positive trong control set. Corpus nhỏ không chứng minh độ chính xác toàn thị trường; mở rộng sau pilot.

Model checks có thể giữ `review` nếu chưa đạt ngưỡng. Không trộn chúng với deterministic failures. Đo thời gian, requests, tokens, browser seconds, chi phí và tỷ lệ scan không hoàn thành theo gói.

## 9. Chi phí và thử thị trường

Chi phí/report = HTTP/compute + browser time + model input/output + PDF/storage + payment fee + thời gian review/support. Chưa có benchmark nên chưa kết luận biên lợi nhuận. Basic mặc định không dùng LLM/browser. Pro cần gần như tự động. Business €100 có thể gồm 20–30 phút rà soát trong pilot; ghi rõ đây là phần con người làm.

Thử 10–15 người có website thật từ marketing/freelancer; đo hiểu đúng report, chọn được việc đầu tiên, click gói và mua thật khi checkout sẵn sàng. Test €100 trực tiếp, không tự hạ vì đối thủ có subscription. Không dùng sao GitHub hoặc lượt scan miễn phí để khẳng định willingness-to-pay. Theo dõi freelancer mua website khách thứ hai và người mua re-test sau sửa.

Open source dự kiến: Python scanner/CLI/rule fixtures khi đã thống nhất license. Report workflow, hosted billing và review service là giá trị đóng gói. Không cần copy dashboard của đối thủ; không có tuyên bố các tiêu chí này là độc quyền.

## 10. Thu hút khách và giúp agent tìm thấy công cụ

Đây là kế hoạch thử nghiệm, chưa phải các kênh đã chứng minh mang khách cho sản phẩm.

**Ưu tiên một người mua:** marketing manager tại SME cần báo cáo để xin ngân sách hoặc giao việc cho web freelancer. CxO là người nhận bản tóm tắt; freelancer là kênh phân phối có khả năng mua lại cho nhiều khách. Individuals giúp thử UX nhưng không nên quyết định toàn bộ roadmap.

**Trong 30 ngày đầu sau khi scanner sẵn sàng:**

1. Tuần 1: công khai methodology, sample report và trang giải thích “AI có đọc được website của bạn không?”. Dùng 3 website tự sở hữu/được phép làm case study trước–sau; đưa bằng chứng và giới hạn, không gắn mức tăng doanh thu giả định.
2. Tuần 2: tìm 10–15 người thử qua cộng đồng marketing, WordPress/Webflow và freelancer có quy định cho phép giới thiệu công cụ. Viết một bài walkthrough hữu ích cho từng cộng đồng, tránh đăng trùng hàng loạt. Chưa gửi tin nhắn hay đăng bài ở mốc hiện tại.
3. Tuần 3: thử 3 freelancer với report đủ dùng cho buổi bàn giao khách hàng. Đo họ có dùng report trong cuộc trao đổi thật và có quay lại cho website thứ hai không. White-label chỉ làm khi có nhu cầu trả tiền, chưa thêm dashboard agency.
4. Tuần 4: đối chiếu lượt vào → bắt đầu → hoàn thành → xem action plan → mua → re-test. Dùng UTM và event tối thiểu khi người dùng được thông báo phù hợp. Phỏng vấn nguyên nhân không mua, không chỉ hỏi họ có thích ý tưởng không.

**Nội dung có ý định mua rõ:** các trang hướng dẫn theo vấn đề đã kiểm chứng như robots search vs training, nội dung chỉ xuất hiện sau JavaScript, thông tin giá mâu thuẫn, hoặc form không có label. Mỗi bài có ví dụ lỗi, cách sửa và liên kết chạy check liên quan. Trang so sánh với giải pháp khác phải có ngày kiểm chứng, tiêu chí minh bạch và ghi nhận điểm mạnh của họ. Không tạo hàng nghìn trang SEO mỏng hoặc public report của khách mặc định.

**Open source là kênh developer:** phát hành Python package sau khi core đạt kiểm thử; CLI mẫu `ai-website-check scan https://example.com --format json` là tên đề xuất chưa đăng ký. README phải cho thấy input/output, quickstart chạy được, schema có version, fixture và changelog. GitHub Action là bước sau khi có người cần CI. PyPI/GitHub hỗ trợ khám phá và tin cậy; chúng không thay được report dễ hiểu cho marketing.

**Để AI agents có thể tìm và sử dụng công cụ:**

- Công khai nội dung tĩnh có thể đọc: công cụ làm gì, dành cho ai, giá một lần, giới hạn trang, mẫu output, methodology, hướng dẫn gọi CLI/API và những điều chưa đo được. Giữ tên sản phẩm và thông tin nhất quán giữa website, repo và package.
- Đảm bảo trang public được crawler phù hợp truy cập/index theo chính sách chủ website; không nhầm quyền training với search. Đưa liên kết nội bộ và sitemap tới tài liệu quan trọng.
- Khi API thật tồn tại, công khai OpenAPI, JSON output có evidence URL và mã lỗi dễ hiểu. Chỉ thêm MCP nếu đã có workflow agent thực sự cần gọi scan; phải có scope/chi phí/quyền rõ. Không tạo integration giả để lấy badge.
- Tạo các bài benchmark có phương pháp tái lập và case study được khách cho phép; tìm review độc lập. Tác dụng đối với recommendation là giả thuyết cần đo, không là điều scanner có thể bảo đảm.
- Theo dõi referral thực tế và tập prompt mẫu theo tháng, ghi model/ngày/context. Một câu trả lời có tên sản phẩm không chứng minh thứ hạng ổn định. Không dùng prompt injection, fake review hoặc tuyên bố “được ChatGPT chứng nhận”.

Ngưỡng ra quyết định nội bộ đề xuất: ít nhất 5/10 người thử xác định được hành động tiếp theo mà không cần giải thích; ít nhất 3 khách mua thật, trong đó có 1 Business €100; ít nhất 1 freelancer quay lại với website khác. Đây là mốc học hỏi ban đầu, không phải bằng chứng thống kê về toàn thị trường. Nếu chỉ có lượt free scan, cải thiện report/định vị và thử lại trước khi mở rộng browser/MCP.

## 11. Những quyết định cần thảo luận

1. Chấp nhận pilot ra trước với deterministic checks, sau đó thêm semantic/browser, thay vì đợi tất cả 38?
2. Gói Business €100 gồm tối đa 50 trang + 3 hành trình đọc + một lần rà soát thủ công có phù hợp không?
3. Giữ bản tổng hợp theo findings/coverage, chưa dùng điểm 0–100?
4. Sau khi đồng ý scope, chọn license cho Python core và thời điểm mở public repo/landing page.

## Nguồn nền tảng

Các nguồn được kiểm tra ngày 07/11/2026. Tiêu chí và thuật toán là thiết kế của dự án; nguồn không chứng nhận sản phẩm.

- Google AI features: https://developers.google.com/search/docs/appearance/ai-features
- OpenAI crawler purposes: https://developers.openai.com/api/docs/bots
- Anthropic crawlers: https://support.claude.com/en/articles/8896518-does-anthropic-crawl-data-from-the-web-and-how-can-site-owners-block-the-crawler
- Agent website UX: https://web.dev/articles/ai-agent-site-ux
- Structured data policies: https://developers.google.com/search/docs/appearance/structured-data/sd-policies
- W3C name/role/value: https://www.w3.org/WAI/WCAG22/Understanding/name-role-value.html
- llms.txt proposal: https://llmstxt.org/
- WebMCP: https://developer.chrome.com/docs/ai/webmcp
- SSRF prevention: https://cheatsheetseries.owasp.org/cheatsheets/Server_Side_Request_Forgery_Prevention_Cheat_Sheet.html
- HTTPX async: https://www.python-httpx.org/async/
- FastAPI background tasks caveat: https://fastapi.tiangolo.com/tutorial/background-tasks/
- Pydantic models: https://docs.pydantic.dev/latest/concepts/models/
- Typer: https://typer.tiangolo.com/

## 10. Lớp phản hồi report — đã triển khai độc lập với scanner

Agent đọc report miễn phí, phản hồi like/recommend/comment hoàn toàn tự nguyện. Report mẫu Northline dùng đúng finding đang hiển thị và map sang B02, T11, T09 trong catalog 0.2.0-proposed; toàn bộ vẫn là minh họa. Chưa có scan thật hay score tổng.

Alex sở hữu `lib/feedback`, integrity tests và contract; Steve phụ trách adapter report, API, lưu trữ, UI và tích hợp. Không thay 38 tiêu chí, giá hoặc phạm vi A01–A03. Biên nhận chỉ ghi server đã cấp response của report/version; finding reference phải thuộc report. Không xác minh lời kể, danh tính hoặc business outcome. D1 giữ snapshot report theo content hash để trace vẫn đối chiếu được khi mẫu được cập nhật. Chỉ nhận phản hồi mới cho version hiện hành.

Xem `docs/feedback-contract.md` và `/for-agents`. Quyền truy cập Site vẫn private; mở cho agent bên ngoài là quyết định phát hành riêng.
