自动生成符合标准的 XML 网站地图,支持百度和 IndexNow(Bing、Yandex 等)搜索引擎推送,帮助搜索引擎更好地索引您的网站内容。
- ✅ 符合标准 - 完全遵循 Sitemap 协议规范
- 🔄 自动生成 - 自动包含文章、页面、分类和标签
- ⚙️ 灵活配置 - 可自定义包含的内容类型
- 🚫 排除功能 - 支持排除特定文章或页面
- 🔒 隐私保护 - 自动排除加密文章和草稿
- 📅 准确时间 - 使用页面实际修改时间,非生成时间
- 🎯 简洁高效 - 仅包含必需标签,输出更简洁
- 📍 百度推送 - 支持API推送和Sitemap推送两种方式
- 🎯 IndexNow推送 - 使用 IndexNow API,一次推送同时通知 Bing、Yandex、Seznam 等多个搜索引擎
- 🤖 自动推送 - 文章发布/更新时自动推送到搜索引擎
- 📊 推送日志 - 详细的推送记录,便于追踪推送状态
- 🎛️ 灵活配置 - 可自定义推送时机和推送数量
- curl - 用于搜索引擎推送
- dom 或 simplexml - 用于生成 XML 站点地图
- 网站根目录写入权限 - 用于创建 IndexNow 验证文件({key}.txt)
- 下载插件文件
- 将文件夹重命名为
uSitemap - 上传到 Typecho 的
usr/plugins/目录 - 在后台「控制台」→「插件」中启用插件
- 点击「设置」进行配置
配置界面采用标签页设计,分为以下四个部分:
- Sitemap设置 - 配置站点地图的基本参数
- 百度推送 - 配置百度搜索引擎推送
- Bing推送 - 配置 IndexNow 推送
- 推送记录 - 查看推送历史记录
选择要包含在站点地图中的内容:
- 文章 (Posts) - 博客文章
- 独立页面 (Pages) - 关于、联系等独立页面
- 分类 (Categories) - 分类归档页面
- 标签 (Tags) - 标签归档页面
输入要排除的文章或页面 ID,每行一个。例如:
15
28
36
选择是否包含设置了密码访问的内容(默认不包含)
设置内容的更新频率,这将影响搜索引擎抓取频率:
- 始终
- 每小时
- 每天
- 每周
- 每月
- 每年
- 从不
设置 URL 的默认优先级(0.0 - 1.0),首页优先级会自动加 0.1
站点地图中包含的最大 URL 数量,默认 50000
- 启用百度推送:开启后,文章发布/更新时会自动推送到百度
- 百度站点:百度站长平台中验证的站点域名(如:example.com)
- 百度推送Token:在百度站长平台「普通收录」-「资源提交」-「普通收录」中获取的推送接口令牌
- 推送方式:
- API推送:实时推送单个URL,速度更快
- Sitemap推送:推送sitemap地址,批量提交
- 自动推送触发:可选择在发布文章时或更新文章时推送(建议同时勾选)
- 手动推送数量:手动推送时推送的最新N条内容,建议不超过100条
如何获取百度推送配置:
- 访问 百度搜索资源平台
- 登录并验证网站所有权
- 进入「普通收录」→「资源提交」→「普通收录」
- 选择「API推送」方式,获取推送接口令牌(Token)
- 在「资源提交」-「资源替换」中获取站点域名
- 启用IndexNow推送:开启后,文章发布/更新时会自动推送到支持 IndexNow 的搜索引擎
- IndexNow Key:IndexNow验证密钥,留空则启用时自动生成。插件会自动在网站根目录创建验证文件
- 自动推送触发:可选择在发布文章时或更新文章时推送(建议同时勾选,IndexNow API 支持实时通知搜索引擎内容更新)
- 手动推送数量:手动推送时推送的最新N条内容,建议不超过100条
关于 IndexNow: 本插件使用 Microsoft Bing 的 IndexNow API 进行推送。启用时会自动生成验证密钥并创建验证文件到网站根目录。
自动配置流程:
- 启用 IndexNow 推送功能(Key 留空即可自动生成)
- 保存配置后,插件会自动生成随机密钥
- 插件会自动在网站根目录创建验证文件(格式:{key}.txt)
- 验证文件内容为密钥本身,确保可公网访问
- 即可开始推送 URL 到 Bing 和其他支持 IndexNow 的搜索引擎
验证文件自动修复:
- 如果验证文件被意外删除,插件会在您下次访问设置页面时自动重新创建
- 无需手动干预,确保推送功能始终可用
关于 IndexNow Key 变更:
- IndexNow Key 是网站所有权的验证凭证,用于证明您有权提交 URL
- 已提交的 URL:使用旧 Key 提交的 URL 仍然有效,不会被搜索引擎撤回
- 未来推送:新 Key 生效后,新的 URL 推送将使用新 Key 进行验证
- 建议:通常情况下无需更改 Key,除非怀疑密钥泄露
- 注意:IndexNow Key 字段为只读,不支持手动修改
IndexNow 会同时推送到 Bing、Yandex、Seznam 等多个搜索引擎。
启用插件后,访问以下地址查看生成的站点地图:
https://your-domain.com/sitemap.xml
在插件设置页面,每个搜索引擎都有「手动推送」按钮:
- 切换到对应搜索引擎的标签页
- 配置好推送参数(API密钥、Token等)
- 点击「立即推送」按钮
- 查看推送结果
启用搜索引擎推送后,当您发布或更新文章时,系统会自动推送到已启用的搜索引擎。
- 切换到「推送记录」标签页
- 点击「刷新记录」查看最新的推送日志
- 点击「清空记录」可以删除所有推送日志
- 登录 Google Search Console
- 选择您的网站
- 在左侧菜单选择「站点地图」
- 输入
sitemap.xml并提交
- 登录 Bing 网站管理员工具
- 选择您的网站
- 在「站点地图」部分提交
sitemap.xml
- 登录 百度搜索资源平台
- 选择「普通收录」→「sitemap」
- 提交您的 sitemap 地址
建议在网站根目录的 robots.txt 文件中添加站点地图地址:
User-agent: *
Allow: /
Sitemap: https://your-domain.com/sitemap.xml生成的 XML 文件格式如下:
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url>
<loc>https://your-domain.com/</loc>
<lastmod>2025-10-13</lastmod>
<changefreq>weekly</changefreq>
<priority>0.9</priority>
</url>
<url>
<loc>https://your-domain.com/archives/1/</loc>
<lastmod>2025-10-10</lastmod>
<changefreq>weekly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://your-domain.com/about.html</loc>
<lastmod>2025-10-01</lastmod>
<changefreq>weekly</changefreq>
<priority>0.8</priority>
</url>
<!-- 更多 URL ... -->
</urlset>- 包裹所有 URL 的根标签
- 必须包含命名空间声明
- 每个 URL 的父标签
- 每个 URL 一个
<url>标签
- 页面的完整 URL
- 必须以协议开头(http 或 https)
- 最多 2,048 字符
- 页面最后修改时间
- W3C Datetime 格式
- 格式:
YYYY-MM-DD(使用简洁的日期格式) - 重要:显示的是页面实际修改时间,而非站点地图生成时间
- 页面更新频率
- 可选值:always、hourly、daily、weekly、monthly、yearly、never
- 页面优先级
- 范围:0.0-1.0
- 默认值:0.5
- 首页会自动加 0.1
插件会自动排除以下内容:
- 草稿、待审核等非发布状态的内容
- 设置了密码的加密文章
- 在配置中手动排除的内容 ID
- 直接从数据库查询,避免多次对象实例化
- 使用流式输出,节省内存
- 仅在访问时生成,不占用存储空间
插件智能处理各类内容的最后修改时间:
- 文章/页面:使用实际的
modified字段(内容最后修改时间) - 首页:使用最新发布文章的修改时间
- 分类:使用该分类下最新文章的修改时间
- 标签:使用该标签下最新文章的修改时间
- 格式:使用
YYYY-MM-DD格式(W3C Datetime 标准)
这样确保搜索引擎获得准确的页面更新信息,而不是站点地图生成时间。
- 文章发布/更新时自动触发
- 支持配置推送时机(发布时/更新时/两者都推送)
- 异步执行,不影响用户体验
- 支持批量推送最新的N条URL
- 实时显示推送结果
- 推送记录保存在日志文件中
- 百度API:单次最多2000条
- IndexNow API:最多10,000条
- 确保插件已启用
- 尝试在后台禁用并重新启用插件
- 检查 URL 重写是否正常工作
- 确认伪静态规则已正确配置
- 检查文章状态是否为「已发布」
- 确认文章没有设置密码
- 检查是否在「排除内容 ID」中添加了该文章
- 确认内容类型(文章/页面/分类/标签)已勾选
站点地图是实时生成的,每次访问都会显示最新内容,无需手动更新。
可以,建议在服务器或 CDN 层面设置适当的缓存时间(如 1-6 小时)以提高性能。
当前版本生成单个站点地图文件。如果内容超过 50,000 条或文件大小超过 50MB,建议使用专业的 SEO 插件。
- 检查API密钥/Token是否正确
- 确认网站已在搜索引擎平台验证通过
- 查看推送记录中的错误信息
- 检查服务器网络连接是否正常
- 确认 PHP curl 扩展已启用
各搜索引擎对API推送都有配额限制:
- 百度:每天最多10万次
- IndexNow:无明确限制,建议合理使用
- 自动推送:文章发布/更新时自动触发,无需手动操作
- 手动推送:主动推送最新的N条URL,适合批量推送历史内容
推送日志保存在 usr/plugins/uSitemap/logs/ 目录下,按日期和搜索引擎分类存储。
- 确保网站根目录有写入权限
- 使用插件设置中的"检测验证文件"功能检查
- 验证文件应位于网站根目录,格式为:{key}.txt
- 确保验证文件可以公网访问
- 自动修复:如果验证文件被意外删除,插件会在您下次访问设置页面时自动重新创建
- 没有影响:IndexNow Key 仅用于验证网站所有权,与已提交的 URL 无关
- 已提交的 URL:使用旧 Key 提交的 URL 仍然有效,已被搜索引擎记录
- 新 Key 的作用:仅用于验证新的 URL 推送请求
- 建议:一般情况下无需更换 Key,除非怀疑密钥泄露
- 注意:IndexNow Key 字段为只读,不支持手动修改
如果需要修改站点地图的访问路径,可以编辑 Plugin.php 中的路由设置:
Helper::addRoute('sitemap', '/your-custom-path.xml', 'uSitemap_Action', 'index');如果使用了静态缓存插件,建议将 sitemap.xml 设置为动态路径或定期更新缓存。
如果需要推送大量历史文章:
- 在配置中设置较大的手动推送数量(如100-500)
- 点击「立即推送」按钮
- 等待推送完成
- 查看推送记录确认结果
如果只想在特定情况下推送:
- 取消勾选「发布文章时」
- 取消勾选「更新文章时」
- 仅在需要时使用手动推送功能
- 定期提交 - 每次发布新内容后,通知搜索引擎抓取站点地图
- 监控收录情况 - 通过搜索引擎管理员工具查看收录统计
- 配合 robots.txt - 确保站点地图可被搜索引擎访问
- 保持更新 - 修改文章后,站点地图会自动反映最新的修改时间
- 合理设置优先级 - 重要内容设置更高的优先级(0.8-1.0)
- 选择合适的更新频率 - 根据内容更新频率设置changefreq
- 多平台推送 - 同时向多个搜索引擎推送,提高覆盖率
- 分析推送效果 - 定期查看推送日志,优化推送策略
本插件严格遵循以下规范:
- 🎉 重大更新 - 新增多搜索引擎推送功能
- ✅ 百度推送 - 支持API推送和Sitemap推送两种方式
- ✅ IndexNow推送 - 使用 IndexNow API,一次推送通知多个搜索引擎
- 🤖 自动推送 - 文章发布/更新时自动推送
- 📊 推送日志 - 详细的推送记录功能
- 🎨 界面优化 - 全新的标签页式配置界面
- 📝 帮助提示 - 每个搜索引擎配置都附带详细的获取指南
- 🔧 环境检测 - 自动检测并提示必需的 PHP 扩展和权限
- 🛠️ 兼容性改进 - 自动处理空配置,使用默认值
- 🎉 首次发布
- ✅ 支持文章、页面、分类、标签
- 📅 智能获取页面实际修改时间
- 🚫 支持排除特定内容
- 📊 符合 Sitemap 0.9 协议规范
- 🎯 简洁输出,仅包含必需的
<loc>和<lastmod>标签
优优
本插件遵循 Typecho 相关许可协议。
uSitemap/
├── Plugin.php # 插件主文件
├── Action.php # 动作类,处理Sitemap生成和推送
├── BaiduPusher.php # 百度推送类
├── BingPusher.php # IndexNow推送类
├── SearchEnginePusher.php # 搜索引擎推送基类
├── logs/ # 推送日志目录
│ ├── baidu_push_*.log
│ └── bing_push_*.log
└── README.md # 说明文档
欢迎提交 Issue 和 Pull Request!
如果这个项目对你有帮助,请给个 Star 支持一下!
- 个人博客:https://blog.uuhb.cn
- 项目地址:https://github.com/Moze54/uSiteMap-typecho-plugin
注意:使用本插件前请确保您的服务器支持 PHP curl 和 dom/simplexml 扩展,并且网站根目录具有写入权限(用于创建 IndexNow 验证文件)。
