PHP 生成式引擎优化(GEO)- 让您的网站可被 ChatGPT、Claude 和 Perplexity 等 AI 答案引擎发现。
English | 简体中文
生成式引擎优化(GEO)是 SEO 的下一个演进阶段,专注于让您的内容可被 AI 驱动的答案引擎发现并以最佳格式呈现。此包帮助您生成 AI 引擎用于理解和索引您的网站所需的所有文件。
AI 友好文件生成:自动生成 AI 引擎偏好的文件
llms.txt - LLM 的结构化内容(遵循 llms-txt.org)llms-full.txt - AI 训练的综合文档robots.txt - 增强的 AI 爬虫指令sitemap.xml - SEO 优化的站点地图docs.json - 结构化文档索引ai-index.json - AI 友好的内容索引schema.json - Schema.org 标记用于富搜索结果CLI 工具:易用的命令行界面,包含多个命令
灵活配置:基于 YAML 的配置,完全可定制
框架无关:适用于任何 PHP 项目或框架
平台集成:现成的 WordPress、Shopify、Laravel 和 Symfony 集成
审计和报告:内置 GEO 分数计算器和详细报告
json、simplexml、yaml通过 Composer 安装:
composer require wzj177/geo-friendly
或添加到您的 composer.json:
{
"require": {
"wzj177/geo-friendly": "^1.0"
}
}
安装后,您可以直接使用 CLI 工具:
# geo 命令现已可用
vendor/bin/geo --version
安装后,geo 命令将在您的 vendor bin 中可用:
# 在项目根目录生成所有 GEO 文件
vendor/bin/geo generate
# 生成特定文件
vendor/bin/geo generate:llms
vendor/bin/geo generate:sitemap
vendor/bin/geo generate:schema
# 使用自定义输出目录生成
vendor/bin/geo generate --output=./public
# 使用自定义配置生成
vendor/bin/geo generate --config=./geo-config.yaml
use GeoFriendly\GeoGenerator;
$generator = new GeoGenerator([
'site_url' => 'https://example.com',
'site_name' => '我的精彩网站',
'output_dir' => __DIR__ . '/public',
]);
// 生成所有文件
$generator->generateAll();
// 或生成特定文件
$generator->generateLlmsTxt();
$generator->generateSitemap();
$generator->generateSchema();
Geo-Friendly 支持两种内容生成模式:
contentDir 使用 markdown 文件最适合文档站点、博客,以及当您可以访问源 markdown 文件时:
title: '我的文档'
url: 'https://docs.example.com'
contentDir: './content'
最适合电商网站、企业网站,或需要爬取外部网站时:
title: '我的商店'
url: 'https://store.example.com'
contentDir: '' # 空值以使用 Firecrawl
firecrawl:
apiKey: 'your-firecrawl-api-key'
apiUrl: 'https://api.firecrawl.dev/v1'
enabled: true
何时使用每种模式:
详细信息请参阅内容模式文档。
在项目根目录创建 geofriendly.yaml 文件:
# 基本站点信息
site_url: https://example.com
site_name: 我的精彩网站
site_description: 您网站的描述
# 输出目录(相对于项目根目录)
output_dir: ./public
# 要生成的文件
generate:
llms_txt: true
llms_full: true
robots_txt: true
sitemap_xml: true
docs_json: true
ai_index: true
schema_json: true
# 内容源
content_sources:
- ./docs/**/*.md
- ./src/**/*.php
# 排除模式
exclude:
- vendor/
- node_modules/
- tests/
# AI 爬虫权限(用于 robots.txt)
ai_crawlers:
GPTBot: allow
Google-Extended: allow
anthropic-ai: allow
PerplexityBot: allow
geo CLI 工具提供管理 GEO 文件的全面功能:
# 生成所有 GEO 文件
vendor/bin/geo generate
# 生成特定文件类型
vendor/bin/geo generate:llms # 生成 llms.txt 和 llms-full.txt
vendor/bin/geo generate:robots # 生成 robots.txt
vendor/bin/geo generate:sitemap # 生成 sitemap.xml
vendor/bin/geo generate:schema # 生成 schema.json
vendor/bin/geo generate:docs # 生成 docs.json
vendor/bin/geo generate:ai-index # 生成 ai-index.json
# 初始化配置
vendor/bin/geo init # 在当前目录创建 geo-config.yaml
# 验证配置
vendor/bin/geo validate # 验证 geo-config.yaml
# 检查当前 GEO 状态
vendor/bin/geo check # 分析当前站点并提供建议
# 生成详细报告
vendor/bin/geo report # 生成包含分数的综合 GEO 报告
# 显示帮助
vendor/bin/geo --help
vendor/bin/geo generate --help # 特定命令的帮助
# 显示版本
vendor/bin/geo --version
所有生成命令都支持这些选项:
# 自定义输出目录
vendor/bin/geo generate --output=./public
# 自定义配置文件
vendor/bin/geo generate --config=./custom-config.yaml
# 详细输出
vendor/bin/geo generate --verbose
# 试运行(预览更改而不写入)
vendor/bin/geo generate --dry-run
遵循 llms-txt.org 规范的结构化文件,为 AI 引擎提供您内容结构的信息。
# 我的精彩网站
Title: 我的精彩网站
Description: 您网站的描述
Version: 1.0.0
## 文档
- [入门指南](https://example.com/docs/getting-started.md)
- [API 参考](https://example.com/docs/api.md)
## 博客
- [最新文章](https://example.com/blog/feed.xml)
包含完整文档内容的综合版本,用于 AI 训练数据。包括完整的文章内容、代码示例和针对 LLM 消费优化的详细描述。
增强的 robots.txt,包含 AI 爬虫指令:
User-agent: *
Allow: /
# AI 爬虫
User-agent: GPTBot
Allow: /
User-agent: Google-Extended
Allow: /
User-agent: anthropic-ai
Allow: /
User-agent: PerplexityBot
Allow: /
User-agent: Claude-Web
Allow: /
# 站点地图
Sitemap: https://example.com/sitemap.xml
SEO 优化的 XML 站点地图,具有适当的优先级和更改频率。包含所有页面、文章和自定义文章类型及其元数据。
JSON 格式的结构化文档索引,提供文档结构的机器可读概览,具有层次化组织和元数据。
AI 友好的内容索引,将您的内容映射到最佳的 AI 发现格式,包括摘要、关键词和相关性分数。
用于富搜索结果的 Schema.org 结构化数据,包括 WebSite、WebPage、Article 和 Organization 模式及其完整元数据。
您可以使用自定义内容处理器扩展生成器:
use GeoFriendly\Processor\ContentProcessorInterface;
class CustomProcessor implements ContentProcessorInterface
{
public function process(string $content, array $metadata): array
{
// 您的自定义处理逻辑
return [
'title' => $metadata['title'] ?? '',
'content' => strip_tags($content),
'summary' => substr($content, 0, 500),
];
}
}
// 注册处理器
$generator->addProcessor(new CustomProcessor());
Laravel:
// 在命令或控制器中
use GeoFriendly\GeoGenerator;
class GenerateGeoCommand extends Command
{
public function handle()
{
$generator = new GeoGenerator([
'site_url' => config('app.url'),
'site_name' => config('app.name'),
'output_dir' => public_path(),
]);
$generator->generateAll();
$this->info('GEO 文件生成成功!');
}
}
完整的 Laravel 集成包也可用:
# 安装 Laravel 服务提供者
composer require wzj177/geo-friendly
php artisan vendor:publish --provider="GeoFriendly\Laravel\GeoFriendlyServiceProvider"
参见 examples/laravel 获取完整的 Laravel 集成,包括:
Symfony:
// 在控制台命令中
use GeoFriendly\GeoGenerator;
class GenerateGeoCommand extends Command
{
protected static $defaultName = 'geo:generate';
protected function execute(InputInterface $input, OutputInterface $output): int
{
$generator = new GeoGenerator([
'site_url' => $this->getParameter('router.request_context.host'),
'site_name' => $this->getParameter('app.name'),
'output_dir' => $this->getParameter('kernel.project_dir') . '/public',
]);
$generator->generateAll();
return Command::SUCCESS;
}
}
完整的 Symfony 包可在 examples/symfony 获取,包含:
WordPress:
WordPress 插件可在 examples/wordpress-plugin 获取,功能包括:
Shopify:
Shopify 应用模板可在 examples/shopify-app 获取,包含:
该包包括用于内容优化的 AI 驱动功能:
use GeoFriendly\GeoGenerator;
use GeoFriendly\Enhancement\AiContentEnhancer;
$generator = new GeoGenerator($config);
$enhancer = new AiContentEnhancer($openaiApiKey);
// 使用 AI 增强内容
$enhancedContent = $enhancer->enhanceForLlm($originalContent, [
'add_context' => true,
'summarize' => true,
'extract_keywords' => true,
]);
// 生成 AI 优化的 llms.txt
$generator->setEnhancer($enhancer);
$generator->generateLlmsTxt();
该包包括审计您网站 GEO 准备情况的工具:
# 检查您网站的 GEO 状态
vendor/bin/geo check --url=https://example.com
# 生成详细报告
vendor/bin/geo report --url=https://example.com --output=geo-report.html
审计根据以下因素计算综合 GEO 分数(0-100):
运行测试套件:
composer test
运行特定测试套件:
# 仅单元测试
vendor/bin/phpunit --testsuite=Unit
# 集成测试
vendor/bin/phpunit --testsuite=Integration
# 功能测试
vendor/bin/phpunit --testsuite=Feature
运行静态分析:
composer analyse
欢迎贡献!请随时提交 Pull Request。
# 克隆仓库
git clone https://github.com/wzj177/geo-friendly.git
cd geo-friendly
# 安装依赖
composer install
# 运行测试
composer test
# 运行分析
composer analyse
此包是根据 MIT 许可证 许可的开源软件。
Geo-Friendly 支持三种主要使用场景,根据你的项目类型选择:
适用于: VitePress、Docusaurus、Hugo、Jekyll、MkDocs、GitBook
你在 content/ 目录中维护 markdown 文件,Geo-Friendly 从这些文件生成 GEO 文件。
# 项目结构
my-docs/
├── content/
│ ├── index.md
│ ├── getting-started.md
│ └── api/
│ └── reference.md
├── geofriendly.yaml
└── package.json
# 生成 GEO 文件
vendor/bin/geo generate
配置:
title: '我的文档'
url: 'https://docs.example.com'
contentDir: './content'
firecrawl:
enabled: false
优势:
完整指南: docs/content-modes.zh-CN.md
适用于: WordPress、Shopify、WooCommerce、自定义 PHP 应用
无需访问源文件,Firecrawl API 爬取你的实时网站并提取内容。
示例: examples/wordpress-firecrawl
# 克隆示例
git clone https://github.com/yourusername/geo-friendly.git
cd geo-friendly/examples/wordpress-firecrawl
# 配置环境
cp .env.example .env
# 编辑 .env 填入 WordPress URL 和 Firecrawl API key
# 生成 GEO 文件
composer generate
配置:
title: '我的 WordPress 站点'
url: 'https://mysite.com'
contentDir: '' # 留空使用 Firecrawl
firecrawl:
apiKey: '%env(FIRECRAWL_API_KEY)%'
enabled: true
优势:
完整指南: docs/content-modes.zh-CN.md
适用于: SaaS 应用、企业平台、多租户系统
你构建一个带 Markdown 编辑器的自定义管理面板来维护内容,然后使用 Geo-Friendly 编程生成 GEO 文件。
架构:
管理面板 (Markdown 编辑器)
↓
数据库 (结构化内容)
↓
Geo-Friendly PHP 包
↓
GEO 文件 (llms.txt, sitemap.xml 等)
↓
AI 引擎 (ChatGPT、Claude、Perplexity)
代码示例:
use GeoFriendly\GeoFriendly;
// 1. 从数据库获取内容
$contents = Content::where('status', 'published')->get();
// 2. 准备配置
$config = [
'title' => '我的 SaaS 平台',
'url' => 'https://app.example.com',
'contentDir' => $tempDir, // 临时 markdown 文件
'outDir' => storage_path('geo'),
];
// 3. 生成
$geo = new GeoFriendly($config);
[$generated, $errors] = $geo->generate();
// 4. 通过 API 提供或部署到 CDN
数据库设计:
CREATE TABLE contents (
id BIGINT PRIMARY KEY,
slug VARCHAR(255),
url VARCHAR(512),
title VARCHAR(255), -- GEO 必需
description TEXT, -- GEO 必需
content MEDIUMTEXT, -- Markdown 内容
status ENUM('draft', 'published'),
published_at DATETIME
);
完整指南: docs/generic-backend-solution.zh-CN.md
优势:
| 你的情况 | 推荐场景 | 示例 |
|---|---|---|
| 我有文档的 markdown 文件 | 静态站点(本地 Markdown) | VitePress、Docusaurus |
| 我有 WordPress/Shopify 站点 | 动态站点(Firecrawl) | WordPress 博客 |
| 我需要自定义内容管理系统 | 自定义后台系统 | SaaS 平台 |
| 我想要最简单的设置 | 静态站点(本地 Markdown) | 个人博客 |
| 我不能修改网站代码 | 动态站点(Firecrawl) | 企业网站 |
| 我需要多语言支持 | 自定义后台系统 | 企业平台 |
请参阅 CHANGELOG.md 了解最近的更改。
用 ❤️ 为开源社区构建
项目地址:https://github.com/wzj177/geo-friendly
牛皮
♥️