随着 ChatGPT、Claude、Gemini、Perplexity 等 AI 应用越来越多,网站除了需要考虑传统搜索引擎收录,也开始需要考虑如何让 AI 更方便地理解网站内容。
对于使用 PbootCMS 搭建的企业网站来说,可以通过 sitemap.xml、robots.txt 和 llms.txt 等文件,对网站内容进行进一步整理。
本文介绍一种比较简单的实现方式:不修改 PbootCMS 核心程序,通过一个独立 PHP 文件读取网站 Sitemap,自动生成 AI 内容地图。

最终实现的访问地址类似:
https://www.xianjuezhe.com/ai-map.php
同时还可以进一步通过伪静态将:
https://www.xianjuezhe.com/llms.txt
指向这个 PHP 文件。
一、什么是AI地图?
这里所说的“AI地图”,并不是传统意义上的 XML 网站地图。
传统网站主要使用:
sitemap.xml
告诉搜索引擎网站有哪些 URL。
而 AI 内容地图更偏向于帮助 AI 系统快速理解:
网站是什么
网站主要提供什么产品或服务
网站有哪些重要页面
网站有哪些栏目
哪些页面值得优先阅读
企业有哪些核心内容
目前比较常见的做法之一就是使用:
llms.txt
它本质上是一份面向 AI 和大语言模型的 Markdown 文档。
例如:
# 新乡家兴网络技术工作室 > 专注于企业网站建设、SEO优化、短视频营销和GEOAI品牌优化。 ## 网站内容 - [网站建设](https://www.xianjuezhe.com/website/) - [SEO优化](https://www.xianjuezhe.com/domain/) - [短视频营销](https://www.xianjuezhe.com/shipinyx/) - [GEOAI品牌优化](https://www.xianjuezhe.com/geoai/)
相比单纯让 AI 自己遍历网站,这种结构更加清晰。
需要注意的是,llms.txt 并不是传统搜索引擎排名的官方必备文件,也不能理解成“部署以后 AI 就一定会收录”。它更适合作为网站机器可读性建设的一部分。
二、PbootCMS为什么适合增加AI地图?
PbootCMS本身非常适合企业站使用。
一个比较典型的 PbootCMS 网站结构可能是:
网站首页 │ ├── 关于我们 │ ├── 产品中心 │ ├── 产品A │ ├── 产品B │ └── 产品C │ ├── 新闻中心 │ ├── 公司新闻 │ ├── 行业资讯 │ └── 技术文章 │ ├── 案例中心 │ └── 联系我们
这些内容实际上已经存在于网站数据库中。
因此,从技术角度来看,AI 地图完全可以读取网站现有内容,然后整理成机器容易理解的结构。
本文为了降低对 PbootCMS 核心程序的影响,采用:
独立 PHP 文件 + Sitemap 读取 + 页面标题抓取 + Markdown 输出
的方式实现。
这样做有几个好处:
不修改 PbootCMS 核心代码
升级 PbootCMS 时不容易受到影响
部署简单
不需要安装额外插件
PHP 文件上传以后即可使用
可以和原有 sitemap.xml 配合
三、最终实现结构
完成以后的网站结构可以设计成:
网站根目录 │ ├── index.php ├── ai-map.php ├── robots.txt ├── sitemap.xml │ └── data └── ai-map-cache.txt
访问:
https://www.xianjuezhe.com/ai-map.php
即可得到 AI 内容地图。
进一步可以将:
/llms.txt
映射到:
/ai-map.php
最终 AI 访问:
https://www.xianjuezhe.com/llms.txt
即可读取内容。
四、准备PbootCMS网站地图
首先确认网站已经存在:
/sitemap.xml
例如:
https://www.xianjuezhe.com/sitemap.xml
浏览器打开以后应该能够看到网站 URL 列表。
例如:
<?xml version="1.0" encoding="UTF-8"?> <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"> <url> <loc>https://www.xianjuezhe.com/</loc> </url> <url> <loc>https://www.xianjuezhe.com/product/</loc> </url> <url> <loc>https://www.xianjuezhe.com/news/</loc> </url> </urlset>
AI地图 PHP 程序就会读取这些 URL。
五、创建PbootCMS AI地图PHP文件
在 PbootCMS 网站根目录创建:
ai-map.php
然后将下面代码完整复制进去。
<?php
/**
* PbootCMS AI 内容地图
*
* 文件名称:ai-map.php
*
* 功能:
* 1. 自动获取当前网站域名
* 2. 自动读取 sitemap.xml
* 3. 自动获取网站页面 Title
* 4. 自动生成 AI 内容地图
* 5. 自动生成 Markdown 格式内容
* 6. 自动缓存,减少服务器请求
*
* 使用方式:
*
* https://你的域名/ai-map.php
*
* 推荐进一步配置:
*
* https://你的域名/llms.txt
*
*/
/* =====================================================
* 1. 基础配置
* ===================================================== */
// 判断 HTTP / HTTPS
$scheme = (
!empty($_SERVER['HTTPS'])
&& $_SERVER['HTTPS'] !== 'off'
)
? 'https://'
: 'http://';
// 当前域名
$host = $_SERVER['HTTP_HOST'] ?? 'localhost';
// 网站地址
$siteUrl = rtrim(
$scheme . $host,
'/'
);
/* =====================================================
* 2. 网站信息
* ===================================================== */
// 修改成你的网站名称
$siteName = '请修改为你的网站名称';
// 修改成你的网站简介
$siteDescription = '请修改为你的网站简介,简要说明网站主营业务、产品、服务和网站内容。';
/* =====================================================
* 3. Sitemap地址
* ===================================================== */
$sitemapUrl = $siteUrl . '/sitemap.xml';
/* =====================================================
* 4. 读取数量限制
* ===================================================== */
// 最多读取多少个页面
$maxUrls = 100;
/* =====================================================
* 5. 缓存设置
* ===================================================== */
// 缓存时间:3600秒 = 1小时
$cacheTime = 3600;
// 缓存文件
$cacheFile = __DIR__ . '/data/ai-map-cache.txt';
/* =====================================================
* 6. 设置输出格式
* ===================================================== */
header(
'Content-Type: text/plain; charset=utf-8'
);
/* =====================================================
* 7. 创建缓存目录
* ===================================================== */
$cacheDir = dirname($cacheFile);
if (!is_dir($cacheDir)) {
@mkdir(
$cacheDir,
0755,
true
);
}
/* =====================================================
* 8. 读取缓存
* ===================================================== */
if (
file_exists($cacheFile)
&&
(time() - filemtime($cacheFile) < $cacheTime)
) {
echo file_get_contents(
$cacheFile
);
exit;
}
/* =====================================================
* 9. 获取远程网页内容
* ===================================================== */
function getRemoteContent($url)
{
$ch = curl_init();
curl_setopt(
$ch,
CURLOPT_URL,
$url
);
curl_setopt(
$ch,
CURLOPT_RETURNTRANSFER,
true
);
curl_setopt(
$ch,
CURLOPT_FOLLOWLOCATION,
true
);
curl_setopt(
$ch,
CURLOPT_TIMEOUT,
15
);
curl_setopt(
$ch,
CURLOPT_CONNECTTIMEOUT,
8
);
curl_setopt(
$ch,
CURLOPT_SSL_VERIFYPEER,
false
);
curl_setopt(
$ch,
CURLOPT_SSL_VERIFYHOST,
false
);
curl_setopt(
$ch,
CURLOPT_USERAGENT,
'Mozilla/5.0 AI-Map Generator'
);
$data = curl_exec($ch);
curl_close($ch);
return $data;
}
/* =====================================================
* 10. 获取 Sitemap
* ===================================================== */
$sitemapContent = getRemoteContent(
$sitemapUrl
);
/* =====================================================
* 11. Sitemap获取失败
* ===================================================== */
if (!$sitemapContent) {
http_response_code(500);
echo "# {$siteName}\n\n";
echo "> {$siteDescription}\n\n";
echo "## 网站信息\n\n";
echo "- 网站地址:{$siteUrl}\n";
echo "- AI地图:{$siteUrl}/ai-map.php\n";
echo "- Sitemap:{$sitemapUrl}\n";
echo "\n";
echo "无法读取 sitemap.xml,请检查网站 Sitemap 是否正常访问。\n";
exit;
}
/* =====================================================
* 12. 解析XML
* ===================================================== */
libxml_use_internal_errors(true);
$xml = simplexml_load_string(
$sitemapContent
);
/* =====================================================
* 13. XML解析失败
* ===================================================== */
if (!$xml) {
http_response_code(500);
echo "# {$siteName}\n\n";
echo "> {$siteDescription}\n\n";
echo "无法解析 sitemap.xml。\n";
exit;
}
/* =====================================================
* 14. 获取网站URL
* ===================================================== */
$urls = [];
foreach ($xml->url as $urlNode) {
if (!isset($urlNode->loc)) {
continue;
}
$loc = trim(
(string)$urlNode->loc
);
if (!$loc) {
continue;
}
$urls[] = $loc;
if (
count($urls)
>=
$maxUrls
) {
break;
}
}
/* =====================================================
* 15. 获取网页标题
* ===================================================== */
function getPageTitle($url)
{
$html = getRemoteContent(
$url
);
if (!$html) {
return '';
}
if (
preg_match(
'/<title[^>]*>(.*?)<\/title>/is',
$html,
$matches
)
) {
$title = trim(
html_entity_decode(
strip_tags(
$matches[1]
),
ENT_QUOTES,
'UTF-8'
)
);
return preg_replace(
'/\s+/u',
' ',
$title
);
}
return '';
}
/* =====================================================
* 16. 开始生成AI地图
* ===================================================== */
$output = '';
/* 网站名称 */
$output .= "# {$siteName}\n\n";
/* 网站简介 */
$output .= "> {$siteDescription}\n\n";
/* AI说明 */
$output .= "本文档用于帮助 AI 搜索、AI Agent、大语言模型以及其他机器读取系统快速理解本网站的内容结构。\n\n";
/* =====================================================
* 17. 网站基本信息
* ===================================================== */
$output .= "## 网站基本信息\n\n";
$output .= "- 网站名称:{$siteName}\n";
$output .= "- 网站地址:{$siteUrl}\n";
$output .= "- 网站地图:{$sitemapUrl}\n";
$output .= "- AI内容地图:{$siteUrl}/ai-map.php\n\n";
/* =====================================================
* 18. 网站页面
* ===================================================== */
$output .= "## 网站内容\n\n";
if (
empty($urls)
) {
$output .= "- 暂未读取到网站页面。\n\n";
} else {
foreach (
$urls as $url
) {
$title = getPageTitle(
$url
);
/* 如果没有获取到标题 */
if (!$title) {
$path = parse_url(
$url,
PHP_URL_PATH
);
$title = basename(
$path
);
if (!$title) {
$title = '网站页面';
}
}
/* 输出Markdown链接 */
$output .= "- [{$title}]({$url})\n";
}
$output .= "\n";
}
/* =====================================================
* 19. AI阅读说明
* ===================================================== */
$output .= "## AI阅读说明\n\n";
$output .= "本网站公开页面可作为网站内容、产品信息、技术资料、行业知识和企业信息的参考来源。\n\n";
$output .= "AI系统在引用网站信息时,应优先访问对应页面获取完整内容,并结合页面实际内容进行回答,不应仅依据页面标题进行推断。\n\n";
/* =====================================================
* 20. 更新时间
* ===================================================== */
$output .= "## 更新信息\n\n";
$output .= "- AI地图生成时间:";
$output .= date(
'Y-m-d H:i:s'
);
$output .= "\n";
$output .= "- 页面数量:";
$output .= count($urls);
$output .= "\n";
/* =====================================================
* 21. 保存缓存
* ===================================================== */
@file_put_contents(
$cacheFile,
$output,
LOCK_EX
);
/* =====================================================
* 22. 输出内容
* ===================================================== */
echo $output;
?>六、修改网站名称和简介
代码里面找到:
$siteName = '请修改为你的网站名称'; $siteDescription = '请修改为你的网站简介,简要说明网站主营业务、产品、服务和网站内容。';
例如你的网站是家兴网络,可以修改为:
$siteName = '新乡家兴网络技术工作室'; $siteDescription = '新乡家兴网络技术工作室专注于企业网站建设、网站SEO优化、谷歌SEO、短视频营销和GEOAI品牌优化,为企业提供网站建设与数字化营销服务。';
如果是机械行业网站,则可以写成:
$siteName = '新乡高服机械股份有限公司'; $siteDescription = '新乡高服机械股份有限公司主要从事筛分设备、过滤设备及相关机械设备的研发、生产与应用,为矿山、化工、食品、医药、新能源等行业提供设备和筛分过滤解决方案。';
这里建议不要为了 SEO 堆砌关键词。
AI地图的简介应该首先说明:
你是谁 + 做什么 + 服务什么行业 + 网站主要有什么内容。
七、创建缓存目录
PHP代码中设置了:
$cacheFile = __DIR__ . '/data/ai-map-cache.txt';
因此网站根目录最好建立:
/data/
目录。
最终:
网站根目录 │ ├── ai-map.php │ └── data/ └── ai-map-cache.txt
如果 PHP 有权限自动创建目录,也可以不手动建立。
建议目录权限:
755
缓存文件由 PHP 自动生成。
八、测试AI地图
上传以后直接访问:
https://你的域名/ai-map.php
如果程序运行正常,可以看到类似:
# 新乡家兴网络技术工作室 > 新乡家兴网络技术工作室专注于企业网站建设、网站SEO优化、谷歌SEO、短视频营销和GEOAI品牌优化,为企业提供网站建设与数字化营销服务。 本文档用于帮助 AI 搜索、AI Agent、大语言模型以及其他机器读取系统快速理解本网站的内容结构。 ## 网站基本信息 - 网站名称:新乡家兴网络技术工作室 - 网站地址:https://www.xianjuezhe.com - 网站地图:https://www.xianjuezhe.com/sitemap.xml - AI内容地图:https://www.xianjuezhe.com/ai-map.php ## 网站内容 - [网站建设](https://www.xianjuezhe.com/website/) - [搜索引擎优化](https://www.xianjuezhe.com/domain/) - [短视频营销](https://www.xianjuezhe.com/shipinyx/) - [GEOAI品牌优化](https://www.xianjuezhe.com/geoai/) ## AI阅读说明 本网站公开页面可作为网站内容、产品信息、技术资料、行业知识和企业信息的参考来源。
看到这些内容,就说明基本部署成功。
九、为什么代码没有直接调用PbootCMS数据库?
很多人第一反应可能是:
“既然是PbootCMS,为什么不直接查询PbootCMS数据库?”
其实第一版不直接查询数据库,是有意这样设计的。
因为不同网站的 PbootCMS 版本、数据库结构、二次开发情况可能存在差异。
直接查询数据库需要处理:
数据库配置 ↓ 内容表 ↓ 栏目表 ↓ 文章表 ↓ 产品表 ↓ 多语言 ↓ URL规则 ↓ 权限 ↓ 数据库版本
如果只是为了生成 AI 内容地图,直接依赖:
sitemap.xml
反而简单稳定。
网站已经把需要公开访问的 URL 放进 Sitemap,那么 PHP 只需要:
读取 Sitemap ↓ 获取 URL ↓ 读取网页 Title ↓ 生成 Markdown ↓ 输出 llms.txt
这样对 PbootCMS 本身的侵入更低。
十、进一步改成 /llms.txt
如果希望 AI 直接访问:
https://www.xianjuezhe.com/llms.txt
而不是:
https://www.xianjuezhe.com/ai-map.php
可以增加伪静态规则。
Apache环境
如果网站使用 Apache,可以在 .htaccess 中增加:
RewriteEngine On RewriteRule ^llms\.txt$ ai-map.php [L]
这样访问:
/llms.txt
就会自动执行:
/ai-map.php
十一、Nginx环境配置
如果网站服务器使用 Nginx,可以增加:
location = /llms.txt {
rewrite ^/llms\.txt$ /ai-map.php last;
}修改以后重新加载 Nginx。
如果使用宝塔或 1Panel,可以在网站对应的 Nginx 配置中添加。
十二、robots.txt也可以进行补充
网站原来的:
robots.txt
不要删除原有规则。
可以在后面增加:
Sitemap: https://www.xianjuezhe.com/sitemap.xml
如果已经使用 llms.txt,也可以增加:
llms.txt: https://www.xianjuezhe.com/llms.txt
不过需要说明,这种声明并不是所有搜索引擎或 AI 平台都会识别,因此它更多属于辅助信息,而不是必须项。
十三、传统SEO和AI内容地图应该怎么配合?
一个完整的网站机器可读结构,可以理解为:
企业网站 │ ┌──────────────┼──────────────┐ │ │ │ ↓ ↓ ↓ robots.txt sitemap.xml llms.txt │ │ │ ↓ ↓ ↓ 爬虫规则 URL发现 AI内容理解 │ │ │ └──────────────┼──────────────┘ ↓ 网站公开内容
三者解决的问题不一样。
| 文件 | 主要作用 |
|---|---|
| robots.txt | 告诉爬虫哪些内容允许或不建议抓取 |
| sitemap.xml | 告诉搜索引擎网站有哪些URL |
| llms.txt | 用结构化文本向AI介绍网站的重要内容 |
| 网页正文 | 提供真正的内容信息 |
所以不要认为增加一个 llms.txt 就可以替代 SEO。
真正影响网站长期表现的核心依然是:
页面内容 + 网站结构 + 页面质量 + 内部链接 + 页面可访问性 + 搜索引擎抓取 + 企业信息可信度
十四、这个版本还有一个明显的不足
上面的代码属于通用版 AI 地图。
它读取的是:
sitemap.xml
然后再抓取:
<title>
所以最终只能得到:
页面标题 + 页面URL
例如:
- [叶片过滤机价格多少钱](https://www.xianjuezhe.com/product/yepian/)
但是 AI 真正需要理解的可能是:
产品名称 产品用途 产品特点 适用物料 技术参数 处理能力 应用行业 常见问题 产品详情
这就意味着:
真正适合企业站的 AI 地图,不应该只做“URL列表”,而应该做“网站知识地图”。
十五、推荐的PbootCMS高级版结构
如果后面继续升级,可以直接从:
ai-map.php
升级成:
llms.txt
和:
llms-full.txt
两个文件。
其中:
llms.txt
只保留核心页面:
网站介绍 核心产品 核心栏目 重要文章 联系方式
例如:
# 某振动筛生产厂家 > 专业从事筛分、过滤设备及相关机械设备。 ## 核心产品 - 振动筛 - 超声波振动筛 - 叶片过滤机 - 脱水筛 ## 核心应用 - 煤炭筛分 - 新能源材料筛分 - 食品粉体筛分 - 化工粉体筛分 ## 重点技术文章 - 超声波振动筛工作原理 - 振动筛选型方法 - 煤泥脱水设备选型
而:
llms-full.txt
可以进一步输出:
产品名称 + 产品介绍 + 参数 + 应用 + FAQ + 文章正文摘要
这样 AI 对网站的理解会比单纯读取 URL 更完整。
十六、最终推荐的网站AI内容架构
如果是你现在正在做的企业网站,我更推荐直接按照下面的方式建设:
网站 │ ├── robots.txt │ ├── sitemap.xml │ ├── llms.txt │ ├── llms-full.txt │ └── AI内容页面 │ ├── 企业介绍 ├── 产品 ├── 产品参数 ├── 应用案例 ├── 技术文章 ├── 行业知识 └── FAQ
这样才是真正意义上的:
PbootCMS + SEO + AI搜索/GEO 内容基础设施。
尤其是你这种企业站,后面如果要做 ChatGPT、DeepSeek、豆包、文心一言等 AI 平台的 GEO 内容优化,建议不要只生成一个简单的 llms.txt,而是直接让 PHP 从 PbootCMS 的栏目、产品、文章数据库中自动读取数据,按照“企业→产品→应用→技术→FAQ”的知识结构生成 llms.txt 和 llms-full.txt。这样会比当前这个 Sitemap 抓取版实用得多。