# AI Bot Management & GEO Optimization Checklist 2026
> **Dành cho:** Dev Việt Nam | **Cập nhật:** 2026 | **Thời gian setup:** ~4-6 giờ

---

## MỤC LỤC
- [Phần 1: Audit Bot Traffic](#phần-1-audit-bot-traffic-trong-server-log)
- [Phần 2: robots.txt Setup](#phần-2-robotstxt-setup)
- [Phần 3: Server-Level Blocking](#phần-3-server-level-blocking)
- [Phần 4: GEO Optimization](#phần-4-geo-optimization)
- [Phần 5: Monthly Review](#phần-5-monthly-review-checklist)

---

## PHẦN 1: AUDIT BOT TRAFFIC TRONG SERVER LOG

### 1.1 — Chuẩn bị môi trường audit

- [ ] **Xác định vị trí log file** trên server của bạn
  ```bash
  # Nginx
  /var/log/nginx/access.log
  /var/log/nginx/access.log.1  # log ngày hôm qua

  # Apache
  /var/log/apache2/access.log
  /var/log/httpd/access_log

  # Nếu dùng hosting panel (cPanel/DirectAdmin)
  ~/logs/domainname.com-access_log
  ```

- [ ] **Cài công cụ phân tích log** nếu chưa có
  ```bash
  # GoAccess - realtime log analyzer (khuyên dùng)
  sudo apt install goaccess

  # Hoặc dùng awk/grep thuần (không cần cài thêm)
  # Hoặc import vào Grafana/Loki nếu có infrastructure
  ```

- [ ] **Backup log trước khi làm** — tránh mất dữ liệu khi rotate
  ```bash
  cp /var/log/nginx/access.log ~/audit/access_$(date +%Y%m%d).log
  ```

---

### 1.2 — Danh sách User-Agent cần check

#### 🤖 AI Training Bots (thường crawl nhiều, không mang traffic)

- [ ] **GPTBot** — OpenAI training crawler
  ```bash
  grep -i "GPTBot" /var/log/nginx/access.log | wc -l
  # User-Agent: Mozilla/5.0 AppleWebKit/537.36 ... GPTBot/1.0
  ```

- [ ] **ChatGPT-User** — ChatGPT browsing plugin
  ```bash
  grep -i "ChatGPT-User" /var/log/nginx/access.log | wc -l
  # Khác GPTBot: đây là user đang dùng ChatGPT browse web thật
  ```

- [ ] **OAI-SearchBot** — OpenAI search index bot (mới 2025)
  ```bash
  grep -i "OAI-SearchBot" /var/log/nginx/access.log | wc -l
  ```

- [ ] **ClaudeBot** — Anthropic training crawler
  ```bash
  grep -i "ClaudeBot\|Claude-Web\|anthropic-ai" /var/log/nginx/access.log | wc -l
  ```

- [ ] **Claude-SearchBot** — Anthropic search bot (2025+)
  ```bash
  grep -i "Claude-SearchBot" /var/log/nginx/access.log | wc -l
  ```

- [ ] **PerplexityBot** — Perplexity AI crawler
  ```bash
  grep -i "PerplexityBot\|Perplexity" /var/log/nginx/access.log | wc -l
  ```

- [ ] **Applebot-Extended** — Apple AI/Siri training
  ```bash
  grep -i "Applebot-Extended\|Applebot" /var/log/nginx/access.log | wc -l
  ```

- [ ] **Bytespider** — TikTok/ByteDance crawler (crawl rất nhiều)
  ```bash
  grep -i "Bytespider\|ByteDance" /var/log/nginx/access.log | wc -l
  # ⚠️ Bot này nổi tiếng crawl aggressive, thường cần block
  ```

- [ ] **PetalBot** — Huawei search bot
  ```bash
  grep -i "PetalBot" /var/log/nginx/access.log | wc -l
  ```

- [ ] **Diffbot** — Data extraction AI
  ```bash
  grep -i "Diffbot" /var/log/nginx/access.log | wc -l
  ```

- [ ] **CCBot** — Common Crawl (train nhiều LLM, không mang traffic)
  ```bash
  grep -i "CCBot" /var/log/nginx/access.log | wc -l
  ```

- [ ] **DataForSeoBot** — SEO data harvester
  ```bash
  grep -i "DataForSeo\|DataForSeoBot" /var/log/nginx/access.log | wc -l
  ```

#### 🔍 AI Search Bots (NÊN cho phép — mang traffic từ AI search)

- [ ] **PerplexityBot** — Cần phân biệt: cho phép index, có thể limit rate
  ```bash
  # Check tần suất crawl (requests/hour)
  grep "PerplexityBot" /var/log/nginx/access.log | \
    awk '{print $4}' | cut -d: -f1-3 | sort | uniq -c | sort -rn | head -20
  ```

- [ ] **YouBot** — You.com AI search crawler
  ```bash
  grep -i "YouBot\|you\.com" /var/log/nginx/access.log | wc -l
  ```

- [ ] **Googlebot** + **Google-Extended** — Phân biệt 2 loại này
  ```bash
  # Googlebot = Google Search (LUÔN cho phép)
  grep -i "Googlebot" /var/log/nginx/access.log | grep -v "Google-Extended" | wc -l

  # Google-Extended = Bard/Gemini training (có thể opt-out)
  grep -i "Google-Extended" /var/log/nginx/access.log | wc -l
  ```

---

### 1.3 — Lệnh audit tổng hợp

- [ ] **Chạy báo cáo tất cả AI bots trong 1 lệnh**
  ```bash
  #!/bin/bash
  # Lưu file: audit_bots.sh
  LOG="/var/log/nginx/access.log"

  echo "=== AI BOT AUDIT REPORT $(date) ==="
  echo ""

  declare -A bots=(
    ["GPTBot"]="GPTBot"
    ["ChatGPT-User"]="ChatGPT-User"
    ["OAI-SearchBot"]="OAI-SearchBot"
    ["ClaudeBot"]="ClaudeBot"
    ["PerplexityBot"]="PerplexityBot"
    ["Bytespider"]="Bytespider"
    ["Google-Extended"]="Google-Extended"
    ["CCBot"]="CCBot"
    ["Applebot"]="Applebot"
    ["YouBot"]="YouBot"
  )

  for name in "${!bots[@]}"; do
    count=$(grep -ic "${bots[$name]}" "$LOG" 2>/dev/null || echo 0)
    printf "%-20s: %s requests\n" "$name" "$count"
  done

  echo ""
  echo "=== TOP 20 USER AGENTS ==="
  grep -oP '"[^"]*"' "$LOG" | sort | uniq -c | sort -rn | head -20
  ```
  ```bash
  chmod +x audit_bots.sh && ./audit_bots.sh
  ```

- [ ] **Kiểm tra bandwidth bị tiêu thụ bởi bots**
  ```bash
  # Tổng bytes gửi cho GPTBot
  grep -i "GPTBot" /var/log/nginx/access.log | \
    awk '{sum += $10} END {print "GPTBot bandwidth: " sum/1024/1024 " MB"}'
  ```

- [ ] **Phát hiện bot crawl bất thường** (quá nhiều requests từ 1 IP)
  ```bash
  # Top IP requests kèm user-agent
  awk '{print $1, $12}' /var/log/nginx/access.log | \
    grep -i "bot\|crawl\|spider" | \
    sort | uniq -c | sort -rn | head -30
  ```

- [ ] **Export kết quả ra file** để so sánh tháng sau
  ```bash
  ./audit_bots.sh > ~/audit/bot_report_$(date +%Y%m).txt
  ```

---

## PHẦN 2: ROBOTS.TXT SETUP

### 2.1 — Nguyên tắc trước khi viết robots.txt

- [ ] **Hiểu rõ chiến lược** của bạn trước khi config:
  - `Muốn xuất hiện trong AI answers?` → Cho phép AI search bots index
  - `Có content premium/paywalled?` → Block training bots, cho phép search bots
  - `Chỉ muốn Google/Bing?` → Block tất cả AI bots
  - `Open source/public knowledge?` → Cho phép tất cả (tốt cho GEO)

- [ ] **Kiểm tra robots.txt hiện tại** của site
  ```bash
  curl -s https://yourdomain.com/robots.txt
  # Hoặc
  wget -qO- https://yourdomain.com/robots.txt
  ```

- [ ] **Validate robots.txt** sau khi viết xong
  - Dùng: https://www.google.com/webmasters/tools/robots-testing-tool
  - Hoặc: https://technicalseo.com/tools/robots-txt/

---

### 2.2 — Template robots.txt đầy đủ 2026

- [ ] **Copy template phù hợp** với strategy của bạn vào `/robots.txt`

```robotstxt
# ============================================================
# robots.txt — Cập nhật 2026
# Site: https://yourdomain.com
# Chiến lược: Cho phép AI search, block AI training thuần
# ============================================================

# -----------------------------------------------------------
# GOOGLE — Luôn cho phép (quan trọng nhất)
# -----------------------------------------------------------
User-agent: Googlebot
Allow: /
# Disallow các trang không cần index:
Disallow: /admin/
Disallow: /wp-admin/
Disallow: /api/private/
Disallow: /?s=          # Search results
Disallow: /cart/
Disallow: /checkout/
Disallow: /account/

# Google-Extended = Dùng để train Gemini/Bard
# Chọn 1 trong 2 option bên dưới:
# OPTION A: Cho phép (tốt cho GEO, xuất hiện trong Gemini)
User-agent: Google-Extended
Allow: /

# OPTION B: Block (nếu muốn bảo vệ content)
# User-agent: Google-Extended
# Disallow: /

# -----------------------------------------------------------
# BING / MICROSOFT
# -----------------------------------------------------------
User-agent: Bingbot
Allow: /
Disallow: /admin/
Disallow: /api/private/

# Copilot crawler (Microsoft AI)
User-agent: msnbot
Allow: /

User-agent: BingPreview
Allow: /

# -----------------------------------------------------------
# OPENAI BOTS — Phân biệt 2 loại
# -----------------------------------------------------------

# GPTBot = Training data crawler (KHÔNG mang traffic về)
# Khuyến nghị: Block nếu bạn không muốn content dùng để train GPT
User-agent: GPTBot
Disallow: /
# Nếu muốn cho phép một số trang:
# User-agent: GPTBot
# Allow: /blog/
# Allow: /docs/
# Disallow: /

# ChatGPT-User = User đang dùng ChatGPT browse web THẬT
# Khuyến nghị: LUÔN cho phép — đây là traffic thật từ người dùng ChatGPT
User-agent: ChatGPT-User
Allow: /

# OAI-SearchBot = OpenAI search index (2025+)
# Cho phép nếu muốn xuất hiện trong ChatGPT search
User-agent: OAI-SearchBot
Allow: /
Disallow: /admin/
Disallow: /api/

# -----------------------------------------------------------
# ANTHROPIC / CLAUDE BOTS
# -----------------------------------------------------------

# ClaudeBot = Training crawler
User-agent: ClaudeBot
Disallow: /

# anthropic-ai = Tên cũ hơn của ClaudeBot
User-agent: anthropic-ai
Disallow: /

# Claude-SearchBot = Search/answer bot (nếu Anthropic triển khai search)
User-agent: Claude-SearchBot
Allow: /
Disallow: /admin/

# -----------------------------------------------------------
# PERPLEXITY AI
# -----------------------------------------------------------

# PerplexityBot = Crawl để trả lời người dùng Perplexity
# Khuyến nghị: Cho phép — Perplexity đang phát triển mạnh, mang traffic tốt
User-agent: PerplexityBot
Allow: /
Disallow: /admin/
Disallow: /api/private/

# -----------------------------------------------------------
# APPLE / SIRI
# -----------------------------------------------------------

# Applebot = Apple Search (Safari suggestions, Spotlight)
User-agent: Applebot
Allow: /
Disallow: /admin/

# Applebot-Extended = Apple AI training (iOS 18+ features)
# Tương tự Google-Extended, chọn allow hoặc block
User-agent: Applebot-Extended
Disallow: /
# Hoặc Allow: / nếu muốn xuất hiện trong Apple Intelligence

# -----------------------------------------------------------
# BYTEDANCE / TIKTOK
# -----------------------------------------------------------

# Bytespider = ByteDance crawler (crawl RẤT nhiều, aggressive)
# Khuyến nghị: Block trừ khi bạn target thị trường TikTok
User-agent: Bytespider
Disallow: /

# -----------------------------------------------------------
# META / FACEBOOK
# -----------------------------------------------------------

# FacebookBot = Facebook link preview
User-agent: facebookexternalhit
Allow: /

# Meta-ExternalAgent = Meta AI training (2024+)
User-agent: Meta-ExternalAgent
Disallow: /

# Meta-ExternalFetcher = Meta product fetcher
User-agent: Meta-ExternalFetcher
Allow: /

# -----------------------------------------------------------
# AMAZON / ALEXA
# -----------------------------------------------------------
User-agent: Amazonbot
Disallow: /
# Amazon dùng để train Alexa AI, thường không mang traffic

# -----------------------------------------------------------
# COMMON CRAWL
# -----------------------------------------------------------
# CCBot = Common Crawl dataset — dùng train NHIỀU LLM khác nhau
# Crawl lớn nhất internet, không mang traffic về
User-agent: CCBot
Disallow: /

# -----------------------------------------------------------
# YÊU CẦU AI KHÁC
# -----------------------------------------------------------
User-agent: YouBot
Allow: /                    # You.com search bot — nên cho phép

User-agent: Diffbot
Disallow: /                 # Data extraction, không mang traffic

User-agent: DataForSeoBot
Disallow: /                 # SEO data harvesting tool

User-agent: PetalBot
Allow: /                    # Huawei search — tùy nhu cầu

User-agent: SemrushBot
Disallow: /                 # SEO tool crawler

User-agent: AhrefsBot
Disallow: /                 # SEO backlink tool

User-agent: DotBot
Disallow: /                 # Moz crawler

User-agent: MJ12bot
Disallow: /                 # Majestic SEO

# -----------------------------------------------------------
# BLOCK TẤT CẢ BOT KHÔNG NHẬN DIỆN ĐƯỢC
# Cẩn thận: Wildcard này có thể block bot hữu ích
# Chỉ dùng nếu bạn đã explicitly allow các bot quan trọng ở trên
# -----------------------------------------------------------
# User-agent: *
# Disallow: /admin/
# Disallow: /api/private/
# Disallow: /wp-admin/

# -----------------------------------------------------------
# DEFAULT RULE cho tất cả bot còn lại
# -----------------------------------------------------------
User-agent: *
Allow: /
Disallow: /admin/
Disallow: /wp-admin/
Disallow: /api/private/
Disallow: /cart/
Disallow: /checkout/
Disallow: /?s=
Disallow: /search?
Disallow: /*.json$          # API endpoints
Disallow: /feed/            # RSS feeds (optional)

# -----------------------------------------------------------
# CRAWL DELAY — Giảm tải server (một số bot tôn trọng điều này)
# -----------------------------------------------------------
# Crawl-delay: 10           # 10 giây giữa các requests
# ⚠️ Googlebot BỎ QUA crawl-delay, dùng GSC để điều chỉnh

# -----------------------------------------------------------
# SITEMAP — Quan trọng cho cả SEO và GEO
# -----------------------------------------------------------
Sitemap: https://yourdomain.com/sitemap.xml
Sitemap: https://yourdomain.com/sitemap_news.xml
Sitemap: https://yourdomain.com/sitemap_images.xml
```

---

### 2.3 — Kiểm tra sau khi deploy

- [ ] **Verify file được serve đúng**
  ```bash
  curl -I https://yourdomain.com/robots.txt
  # Phải trả về: HTTP/2 200
  # Content-Type: text/plain
  ```

- [ ] **Kiểm tra không có lỗi syntax**
  ```bash
  # Test specific bot
  curl -s https://yourdomain.com/robots.txt | grep -A5 "GPTBot"
  ```

- [ ] **Submit lại sitemap** trong Google Search Console sau khi thay đổi robots.txt

---

## PHẦN 3: SERVER-LEVEL BLOCKING

> **Tại sao cần block ở server level?** Robots.txt chỉ là "lời đề nghị" — bot xấu/aggressive bỏ qua hoàn toàn. Block ở Nginx/Cloudflare mới là thật sự block.

### 3.1 — Nginx Configuration

- [ ] **Tạo file config riêng** cho bot blocking (dễ maintain)
  ```bash
  sudo nano /etc/nginx/conf.d/block_bots.conf
  # Hoặc
  sudo nano /etc/nginx/snippets/block_bots.conf
  ```

- [ ] **Thêm Nginx map block** vào `nginx.conf` hoặc server block
  ```nginx
  # /etc/nginx/conf.d/block_bots.conf
  # ============================================================
  # AI BOT BLOCKING CONFIG — 2026
  # ============================================================

  # Tạo map: user-agent → biến $block_bot
  # 0 = cho phép, 1 = block
  map $http_user_agent $block_bot {
      default                 0;  # Cho phép tất cả mặc định

      # === TRAINING BOTS — Block ===
      "~*GPTBot"              1;  # OpenAI training
      "~*CCBot"               1;  # Common Crawl
      "~*Bytespider"          1;  # ByteDance
      "~*anthropic-ai"        1;  # Anthropic cũ
      "~*ClaudeBot"           1;  # Anthropic training
      "~*Meta-ExternalAgent"  1;  # Meta AI training
      "~*Amazonbot"           1;  # Amazon Alexa training
      "~*Diffbot"             1;  # Data extraction
      "~*DataForSeoBot"       1;  # SEO harvesting
      "~*MJ12bot"             1;  # Majestic
      "~*DotBot"              1;  # Moz
      "~*SemrushBot"          0;  # Đổi thành 1 nếu muốn block SEMrush
      "~*AhrefsBot"           0;  # Đổi thành 1 nếu muốn block Ahrefs

      # === EMPTY USER AGENT — Suspicious ===
      ""                      1;  # Block request không có UA

      # === KNOWN MALICIOUS PATTERNS ===
      "~*python-requests"     1;  # Script scraping thô
      "~*Go-http-client"      0;  # Cẩn thận: một số service hợp lệ dùng cái này
      "~*libwww-perl"         1;  # Perl scraper cũ
      "~*scrapy"              1;  # Python scraping framework
      "~*curl"                0;  # Cẩn thận: developers dùng curl nhiều
  }

  # Map riêng cho AI search bots (rate limiting)
  map $http_user_agent $ai_search_bot {
      default         0;
      "~*PerplexityBot"       1;
      "~*OAI-SearchBot"       1;
      "~*ChatGPT-User"        1;
      "~*YouBot"              1;
  }
  ```

- [ ] **Áp dụng block trong server block**
  ```nginx
  # Trong file /etc/nginx/sites-available/yourdomain.conf

  server {
      listen 80;
      listen 443 ssl;
      server_name yourdomain.com www.yourdomain.com;

      # Include bot config
      include /etc/nginx/snippets/block_bots.conf;

      # === APPLY BLOCK ===
      if ($block_bot) {
          return 403;
          # Hoặc return 404; để không lộ bạn đang block
          # Hoặc return 429; (Too Many Requests) để ít suspicious hơn
      }

      # === RATE LIMITING cho AI search bots ===
      # Tạo zone rate limit (đặt trong http block của nginx.conf)
      # limit_req_zone $binary_remote_addr zone=ai_bots:10m rate=10r/m;

      # Áp dụng rate limit
      # if ($ai_search_bot) {
      #     limit_req zone=ai_bots burst=5 nodelay;
      # }

      # ... rest of your config
  }
  ```

- [ ] **Thêm rate limiting zone** vào `http {}` block trong `nginx.conf`
  ```nginx
  # /etc/nginx/nginx.conf — trong http {} block

  http {
      # Rate limit zones
      limit_req_zone $binary_remote_addr zone=general:10m rate=100r/s;
      limit_req_zone $binary_remote_addr zone=ai_bots:10m rate=10r/m;
      limit_req_zone $binary_remote_addr zone=crawlers:10m rate=1r/s;

      # ... existing config
  }
  ```

- [ ] **Block theo IP range** của các AI company (nâng cao)
  ```nginx
  # /etc/nginx/conf.d/block_ai_ips.conf
  # ⚠️ IP ranges thay đổi thường xuyên, cần update định kỳ

  geo $block_ai_ip {
      default         0;
      # OpenAI IP ranges (verify tại: https://openai.com/gptbot)
      # 23.98.142.176/28   1;  # Ví dụ — verify trước khi dùng

      # Cách tốt hơn: Dùng ipset hoặc Cloudflare WAF
  }
  ```

- [ ] **Log bot traffic riêng** để audit dễ hơn
  ```nginx
  # Tạo format log riêng cho bots
  log_format bot_log '$time_local | $remote_addr | '
                     '$status | "$http_user_agent" | '
                     '"$request" | $body_bytes_sent';

  # Trong server block:
  access_log /var/log/nginx/bots.log bot_log if=$block_bot;
  ```

- [ ] **Test và reload Nginx**
  ```bash
  sudo nginx -t          # Test syntax
  sudo nginx -s reload   # Reload không downtime
  # Hoặc:
  sudo systemctl reload nginx
  ```

---

### 3.2 — Apache Configuration (nếu dùng Apache)

- [ ] **Thêm vào `.htaccess`** hoặc VirtualHost config
  ```apache
  # /var/www/yourdomain/.htaccess
  # Hoặc trong <VirtualHost> block

  RewriteEngine On

  # Block AI Training Bots
  RewriteCond %{HTTP_USER_AGENT} GPTBot [NC,OR]
  RewriteCond %{HTTP_USER_AGENT} CCBot [NC,OR]
  RewriteCond %{HTTP_USER_AGENT} Bytespider [NC,OR]
  RewriteCond %{HTTP_USER_AGENT} ClaudeBot [NC,OR]
  RewriteCond %{HTTP_USER_AGENT} anthropic-ai [NC,OR]
  RewriteCond %{HTTP_USER_AGENT} Meta-ExternalAgent [NC,OR]
  RewriteCond %{HTTP_USER_AGENT} Amazonbot [NC,OR]
  RewriteCond %{HTTP_USER_AGENT} Diffbot [NC]
  RewriteRule .* - [F,L]
  # [F] = 403 Forbidden, [L] = Last rule
  ```

---

### 3.3 — Cloudflare Dashboard Setup

- [ ] **Vào Cloudflare Dashboard** → Chọn domain → **Security** → **WAF**

- [ ] **Tạo WAF Custom Rule #1: Block Training Bots**
  ```
  Rule Name: Block AI Training Bots
  
  Expression (click "Edit expression"):
  (http.user_agent contains "GPTBot") or
  (http.user_agent contains "CCBot") or
  (http.user_agent contains "Bytespider") or
  (http.user_agent contains "ClaudeBot") or
  (http.user_agent contains "anthropic-ai") or
  (http.user_agent contains "Meta-ExternalAgent") or
  (http.user_agent contains "Amazonbot") or
  (http.user_agent contains "Diffbot") or
  (http.user_agent contains "DataForSeoBot")
  
  Action: Block
  ```

- [ ] **Tạo WAF Custom Rule #2: Rate Limit AI Search Bots**
  ```
  Rule Name: Rate Limit AI Search Bots
  
  Expression:
  (http.user_agent contains "PerplexityBot") or
  (http.user_agent contains "OAI-SearchBot") or
  (http.user_agent contains "YouBot")
  
  Action: Rate Limit
  Requests: 100 requests per 10 minutes
  ```

- [ ] **Cấu hình Bot Fight Mode** (Security → Bots)
  - [ ] Bật **Bot Fight Mode** (free plan)
  - [ ] Hoặc bật **Super Bot Fight Mode** (Pro plan trở lên)
  - [ ] Check **Verified Bots** — đảm bảo Googlebot, Bingbot trong whitelist

- [ ] **Tạo Firewall Rule cho empty User-Agent**
  ```
  Rule Name: Block Empty User Agent
  
  Expression:
  (not http.user_agent exists) or (http.user_agent eq "")
  
  Action: Block
  ```

- [ ] **Thiết lập Page Rule** cho các path nhạy cảm
  ```
  URL Pattern: yourdomain.com/api/*
  Setting: Security Level = High
  
  URL Pattern: yourdomain.com/admin/*  
  Setting: Security Level = I'm Under Attack
  ```

- [ ] **Bật Cloudflare Analytics** để theo dõi bot traffic
  - Analytics → Traffic → Bots
  - Check "Verified Bot" vs "Likely Automated"

- [ ] **Export Cloudflare Firewall Log** định kỳ
  ```bash
  # Via Cloudflare API
  curl -X GET "https://api.cloudflare.com/client/v4/zones/{zone_id}/firewall/events" \
    -H "Authorization: Bearer {api_token}" \
    -H "Content-Type: application/json" \
    | jq '.result[] | select(.action=="block") | {timestamp, clientIP: .clientIP, userAgent: .clientRequestHTTPHost}'
  ```

---

### 3.4 — Verify Blocking hoạt động

- [ ] **Test với curl** giả lập bot request
  ```bash
  # Test block GPTBot
  curl -A "Mozilla/5.0 (compatible; GPTBot/1.0; +https://openai.com/gptbot)" \
    https://yourdomain.com -I
  # Phải trả về: HTTP/2 403

  # Test không block Googlebot  
  curl -A "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)" \
    https://yourdomain.com -I
  # Phải trả về: HTTP/2 200

  # Test ChatGPT-User (nên được phép)
  curl -A "Mozilla/5.0 AppleWebKit/537.36 ChatGPT-User/1.0" \
    https://yourdomain.com -I
  # Phải trả về: HTTP/2 200
  ```

- [ ] **Xác nhận Googlebot vẫn được crawl** trong Google Search Console
  - GSC → Settings → Crawl Stats → kiểm tra không giảm đột ngột

---

## PHẦN 4: GEO OPTIMIZATION

> **GEO = Generative Engine Optimization** — Tối ưu để xuất hiện trong câu trả lời của AI (ChatGPT, Perplexity, Claude, Gemini...)

### 4.1 — LLMs.txt Setup

> `LLMs.txt` là file mới (proposed standard 2024) giúp LLM hiểu website của bạn. Tương tự `robots.txt` nhưng dành cho AI.

- [ ] **Tạo file `/llms.txt`** ở root domain
  ```bash
  sudo nano /var/www/yourdomain/public/llms.txt
  # Hoặc tương đương trong framework của bạn
  ```

- [ ] **Copy template LLMs.txt** bên dưới và điều chỉnh

```markdown
# LLMs.txt — yourdomain.com
# Cập nhật: 2026-01-01
# Tham khảo spec: https://llmstxt.org

# ============================================================
# THÔNG TIN CƠ BẢN VỀ WEBSITE
# ============================================================

# Tên website/tổ chức
> yourdomain.com là [mô tả ngắn gọn, rõ ràng về site của bạn]
> Ví dụ: "nền tảng hướng dẫn lập trình Python cho developer Việt Nam"

# Mục đích chính
> Chúng tôi cung cấp [giá trị chính bạn mang lại cho người dùng]

# Ngôn ngữ nội dung
> Ngôn ngữ chính: Tiếng Việt (vi-VN)
> Ngôn ngữ phụ: Tiếng Anh (en-US)

# Đối tượng độc giả
> Developer Việt Nam, level từ beginner đến senior

# ============================================================
# NỘI DUNG QUAN TRỌNG NHẤT (Ưu tiên cho AI đọc)
# ============================================================

## Trang chủ
- [Trang chủ](https://yourdomain.com/)
  Tổng quan về [tên site], các chủ đề chính, và cách điều hướng

## Tài liệu / Documentation
- [Hướng dẫn bắt đầu](https://yourdomain.com/docs/getting-started)
  Hướng dẫn setup môi trường và bước đầu tiên
- [API Reference](https://yourdomain.com/docs/api)
  Tài liệu đầy đủ về API endpoints, parameters, và examples
- [FAQ](https://yourdomain.com/faq)
  Câu hỏi thường gặp và giải đáp

## Bài viết nổi bật
- [Tiêu đề bài 1](https://yourdomain.com/blog/bai-viet-1)
  Mô tả ngắn 1-2 câu về nội dung
- [Tiêu đề bài 2](https://yourdomain.com/blog/bai-viet-2)
  Mô tả ngắn 1-2 câu về nội dung
- [Tiêu đề bài 3](https://yourdomain.com/blog/bai-viet-3)
  Mô tả ngắn 1-2 câu về nội dung

## Chủ đề chính (Topics)
- [Python](https://yourdomain.com/topics/python)
- [JavaScript](https://yourdomain.com/topics/javascript)
- [DevOps](https://yourdomain.com/topics/devops)
# Thêm topics của bạn vào đây

# ============================================================
# THÔNG TIN TÁC GIẢ VÀ UY TÍN
# ============================================================

## Tác giả chính
- [Tên tác giả](https://yourdomain.com/about/author)
  Chuyên gia [lĩnh vực], [X] năm kinh nghiệm, [credentials]

## About page
- [Về chúng tôi](https://yourdomain.com/about)
  Thông tin về team, mission, và lý do tạo ra website này

## Liên hệ
- Email: contact@yourdomain.com
- LinkedIn: https://linkedin.com/company/yourcompany

# ============================================================
# HƯỚNG DẪN SỬ DỤNG NỘI DUNG CHO AI
# ============================================================

## Được phép
> AI có thể trích dẫn và tóm tắt nội dung từ website này
> để trả lời câu hỏi của người dùng, với điều kiện ghi nguồn

## Không được phép
> Không sử dụng toàn bộ bài viết mà không ghi nguồn
> Không sử dụng nội dung cho commercial training data

## Yêu cầu ghi nguồn
> Khi trích dẫn, vui lòng ghi: "Nguồn: yourdomain.com"
> hoặc link trực tiếp đến trang gốc

# ============================================================
# CẬP NHẬT NỘI DUNG
# ============================================================

## Tần suất cập nhật
> Blog: 2-4 bài/tuần
> Documentation: Cập nhật khi có thay đổi
> Lần cập nhật llms.txt gần nhất: 2026-01-01

## RSS Feed
> https://yourdomain.com/feed.xml

## Sitemap
> https://yourdomain.com/sitemap.xml

# ============================================================
# OPTIONAL: NỘI DUNG ĐẦY ĐỦ CHO AI (llms-full.txt)
# ============================================================
# Nếu bạn có file llms-full.txt với nội dung chi tiết hơn:
> Full content: https://yourdomain.com/llms-full.txt
```

- [ ] **Tạo thêm `/llms-full.txt`** (optional nhưng tốt cho GEO)
  ```bash
  # llms-full.txt chứa nội dung chi tiết hơn, full text của các trang quan trọng
  # Giúp AI có context đầy đủ hơn khi trả lời về site của bạn
  sudo nano /var/www/yourdomain/public/llms-full.txt
  ```

- [ ] **Verify file accessible**
  ```bash
  curl -I https://yourdomain.com/llms.txt
  # Expected: 200 OK, Content-Type: text/plain
  ```

- [ ] **Đảm bảo llms.txt được allow** trong robots.txt
  ```robotstxt
  # Trong robots.txt — đảm bảo không bị block
  User-agent: *
  Allow: /llms.txt
  Allow: /llms-full.txt
  ```

---

### 4.2 — Structured Data JSON-LD Tips

> Structured data giúp AI hiểu đúng context và entity của bạn. Đây là yếu tố quan trọng nhất cho GEO sau content quality.

#### Organization Schema

- [ ] **Thêm Organization schema** vào `<head>` của trang chủ
  ```html
  <!-- Paste vào <head> của trang chủ (index.html hoặc layout file) -->
  <script type="application/ld+json">
  {
    "@context": "https://schema.org",
    "@type": "Organization",
    "@id": "https://yourdomain.com/#organization",
    "name": "Tên công ty/site của bạn",
    "alternateName": ["Tên viết tắt", "Tên khác nếu có"],
    "url": "https://yourdomain.com",
    "logo": {
      "@type": "ImageObject",
      "url": "https://yourdomain.com/logo.png",
      "width": 300,
      "height": 60
    },
    "description": "Mô tả chi tiết về tổ chức/website của bạn (2-3 câu)",
    "foundingDate": "2020",
    "founder": {
      "@type": "Person",
      "name": "Tên người sáng lập"
    },
    "address": {
      "@type": "PostalAddress",
      "addressCountry": "VN",
      "addressLocality": "Hà Nội"
    },
    "contactPoint": {
      "@type": "ContactPoint",
      "email": "contact@yourdomain.com",
      "contactType": "customer service",
      "availableLanguage": ["Vietnamese", "English"]
    },
    "sameAs": [
      "https://twitter.com/yourhandle",
      "https://linkedin.com/company/yourcompany",
      "https://github.com/yourorg",
      "https://facebook.com/yourpage"
    ],
    "knowsAbout": [
      "Lập trình Python",
      "Web Development",
      "DevOps",
      "Công nghệ thông tin"
    ]
  }
  </script>
  ```

#### WebSite Schema với SearchAction

- [ ] **Thêm WebSite schema** (giúp AI hiểu site structure)
  ```html
  <script type="application/ld+json">
  {
    "@context": "https://schema.org",
    "@type": "WebSite",
    "@id": "https://yourdomain.com/#website",
    "url": "https://yourdomain.com",
    "name": "Tên Website",
    "description": "Mô tả website",
    "publisher": {
      "@id": "https://yourdomain.com/#organization"
    },
    "inLanguage": "vi-VN",
    "potentialAction": {
      "@type": "SearchAction",
      "target": {
        "@type": "EntryPoint",
        "urlTemplate": "https://yourdomain.com/search?q={search_term_string}"
      },
      "query-input": "required name=search_term_string"
    }
  }
  </script>
  ```

#### Article/BlogPosting Schema

- [ ] **Thêm Article schema** vào mỗi bài viết
  ```html
  <!-- Template cho mỗi blog post — thay đổi giá trị động qua CMS/template -->
  <script type="application/ld+json">
  {
    "@context": "https://schema.org",
    "@type": "TechArticle",
    "@id": "https://yourdomain.com/blog/tieu-de-bai-viet#article",
    "headline": "Tiêu đề bài viết đầy đủ (max 110 ký tự)",
    "description": "Mô tả bài viết 2-3 câu, súc tích, đúng trọng tâm",
    "image": {
      "@type": "ImageObject",
      "url": "https://yourdomain.com/images/bai-viet-og.jpg",
      "width": 1200,
      "height": 630
    },
    "author": {
      "@type": "Person",
      "@id": "https://yourdomain.com/authors/ten-tac-gia#person",
      "name": "Tên Tác Giả",
      "url": "https://yourdomain.com/authors/ten-tac-gia",
      "sameAs": [
        "https://linkedin.com/in/tenketnoilinkedin",
        "https://github.com/githubusername"
      ],
      "jobTitle": "Senior Developer",
      "knowsAbout": ["Python", "Django", "Machine Learning"]
    },
    "publisher": {
      "@id": "https://yourdomain.com/#organization"
    },
    "datePublished": "2026-01-15T08:00:00+07:00",
    "dateModified": "2026-01-20T10:30:00+07:00",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://yourdomain.com/blog/tieu-de-bai-viet"
    },
    "inLanguage": "vi-VN",
    "articleSection": "Tutorial",
    "keywords": ["từ khóa 1", "từ khóa 2", "từ khóa 3"],
    "wordCount": 2500,
    "proficiencyLevel": "Intermediate",
    "dependencies": "Python 3.10+, pip",
    "articleBody": "Đoạn đầu tiên của bài viết... (optional nhưng tốt cho AI)"
  }
  </script>
  ```

#### FAQ Schema

- [ ] **Thêm FAQ schema** cho trang FAQ hoặc bài viết có Q&A
  ```html
  <script type="application/ld+json">
  {
    "@context": "https://schema.org",
    "@type": "FAQPage",
    "mainEntity": [
      {
        "@type": "Question",
        "name": "Câu hỏi đầy đủ, rõ ràng, tự nhiên?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Câu trả lời chi tiết, đầy đủ thông tin. Không truncate. AI thường lấy trực tiếp text này."
        }
      },
      {
        "@type": "Question",
        "name": "Câu hỏi thứ 2?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Câu trả lời thứ 2..."
        }
      }
    ]
  }
  </script>
  ```

#### HowTo Schema (quan trọng cho tutorial sites)

- [ ] **Thêm HowTo schema** cho bài viết dạng hướng dẫn
  ```html
  <script type="application/ld+json">
  {
    "@context": "https://schema.org",
    "@type": "HowTo",
    "name": "Cách làm [gì đó] bằng [công cụ gì]",
    "description": "Hướng dẫn từng bước để...",
    "image": "https://yourdomain.com/images/howto-thumbnail.jpg",
    "totalTime": "PT30M",
    "estimatedCost": {
      "@type": "MonetaryAmount",
      "currency": "VND",
      "value": "0"
    },
    "tool": [
      {
        "@type": "HowToTool",
        "name": "Python 3.10"
      },
      {
        "@type": "HowToTool",
        "name": "VS Code"
      }
    ],
    "step": [
      {
        "@type": "HowToStep",
        "name": "Bước 1: Cài đặt môi trường",
        "text": "Mô tả chi tiết bước 1...",
        "image": "https://yourdomain.com/images/step1.jpg",
        "url": "https://yourdomain.com/blog/howto#buoc-1"
      },
      {
        "@type": "HowToStep",
        "name": "Bước 2: Cấu hình",
        "text": "Mô tả chi tiết bước 2..."
      }
    ]
  }
  </script>
  ```

#### BreadcrumbList Schema

- [ ] **Thêm Breadcrumb schema** vào tất cả trang nội thất
  ```html
  <script type="application/ld+json">
  {
    "@context": "https://schema.org",
    "@type": "BreadcrumbList",
    "itemListElement": [
      {
        "@type": "ListItem",
        "position": 1,
        "name": "Trang chủ",
        "item": "https://yourdomain.com"
      },
      {
        "@type": "ListItem",
        "position": 2,
        "name": "Blog",
        "item": "https://yourdomain.com/blog"
      },
      {
        "@type": "ListItem",
        "position": 3,
        "name": "Tiêu đề bài viết hiện tại",
        "item": "https://yourdomain.com/blog/tieu-de-hien-tai"
      }
    ]
  }
  </script>
  ```

---

### 4.3 — Content Optimization cho AI Citation

- [ ] **Thêm "Definitive Answer Block"** vào đầu mỗi bài viết
  ```markdown
  <!-- Pattern: AI thường lấy đoạn đầu nếu nó trả lời trực tiếp câu hỏi -->
  
  **[Chủ đề] là gì?** [Câu trả lời trực tiếp, 1-2 câu, không vòng vo]
  
  Ví dụ:
  "Docker là nền tảng containerization cho phép đóng gói ứng dụng 
  cùng dependencies vào container portable, chạy nhất quán trên 
  mọi môi trường từ development đến production."
  ```

- [ ] **Sử dụng heading structure rõ ràng**
  ```
  H1: Tiêu đề chính (chứa keyword chính)
  H2: Các khía cạnh chính (câu hỏi dạng "Cách...", "Tại sao...", "Khi nào...")
  H3: Chi tiết từng phần
  ```

- [ ] **Thêm Author Bio với credentials** — tăng E-E-A-T signal
  ```html
  <!-- Schema Person cho author page -->
  <script type="application/ld+json">
  {
    "@context": "https://schema.org",
    "@type": "Person",
    "@id": "https://yourdomain.com/authors/ten-tac-gia#person",
    "name": "Nguyễn Văn A",
    "jobTitle": "Senior Software Engineer",
    "worksFor": {
      "@type": "Organization",
      "name": "Tên công ty"
    },
    "alumniOf": "Đại học Bách Khoa Hà Nội",
    "award": ["Google Developer Expert", "Microsoft MVP"],
    "knowsAbout": ["Python", "Machine Learning", "Cloud Architecture"],
    "url": "https://yourdomain.com/authors/ten-tac-gia",
    "sameAs": [
      "https://linkedin.com/in/nguyenvana",
      "https://github.com/nguyenvana",
      "https://twitter.com/nguyenvana"
    ]
  }
  </script>
  ```

- [ ] **Thêm dateModified và đảm bảo content fresh** — AI ưu tiên content gần đây
  ```html
  <!-- Trong <head> -->
  <meta property="article:published_time" content="2026-01-15T08:00:00+07:00" />
  <meta property="article:modified_time" content="2026-01-20T10:30:00+07:00" />
  ```

- [ ] **Tạo Glossary/Definition pages** cho các thuật ngữ trong domain của bạn
  ```html
  <!-- DefinedTerm schema -->
  <script type="application/ld+json">
  {
    "@context": "https://schema.org",
    "@type": "DefinedTerm",
    "@id": "https://yourdomain.com/glossary/docker#term",
    "name": "Docker",
    "description": "Định nghĩa đầy đủ, chính xác của thuật ngữ...",
    "inDefinedTermSet": {
      "@type": "DefinedTermSet",
      "name": "Thuật ngữ DevOps",
      "url": "https://yourdomain.com/glossary"
    }
  }
  </script>
  ```

- [ ] **Validate tất cả structured data**
  ```bash
  # Google Rich Results Test
  # https://search.google.com/test/rich-results
  
  # Schema.org Validator
  # https://validator.schema.org/
  
  # Command line với curl:
  curl -s -X POST "https://validator.schema.org/validate" \
    -H "Content-Type: application/json" \
    -d '{"url": "https://yourdomain.com/blog/bai-viet"}'
  ```

---

## PHẦN 5: MONTHLY REVIEW CHECKLIST

> Chạy checklist này vào **đầu mỗi tháng** — khoảng 1-2 giờ

### 5.1 — Bot Traffic Review (Tuần 1 mỗi tháng)

- [ ] **Chạy lại audit script** và so sánh với tháng trước
  ```bash
  ./audit_bots.sh > ~/audit/bot_report_$(date +%Y%m).txt
  diff ~/audit/bot_report_$(date -d "last month" +%Y%m).txt \
       ~/audit/bot_report_$(date +%Y%m).txt
  ```

- [ ] **Check bandwidth consumed bởi bots** — so sánh tháng trước
  ```bash
  # Tổng bandwidth cho tất cả bots
  grep -iE "GPTBot|CCBot|Bytespider|ClaudeBot|Diffbot" \
    /var/log/nginx/access.log | \
    awk '{sum += $10} END {print "Bot bandwidth: " sum/1024/1024 " MB"}'
  ```

- [ ] **Phát hiện bot mới** chưa có trong blocklist
  ```bash
  # Top user-agents lạ, nhiều requests nhất
  awk '{print $12}' /var/log/nginx/access.log | \
    tr -d '"' | sort | uniq -c | sort -rn | head -50 | \
    grep -iv "Mozilla\|Chrome\|Safari\|Firefox\|Edge\|Googlebot\|Bingbot"
  ```

- [ ] **Kiểm tra có bot bypass được** Nginx/Cloudflare block không
  ```bash
  # Nếu có log riêng cho blocked bots:
  tail -100 /var/log/nginx/bots.log

  # Check Cloudflare Firewall Log trong dashboard
  # Security → Events → Filter by Action: Block
  ```

- [ ] **Update blocklist** nếu có bot mới được phát hiện
  - [ ] Cập nhật `/etc/nginx/conf.d/block_bots.conf`
  - [ ] Cập nhật Cloudflare WAF rules
  - [ ] Cập nhật `robots.txt` nếu cần
  - [ ] Reload Nginx: `sudo nginx -s reload`

---

### 5.2 — robots.txt Review

- [ ] **Kiểm tra user-agents mới** từ thông báo của các AI company
  - [ ] Theo dõi: https://openai.com/gptbot
  - [ ] Theo dõi: https://www.anthropic.com/legal/aup
  - [ ] Theo dõi: https://darkvisitors.com (database AI bots)
  - [ ] Theo dõi: https://www.robotstxt.org/

- [ ] **Verify robots.txt còn serve đúng** sau mọi deployment
  ```bash
  curl -s https://yourdomain.com/robots.txt | head -30
  ```

- [ ] **Check GSC Coverage** — đảm bảo không vô tình block trang quan trọng
  - Google Search Console → Indexing → Pages → "Blocked by robots.txt"

- [ ] **Kiểm tra sitemap trong robots.txt** còn trỏ đúng URL

---

### 5.3 — Server Performance Review

- [ ] **Check server load do bot traffic** trong tháng qua
  ```bash
  # Xem requests/giờ theo ngày
  awk '{print $4}' /var/log/nginx/access.log | \
    cut -d: -f1-2 | sort | uniq -c | tail -30
  ```

- [ ] **Review Nginx rate limiting logs**
  ```bash
  grep "limiting requests" /var/log/nginx/error.log | wc -l
  grep "limiting requests" /var/log/nginx/error.log | tail -20
  ```

- [ ] **Kiểm tra 4xx/5xx errors** tăng đột biến (có thể do scraper)
  ```bash
  awk '{print $9}' /var/log/nginx/access.log | sort | uniq -c | sort -rn
  # 403 nhiều = blocklist đang hoạt động
  # 404 nhiều = có thể là scanner/scraper
  # 429 nhiều = rate limit đang hoạt động
  ```

- [ ] **Check CPU/Memory spike** trong logs server
  ```bash
  # Nếu dùng Netdata/Grafana: xem dashboard
  # Nếu không: check system log
  grep "high load\|OOM\|memory" /var/log/syslog | tail -20
  ```

---

### 5.4 — GEO Performance Review

- [ ] **Kiểm tra mentions trong AI answers** — test thủ công
  ```
  Vào ChatGPT, Perplexity, Claude, Gemini và hỏi:
  - "[Tên site của bạn] là gì?"
  - "Trang web nào hay về [chủ đề của bạn] bằng tiếng Việt?"
  - "Ai viết về [chủ đề cụ thể] ở Việt Nam?"
  
  Ghi lại kết quả vào file tracking
  ```

- [ ] **Check Perplexity citations** — Perplexity hiện danh sách nguồn
  ```
  Hỏi Perplexity về chủ đề của bạn → xem Sources có domain của bạn không
  Nếu không có → cần cải thiện content depth và structured data
  ```

- [ ] **Validate structured data** không bị broken sau updates
  ```bash
  # Chạy test cho top 10 trang quan trọng nhất
  for url in \
    "https://yourdomain.com/" \
    "https://yourdomain.com/blog/bai-viet-1" \
    "https://yourdomain.com/blog/bai-viet-2"; do
    
    echo "Testing: $url"
    curl -s "https://validator.schema.org/validate?url=${url}" \
      | python3 -m json.tool | grep -E "errors|warnings|status"
    echo "---"
  done
  ```

- [ ] **Cập nhật llms.txt** với bài viết mới trong tháng
  ```bash
  sudo nano /var/www/yourdomain/public/llms.txt
  # Thêm links bài viết mới vào section phù hợp
  # Cập nhật "Lần cập nhật gần nhất"
  ```

- [ ] **Check llms.txt accessible** từ các AI bots
  ```bash
  curl -A "PerplexityBot/1.0" https://yourdomain.com/llms.txt
  # Phải trả về 200, không phải 403
  ```

- [ ] **Review Google Search Console** cho AI-related queries
  - GSC → Search Results → Lọc queries liên quan đến AI
  - Check impressions cho brand queries

---

### 5.5 — Security Review

- [ ] **Scan logs tìm dấu hiệu attack mới**
  ```bash
  # SQL injection attempts
  grep -iE "union.*select|sleep\(|benchmark\(" /var/log/nginx/access.log | wc -l

  # Path traversal
  grep -i "\.\./\.\." /var/log/nginx/access.log | wc -l

  # Credential stuffing (POST /login nhiều)
  grep "POST.*login\|POST.*wp-login\|POST.*signin" \
    /var/log/nginx/access.log | \
    awk '{print $1}' | sort | uniq -c | sort -rn | head -10
  ```

- [ ] **Cập nhật Nginx lên version mới nhất**
  ```bash
  nginx -v
  # Compare với: http://nginx.org/en/CHANGES
  sudo apt update && apt list --upgradable | grep nginx
  ```

- [ ] **Rotate và archive log files cũ**
  ```bash
  # Nén log tháng trước
  gzip /var/log/nginx/access.log.1
  mv /var/log/nginx/access.log.1.gz ~/archive/nginx_$(date -d "last month" +%Y%m).gz
  ```

- [ ] **Backup config files** trước khi tháng mới bắt đầu
  ```bash
  tar -czf ~/backup/nginx_config_$(date +%Y%m).tar.gz \
    /etc/nginx/conf.d/ \
    /etc/nginx/sites-available/ \
    /var/www/yourdomain/public/robots.txt \
    /var/www/yourdomain/public/llms.txt
  ```

---

### 5.6 — Quick Reference Card (Bookmark lại)

```
🔗 TOOLS CẦN BOOKMARK:
├── Dark Visitors (AI bot database):  https://darkvisitors.com
├── Google Rich Results Test:          https://search.google.com/test/rich-results
├── Schema Validator:                  https://validator.schema.org
├── Robots.txt Tester:                 https://technicalseo.com/tools/robots-txt/
├── LLMs.txt Spec:                     https://llmstxt.org
├── OpenAI Bot Info:                   https://openai.com/gptbot
├── Anthropic Bot Info:                https://www.anthropic.com/legal/aup
└── Google Search Console:             https://search.google.com/search-console

📋 LỆNH NHANH HAY DÙNG:
├── Reload Nginx:        sudo nginx -s reload
├── Test Nginx config:   sudo nginx -t
├── Check blocked IPs:   sudo tail -f /var/log/nginx/bots.log
├── Bot bandwidth:       grep -i "GPTBot" /var/log/nginx/access.log | awk '{sum+=$10} END{print sum/1024/1024 "MB"}'
└── Live bot monitor:    tail -f /var/log/nginx/access.log | grep -i "bot\|crawl\|spider"

📁 FILE LOCATIONS:
├── robots.txt:    /var/www/yourdomain/public/robots.txt
├── llms.txt:      /var/www/yourdomain/public/llms.txt
├── Nginx bots:    /etc/nginx/conf.d/block_bots.conf
├── Access log:    /var/log/nginx/access.log
└── Audit reports: ~/audit/bot_report_YYYYMM.txt
```

---

> **📝 Ghi chú cuối:** Landscape AI bot thay đổi rất nhanh. Subscribe newsletter của [Dark Visitors](https://darkvisitors.com) và theo dõi announcements từ OpenAI, Anthropic, Google để cập nhật checklist này hàng quý. Phiên bản checklist tiếp theo nên review vào **Q3 2026**.