新网站上线第一周,Google收录了首页和内页加一起7个页面。同行网站同样一个月,收录了200多页。差距在哪?不是内容质量的问题——是你没给搜索引擎一张"地图"。sitemap就是这张地图,告诉Google、百度、Bing你的网站有哪些页面、哪些最重要、哪些刚更新过。没有它,搜索引擎只能靠链接关系慢慢爬,大型网站可能一半页面永远等不到蜘蛛。
先给结论:按你的网站类型,直接选对应的方案
WordPress网站
装Rank Math或Yoast SEO插件
零配置自动生成,内容发布即更新
500页以内的小网站
XML-Sitemaps.com 在线生成器
免费、3分钟出图、零技术门槛
500页以上的大型网站
Screaming Frog 桌面软件

不限页数(付费版)、顺带全站SEO体检
自建站/需要彻底自动化
Python脚本 或 动态生成程序
一次写好、永远自动、完全可控
一、sitemap到底是什么,为什么Google官方说"强烈建议"
sitemap(站点地图)是一个XML文件,列出了你网站上所有希望被搜索引擎收录的页面URL。它不是必选项——没有sitemap网站也能被收录——但它能大幅提升收录速度和覆盖率。
sitemap告诉搜索引擎的三件事
| 信息 | 标签 | 搜索引擎怎么用 |
| 这个页面最后什么时候更新的 | <lastmod> | Google会用这个值判断要不要重新抓取。准确设置能避免浪费抓取配额 |
| 这个页面多久更新一次 | <changefreq> | ⚠️ Google官方明确说会忽略这个标签,Bing也会忽略 |
| 这个页面在你网站里的相对重要性 | <priority> | ⚠️ Google官方明确说会忽略这个标签 |
看明白了吗?sitemap里真正有用的只有一个标签:lastmod(最后修改时间)。Google的官方文档写得清清楚楚:priority和changefreq都会被忽略。但很多生成工具默认会带上这两个字段,看着很专业,实际上对排名和收录没有任何帮助。唯一值得认真填的就是lastmod——而且要填真实值,不要全写成当天日期,那会让Google对你的网站失去信任。
硬性限制:单个sitemap文件不能超过50,000个URL或50MB(未压缩)。超过任意一个条件就必须拆分成多个文件,然后用一个sitemap索引文件(sitemap index)把它们串起来。绝大多数网站不需要操心这个限制——50,000个页面已经是大站了。
二、方案一:在线生成器——3分钟出图,500页以内最省事
如果你不想装任何软件、不想配插件、不想写代码,在线生成器是最直接的方案。输入网址,等几分钟,下载sitemap.xml,上传到网站根目录,搞定。
| 工具 | 免费页数上限 | 特色 | 一句话评价 |
| XML-Sitemaps.com | 500页 | 行业老牌、支持定时自动生成(付费) | 最成熟的在线方案,稳定可靠 |
| 测罗 celuo.com | 500页 | 中文界面、支持Googlebot/Baiduspider爬虫模拟 | 国内站长首选,中文体验最好 |
| jsjson.com | 无明确限制 | 支持逐页添加、批量导入URL、Sitemap Index | 手头有URL清单时最好用 |
| toolskit.cc | 不爬取,手动输入 | 输入URL列表生成标准sitemap.xml,100%本地处理 | 不想被爬取、手动提供URL时的选择 |
在线生成器操作流程(以XML-Sitemaps.com为例)
① 打开 xml-sitemaps.com,输入你的网站首页地址
② 点击Start,等待云端爬虫抓取(几十页的网站约1-3分钟)
③ 下载生成的 sitemap.xml 文件
④ 把文件上传到网站根目录(确保通过 https://你的域名/sitemap.xml 能直接访问)
⑤ 去 Google Search Console → 站点地图 → 输入 sitemap.xml → 提交
在线生成器的致命短板:网站内容更新后,sitemap不会自动更新。每次发布新文章、新页面,你必须重新去在线工具抓取一遍、下载、再上传覆盖旧文件。网站更新频繁的话,这个操作一周做几次就会崩溃。所以在线生成器只适合内容更新很少的企业展示站,不适合博客、新闻站、电商站。
三、方案二:WordPress插件——零配置,最省心
如果你用的是WordPress,sitemap生成这件事已经被人替你解决好了。装一个SEO插件,sitemap自动生成、自动更新、自动提交。
三大WordPress SEO插件的sitemap功能对比
| 功能 | Rank Math(免费版) | Yoast SEO(免费版) | WordPress原生(5.5+) |
| 自动生成XML sitemap | ✅ | ✅ | ✅(基础版) |
| 排除特定页面/文章类型 | ✅ 非常灵活 | ✅ | ❌ 不能自定义 |
| 分类型sitemap(文章/页面/分类) | ✅ | ✅ | ✅ |
| 图片sitemap | ✅ | ❌ 付费版才有 | ❌ |
| 视频sitemap | ✅ | ❌ 付费版才有 | ❌ |
| 新闻sitemap | ✅ | ❌ 付费版才有 | ❌ |
| 自动通知搜索引擎 | ✅ IndexNow | ❌ | ❌ |
一个很多人不知道的事:WordPress 5.5版本开始已经内置了基础的XML sitemap功能。访问 你的域名/wp-sitemap.xml 就能看到。但原生功能太基础了——不能自定义排除页面、不能控制每种内容类型是否纳入、没有图片和视频sitemap。所以大部分人还是会装一个SEO插件来接管sitemap。
推荐:如果你在Rank Math和Yoast之间纠结,免费版选Rank Math——图片sitemap、视频sitemap、IndexNow自动通知都是免费版自带,Yoast这些功能要付费。Yoast的优势是更稳定、更新没那么激进、出bug概率低。如果你已经有Yoast免费版在用,不需要为了sitemap功能专门切换。
四、方案三:Screaming Frog——大型网站的"全身体检+地图"
Screaming Frog SEO Spider是一个桌面软件,它做的事比在线生成器多得多:模拟搜索引擎爬虫把你的网站完整爬一遍,生成sitemap的同时,顺带查出所有404页面、重定向链、缺失的title/description、重复内容、加载慢的页面。等于做了一次完整的SEO技术审计。

Screaming Frog生成sitemap的标准流程(8步)
- 输入网站URL,点击Start爬取全站
- 爬取完成后,点击菜单栏 Sitemaps → XML Sitemap
- 选择要包含的页面(默认只包含状态码200的HTML页面,自动排除404/301/noindex页面)
- 在Internal选项卡中手动移除不想纳入的页面(如隐私政策、使用条款等低价值页面)
- 配置lastmod:选择使用服务器响应头中的Last-Modified日期,或设置统一日期
- 可选:勾选"include images"将图片纳入图片sitemap
- 可选:勾选"include hreflang"添加多语言标注
- 点击Next → 选择保存路径 → 生成完成
价格门槛:Screaming Frog免费版只能爬取500个URL。超过500页需要付费,年费约£199(约1800人民币)。如果你的网站超过500页且内容频繁更新,这笔钱值得花——它不仅生成sitemap,还是一次完整的SEO技术体检。
Screaming Frog生成sitemap时自动帮你做的检查
| 检查项 | 为什么重要 |
| 自动排除404页面 | 死链放进sitemap会被Google视为网站质量低 |
| 自动排除noindex页面 | noindex和sitemap冲突会让Google困惑 |
| 自动排除canonical到其他URL的页面 | 只提交规范URL,避免重复内容信号 |
| 自动排除分页页面(rel="prev/next") | 分页页面价值低,占用抓取配额 |
| 列出所有缺失title/description的页面 | 趁生成sitemap的机会顺手修掉 |
五、方案四:Python脚本——一次写好,永远自动
如果你的网站是自建的、或者内容更新极其频繁、或者你不想被任何工具的限制束缚——写一个Python脚本来生成sitemap是最一劳永逸的方案。
from datetime import datetime
# 假设从数据库查出了所有页面的URL和最后修改时间
pages = [
("https://example.com/", "2026-07-25"),
("https://example.com/about", "2026-07-20"),
("https://example.com/blog/post-1", "2026-07-27"),
]
urlset = ET.Element("urlset", xmlns="http://www.sitemaps.org/schemas/sitemap/0.9")
for url, lastmod in pages:
url_elem = ET.SubElement(urlset, "url")
ET.SubElement(url_elem, "loc").text = url
ET.SubElement(url_elem, "lastmod").text = lastmod
tree = ET.ElementTree(urlset)
ET.indent(tree, space=" ")
tree.write("sitemap.xml", xml_declaration=True, encoding="UTF-8")
from bs4 import BeautifulSoup
from urllib.parse import urljoin, urlparse
visited = set()
def crawl(url, domain, max_pages=500):
if url in visited or len(visited) >= max_pages:
return
try:
resp = requests.get(url, timeout=10)
if resp.status_code != 200 or "text/html" not in resp.headers.get("Content-Type", ""):
return
visited.add(url)
soup = BeautifulSoup(resp.text, "html.parser")
for a in soup.find_all("a", href=True):
link = urljoin(url, a["href"])
if urlparse(link).netloc == domain:
crawl(link, domain, max_pages)
except:
pass
# 从首页开始爬,只爬同域名下的链接
crawl("https://example.com", "example.com")
f.write('\n')
f.write('
for url in sorted(visited):
f.write(f'
f.write('\n')
print(f"生成了 {len(visited)} 个URL的sitemap.xml")
把这段脚本放到服务器上,设置一个cron定时任务每天跑一次,自动生成最新的sitemap.xml覆盖旧文件,从此再也不用管sitemap这件事。适合自建站、内容频繁更新的博客、电商站。
六、生成只是第一步,提交和验证才是关键
sitemap.xml生成好了,上传到网站根目录,然后呢?很多人停在这一步,以为搜索引擎会自动发现。确实可以通过robots.txt引导搜索引擎来抓,但主动提交能快很多。
| 搜索引擎 | 提交入口 | 要点 |
| Google Search Console → 站点地图 → 输入sitemap.xml地址 | 能看到抓取状态、错误数、已索引页面数,是最重要的sitemap数据面板 | |
| Bing | Bing Webmaster Tools → 站点地图 | 支持IndexNow协议,可以实现秒级通知 |
| 百度 | 百度搜索资源平台 → 站点管理 → 站点地图 | 需要先验证网站所有权,支持手动提交和自动推送两种方式 |
| 通用 | 在robots.txt中加一行 Sitemap: https://你的域名/sitemap.xml | 所有主流搜索引擎都支持从robots.txt发现sitemap |
提交后要盯的三个数据(Google Search Console里看)
① 已发现URL数 vs 已索引URL数:如果发现1000个页面但只索引了300个,说明网站质量有问题(内容太薄、重复、加载慢),Google不愿意花配额索引你的页面
② 错误数:如果sitemap里有404页面,Google会报错。Screaming Frog和好的插件会自动排除404,但在线生成器和手写的可能漏掉
③ 最后读取时间:如果Google最后一次读取你的sitemap是两周前,说明你的网站更新频率太低,Google降低了抓取优先级
七、按网站类型选方案:一张表说清楚
| 你的网站 | 推荐方案 | 花费 | 理由 |
| WordPress博客/企业站 | Rank Math 免费版 | 免费 | 零配置、自动更新、图片视频sitemap免费 |
| WordPress(已有Yoast) | Yoast SEO 免费版 | 免费 | 不需要为了sitemap换插件,免费版够用 |
| 少于500页的静态网站 | XML-Sitemaps.com | 免费 | 3分钟搞定,内容不常更新的话足够用了 |
| 500页以上大型网站 | Screaming Frog 付费版 | £199/年 | sitemap+全站SEO体检,一份钱两份活 |
| 自建站/内容频繁更新 | Python脚本 + cron定时任务 | 免费 | 一次写好永远自动,完全可控,支持任意复杂度 |
| Shopify/Wix/Squarespace | 平台自带sitemap | 免费 | 这些平台自动生成,访问/sitemap.xml就能看到 |
八、五个最常犯的错误,改掉能少走半年弯路
sitemap里塞了不该塞的页面
404页面、noindex页面、被robots.txt屏蔽的页面、canonical到其他URL的页面——这些放进sitemap会让搜索引擎困惑。Google的官方态度很明确:sitemap里只放你希望被索引的规范URL。Screaming Frog和好的SEO插件会自动过滤,但手动或在线生成的容易漏。
lastmod全部写当天日期
很多在线生成器默认把所有页面的lastmod设为当前日期。Google的爬虫不是傻子——它对比sitemap里的lastmod和实际页面的修改时间,发现大量不一致后,会降低对你整个sitemap的信任度,甚至部分忽略你的lastmod信号。
生成了sitemap但不提交
sitemap.xml放在根目录,robots.txt里也写了路径,但就是不主动去Google Search Console提交。虽然Google最终会通过robots.txt发现,但主动提交可以立即触发抓取,而且你能在GSC里看到sitemap的处理状态和错误信息。
sitemap里URL格式不一致
有的URL带www有的不带、有的https有的http、有的末尾有斜杠有的没有。Google会把它们当成不同页面,浪费抓取配额。生成sitemap前先确定你的规范域名格式,所有URL统一使用同一个格式。
sitemap文件太大,单个超过50MB或5万URL
超过限制后搜索引擎会拒绝处理。大型网站需要用sitemap索引文件把多个sitemap文件串起来:一个sitemap-index.xml引用sitemap-1.xml、sitemap-2.xml……Screaming Frog会自动处理这个,但手写脚本需要注意。
最后说两句。
sitemap生成这件事,技术含量不高,但踩坑的人极多。核心就三条:只放你想被索引的页面,lastmod填真实时间,生成后主动去GSC提交并盯着数据面板。WordPress用户装个Rank Math就不用操心了;小网站用XML-Sitemaps.com在线跑一次也够用;大站或者有技术能力的自建站写个脚本定时跑最省事。sitemap不是SEO排名的直接因素,但没有它,你的网站就像没有门牌号的房子——Google能找到,但找得慢、找不全。
快速决策:WordPress → Rank Math(免费);500页以下静态站 → XML-Sitemaps.com(免费);500页以上大站 → Screaming Frog(£199/年);自建站/需自动化 → Python脚本+cron(免费)。不管用哪个方案,生成后去Google Search Console提交,然后在robots.txt加一行Sitemap路径,双重保险。
