geo-crawlers – skill Dữ liệu & Khoa học cho agent AI
Phân tích quyền truy cập của AI crawler.
Cài skill geo-crawlers bằng một lệnh
Chọn công cụ bạn đang dùng, copy lệnh và dán vào terminal. Skill sẽ nằm trong thư mục skills của công cụ đó và sẵn sàng dùng ở phiên làm việc tiếp theo.
Claude Code
mkdir -p ~/.claude/skills && curl -fsSL https://skill.dn1nguoi.com/z/geo-crawlers-5af05.tgz | tar xz -C ~/.claude/skills
Gọi trong Claude Code: /geo-crawlers – rồi mô tả công việc bạn muốn làm.
Codex
mkdir -p ~/.codex/skills && curl -fsSL https://skill.dn1nguoi.com/z/geo-crawlers-5af05.tgz | tar xz -C ~/.codex/skills
Gọi trong Codex: $geo-crawlers – rồi mô tả công việc bạn muốn làm.
Hermes Agent
mkdir -p ~/.hermes/skills && curl -fsSL https://skill.dn1nguoi.com/z/geo-crawlers-5af05.tgz | tar xz -C ~/.hermes/skills
Gọi trong Hermes Agent: /geo-crawlers – rồi mô tả công việc bạn muốn làm.
DeepSeek
mkdir -p ~/.deepcode/skills && curl -fsSL https://skill.dn1nguoi.com/z/geo-crawlers-5af05.tgz | tar xz -C ~/.deepcode/skills
Gọi trong DeepSeek: /geo-crawlers – rồi mô tả công việc bạn muốn làm.
Nội dung SKILL.md
Nội dung SKILL.md gốc bằng tiếng Anh.
AI Crawler Access Analysis Skill
Purpose
Review crawler access for a specified site and publisher policy. Access is one
input to discovery, not a guarantee of indexing/citation; training opt-out is
separate from search access and cannot remove existing model knowledge. Do not
recommend allowing training merely to improve a visibility score. Confirm the
owner's licensing, privacy, load and search goals first.
Verified operator distinctions
| Token | Purpose/control | Policy implication |
|---|---|---|
| GPTBot | OpenAI model-training crawl | Independent of search permission |
| OAI-SearchBot | ChatGPT search indexing | Search opt-out can still permit navigational links |
| ChatGPT-User | User-directed requests | Not automatic indexing; robots rules may not apply |
| ClaudeBot | Potential model-training content | Distinct from Claude search/retrieval agents |
| Claude-SearchBot | Search indexing/quality | Review separately from training |
| Claude-User | User-directed retrieval | Review the publisher's desired access |
| Google-Extended | Product-control token for Gemini training/grounding | No separate HTTP UA; does not control Google Search inclusion/ranking |
Sources: [OpenAI](https://developers.openai.com/api/docs/bots),
[Anthropic](https://support.claude.com/en/articles/8896518-does-anthropic-crawl-data-from-the-web-and-how-can-site-owners-block-the-crawler),
[Google](https://developers.google.cn/crawling/docs/crawlers-fetchers/google-common-crawlers?hl=en).
User-Agent text is spoofable: verify operator-published source IPs/methods before
attributing log traffic. Full UA versions change; match documented tokens.
Other imported names (PerplexityBot, GoogleOther, Applebot-Extended, Amazonbot,
FacebookBot, CCBot, Bytespider, cohere-ai and historical anthropic-ai) are leads to
verify against each operator's current documentation. Do not infer their current
search/training behavior, user counts or business value from this list.
Worked policy example
For a publisher who explicitly wants ChatGPT search but declines OpenAI training,
propose a minimal diff after reviewing existing groups:
User-agent: OAI-SearchBot
Allow: /public/
Disallow: /
User-agent: GPTBot
Disallow: /This allows the selected public subtree according to longest-match rules. Merge
with the existing policy; never replace unrelated crawler/path restrictions or
rely on robots.txt as access control. Private pages still need authentication.
Actual retrieval also depends on WAF/CDN policy, robots status and crawl caches.
---
Analysis Procedure
Step 1: Fetch and Parse robots.txt
1. Validate the authorized HTTPS origin, redirects and public destination; bound requests/time/bytes and fetch [domain]/robots.txt without credentials. Record errors/status distinctly from missing rules.
2. Parse all User-agent directives and their associated Allow/Disallow rules.
3. For each verified crawler and representative URL, apply RFC 9309 group merging and longest-path match (Allow wins equal specificity), not a whole-site binary:
- Check if there is a specific User-agent block for that crawler
- Check if there is a wildcard (
User-agent: *) block that would apply - Determine effective access: Allowed, Blocked, or Not Mentioned (inherits wildcard rules)
4. Note any Crawl-delay directives that may slow AI crawler access.
5. Check for Sitemap directives (AI crawlers use these for discovery).
Step 2: Check Meta Robots Tags
1. For a sample of 5-10 key pages, fetch the HTML and check for:
<meta name="robots" content="noindex">-- indexing directive for supporting agents, not access control<meta name="robots" content="nofollow">-- supported link-handling hint, not a universal fetch ban<meta name="robots" content="noai">-- nonstandard proposal; verify operator support before assigning effect<meta name="robots" content="noimageai">-- nonstandard; do not assume operator enforcement- Bot-specific meta tags:
<meta name="GPTBot" content="noindex">
2. Record any page-level overrides of the robots.txt directives.
Step 3: Check HTTP Headers
1. For the same sample pages, check response headers for:
X-Robots-Tag: noindex-- HTTP header equivalent of meta noindexX-Robots-Tag: noai-- HTTP header to block AI useX-Robots-Tag: noimageai-- nonstandard; do not assume operator enforcement- Bot-specific headers:
X-Robots-Tag: GPTBot: noindex
2. Evaluate supported meta/header directives together under each operator's documented rules; there is no universal header-overrides-meta rule. Headers can cover non-HTML resources.
Step 4: Check for AI-Specific Files
1. Check for /llms.txt as an optional proposal; presence is not a platform indexing requirement.
2. Record a legacy /.well-known/ai-plugin.json only as historical integration metadata, not a current crawler prerequisite.
3. Check for /ai.txt (proposed standard, similar to ads.txt for AI).
4. Record presence/absence and quality of each file.
Step 5: Assess JavaScript Rendering Requirements
1. Check if the site is a Single Page Application (SPA) or heavily JavaScript-rendered.
2. Compare raw response with an authorized rendered page and record which content
requires JavaScript. Do not invent each crawler's rendering capabilities from
product names; Google-Extended is a control token, not a rendering engine.
3. If critical content requires JS rendering, flag this as a potential issue.
4. Check for Server-Side Rendering (SSR) or Static Site Generation (SSG) as mitigations.
Step 6: Parse Content Signals
Using the already-fetched robots.txt from Step 1, scan for Content-Signal: directives (optional provider-defined extension; not RFC 9309 enforcement).
1. Scan every line for a line starting with Content-Signal: (case-insensitive).
2. If found:
- Parse all key=value pairs (split on
,then on=). - Validate keys against the known set:
ai-train,search,ai-inputin the Cloudflare Content Signals implementation. - Validate values: only
yesandnoare valid. - Flag any unknown keys or invalid values as a warning — record the exact implementation/version; do not conflate it with a final IETF standard.
- Record syntax as Parsed, not proof of compliance or crawler behavior and surface parsed values with plain-English meaning.
3. If absent: record as Absent — ask whether the publisher wants an optional declaration.
No additional HTTP request is needed. robots.txt is already fetched in Step 1.
---
Output Format
Generate a file called GEO-CRAWLER-ACCESS.md:
# AI Crawler Access Report: [Domain]
**Analysis Date:** [Date]
**Domain:** [Domain]
**robots.txt Status:** [Found/Not Found/Error]
---
## Crawler Access Summary
| Crawler | Operator | Tier | Status | Impact |
|---|---|---|---|---|
| GPTBot | OpenAI | 1 | [Allowed/Blocked/Not Mentioned] | [Impact description] |
| OAI-SearchBot | OpenAI | 1 | [Status] | [Impact] |
| ChatGPT-User | OpenAI | 1 | [Status] | [Impact] |
| ClaudeBot | Anthropic | 1 | [Status] | [Impact] |
| PerplexityBot | Perplexity | 1 | [Status] | [Impact] |
| Google-Extended | Google | 2 | [Status] | [Impact] |
| GoogleOther | Google | 2 | [Status] | [Impact] |
| Applebot-Extended | Apple | 2 | [Status] | [Impact] |
| Amazonbot | Amazon | 2 | [Status] | [Impact] |
| FacebookBot | Meta | 2 | [Status] | [Impact] |
| CCBot | Common Crawl | 3 | [Status] | [Impact] |
| anthropic-ai | Anthropic | 3 | [Status] | [Impact] |
| Bytespider | ByteDance | 3 | [Status] | [Impact] |
| cohere-ai | Cohere | 3 | [Status] | [Impact] |
## AI Visibility Score: [X]/100
**Tier 1 Access:** [X/5 crawlers allowed]
**Tier 2 Access:** [X/5 crawlers allowed]
**Tier 3 Access:** [X/4 crawlers allowed]
---
## Critical Issues
[List any Tier 1 crawlers that are blocked]
## Recommendations
### Immediate Actions
[Specific robots.txt changes needed]
### robots.txt Recommendation[Complete recommended robots.txt content for AI crawlers]
### Additional Technical Findings
- **Meta Robots Tags:** [Findings]
- **X-Robots-Tag Headers:** [Findings]
- **JavaScript Rendering:** [Assessment]
- **llms.txt:** [Present/Absent]
- **Sitemap Accessibility:** [Assessment]
### Content Signals (IETF Draft)
**Status:** Present / Absent
<!-- If present: -->
| Signal Key | Value | Meaning |
|---|---|---|
| ai-train | no | Opted out of AI model training |
| search | yes | Prefers indexing and links/excerpts; this implementation separates generative input |
| ai-input | yes | Prefers use as generative model input |
<!-- If absent: -->
**Recommendation:** Add a `Content-Signal:` directive to robots.txt to declare AI usage preferences explicitly. Example:
`Content-Signal: ai-train=no, search=yes, ai-input=yes`
See https://contentsignals.org/ for the full specification.---
Scoring for Crawler Access
The imported tier/point rubric below is an op
… (nội dung đầy đủ có trong gói tải về)
Skill liên quan
- senior-ml-engineer – Kỹ năng kỹ sư ML để đưa model vào production, xây dựng pipeline MLOps và tích hợp LLM…
- senior-pm – Senior Project Manager cho phần mềm doanh nghiệp, SaaS và dự án chuyển đổi số. Chuyên…
- glasser – Tìm kiếm, kiểm tra và chạy các API dữ liệu bên thứ ba qua một CLI duy nhất khi môi…
- graphql – GraphQL cho client đúng dữ liệu họ cần — không hơn, không kém. Một endpoint, schema có…
- hasdata – Dùng HasData API để thu thập dữ liệu web (web scraping) và trích xuất dữ liệu web có cấu…
- hugging-face-dataset-viewer – Hugging Face Dataset Viewer
- hugging-face-datasets – Tạo và quản lý dataset trên Hugging Face Hub. Hỗ trợ khởi tạo repo, định nghĩa…
- hugging-face-paper-publisher – Xuất bản và quản lý bài nghiên cứu trên Hugging Face Hub. Hỗ trợ tạo trang paper, liên…