Tạo sitemap.xml API

Duyệt website từ trang chủ và tạo sitemap.xml: chỉ cùng tên miền, tuân thủ robots.txt, tôn trọng noindex và canonical, lastmod lấy từ header.

GETPOSThttps://apibox.io.vn/v1/sitemap-generate

API tạo sitemap duyệt website bắt đầu từ url bạn đưa vào, đi theo các liên kết cùng tên miền (sau lần chuyển hướng đầu tiên, nên http → https hay www đều được xử lý), mỗi lần sáu trang song song. API tuân thủ robots.txt (quy tắc cho APIBoxBot hoặc *), bỏ qua trang đánh dấu noindex (thẻ meta robots hoặc header X-Robots-Tag), không đi theo liên kết nofollow, và khi một trang khai báo canonical sang URL khác thì trang canonical được đưa vào thay thế. Ảnh, PDF, script và các loại file khác bị bỏ qua.

Điều chỉnh phạm vi bằng max_pages, max_depth (0–10, mặc định 5), path_prefix (chỉ lấy /blog/…), exclude (biểu thức chính quy), keep_query=true cho trang web phân biệt trang theo query string, và ignore_robots khi duyệt chính website của bạn. Mỗi URL có lastmod (theo header Last-Modified), changefreq tuỳ chọn và priority giảm dần theo độ sâu liên kết (priority=false để bỏ).

Kết quả JSON liệt kê các trang kèm tiêu đề và độ sâu, những gì bị bỏ qua và lý do, các sitemap khai báo trong robots.txt và chính nội dung XML; format=xml trả thẳng file sitemap.xml. Số trang mỗi lần gọi tuỳ gói (Free 50, Starter 200, Pro 500, công cụ online 20) và mỗi lần duyệt dừng sau khoảng 25 giây.

Tham số

TênVị tríKiểuBắt buộcMặc định
urlquery|bodystringcóURL bắt đầu (thường là trang chủ).
max_pagesquery|bodynumberkhôngSố trang tối đa (mặc định và tối đa: giới hạn của gói).
max_depthquery|bodynumberkhông5Độ sâu liên kết tính từ trang bắt đầu (0–10).
path_prefixquery|bodystringkhôngChỉ lấy URL có đường dẫn bắt đầu bằng chuỗi này, ví dụ /blog/.
excludequery|bodystringkhôngBiểu thức chính quy cho các URL cần loại bỏ.
keep_queryquery|bodybooleankhôngfalseGiữ query string (mặc định: bỏ đi).
ignore_robotsquery|bodybooleankhôngfalseBỏ qua robots.txt (dành cho website của bạn).
changefreqquery|bodystringkhôngalways, hourly, daily, weekly, monthly, yearly hoặc never.
priorityquery|bodybooleankhôngtrueThêm <priority> theo độ sâu.
formatquery|bodystringkhôngjsonjson hoặc xml (trả về file sitemap.xml).

Ví dụ

curl "https://apibox.io.vn/v1/sitemap-generate?url=https://www.sitemaps.org/&max_pages=10" \
  -H "Authorization: Bearer YOUR_API_KEY"

Kết quả trả về

{
  "url": "https://www.sitemaps.org/",
  "site": "https://www.sitemaps.org",
  "pages": 5,
  "complete": true,
  "limits": {
    "max_pages": 10,
    "max_depth": 5,
    "plan_cap": 500
  },
  "robots_txt": "respected",
  "sitemaps_in_robots": [
    "https://www.sitemaps.org/sitemap.xml"
  ],
  "skipped": {
    "robots": 0,
    "noindex": 0,
    "not_html": 2,
    "errors": 0,
    "canonical_elsewhere": 0,
    "redirected_away": 0
  },
  "queued_not_crawled": 0,
  "errors": [],
  "urls": [
    {
      "loc": "https://www.sitemaps.org/",
      "lastmod": "2021-09-23",
      "depth": 0,
      "title": "sitemaps.org - Home"
    },
    {
      "loc": "https://www.sitemaps.org/faq.html",
      "lastmod": "2021-07-08",
      "depth": 1,
      "title": "sitemaps.org - FAQ"
    },
    {
      "loc": "https://www.sitemaps.org/protocol.html",
      "lastmod": "2022-12-15",
      "depth": 1,
      "title": "sitemaps.org - Protocol"
    }
  ],
  "xml": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<urlset xmlns=\"http://www.sitemaps.org/schemas/sitemap/0.9\">\n  <url><loc>https://www.sitemaps.org/</loc><lastmod>2021-09-23</lastmod><priority>1.0</priority></url>\n  <url><loc>https://www.sitemaps.org/faq.html</loc><lastmod>2021-07-08</lastmod><priority>0.8</priority></url>\n  <url><loc>https://www.sitemaps.org/protocol.html</loc><lastmod>2022-12-15</lastmod><priority>0.8</priority></url>\n  …\n</urlset>\n"
}

Ứng dụng

  • Tạo sitemap.xml đầu tiên cho website không có plugin CMS
  • Kiểm tra trang nào máy tìm kiếm có thể truy cập
  • So sánh trang duyệt được với sitemap đã khai báo
  • Tìm trang bị ẩn do noindex hoặc canonical sai

Hỏi đáp

Vì sao thiếu một số trang?

Trang đó không được liên kết từ các trang đã duyệt, bị chặn bởi robots.txt, noindex hoặc canonical sang trang khác, hoặc đã chạm giới hạn số trang: xem skipped và stopped_by.

Có duyệt được website chỉ chạy bằng JavaScript không?

Không, liên kết được đọc từ HTML máy chủ trả về; trang chỉ hiển thị trên trình duyệt sẽ không được phát hiện.

Duyệt được bao nhiêu trang?

Tối đa 50 (Free), 200 (Starter) hoặc 500 (Pro) trang mỗi lần gọi, 20 trang trên công cụ online.

API liên quan

Bắt đầu với 1.000 request miễn phí mỗi tháng. Nhận API key miễn phí →