# GEO + AI 智能内容生成系统 — LLM 索引 ## 站点概述 **名称**:三粒臻品内容中心(geo_ai_cms) **定位**:AI 驱动的智能内容生成与发布平台,专注于 SEO/GEO(生成式引擎优化)内容营销 **核心价值**:通过多 AI 模型接入、自动化任务调度、内容生命周期管理与结构化 SEO 输出,实现从提示词到发布的全流程自动化内容生产 **技术栈**: - 后端:PHP 7.4+、SQLite(WAL 模式)、自研轻量 MVC 架构 - 前端:TailwindCSS (CDN)、Lucide Icons、EasyMDE、Tagify、原生 JS - 部署:宝塔面板 PHP 项目,域名 `geo.sanlizhenpin.com` --- ## 关键页面索引 ### 前台公开页面 | 路径 | 描述 | |------|------| | `/` | 前台首页:已发布文章列表 | | `/article/{slug}` | 文章详情页(含 SEO Meta/OG/Schema.org 结构化数据) | | `/sitemap.xml` | 动态站点地图(仅含 published 状态文章) | ### 后台管理页面(需登录) | 路径 | 描述 | |------|------| | `/login` | 管理员登录页 | | `/admin` | 仪表盘:统计卡片、快捷入口、趋势图、系统健康 | | `/admin/ai` | AI 模型管理 + 提示词模板管理 | | `/admin/materials` | 素材库:标题/关键词/图片/知识/作者(Tab 切换) | | `/admin/tasks` | 任务管理:批量生成任务列表 + 向导创建 | | `/admin/articles` | 文章管理:列表/筛选/批量操作 | | `/admin/articles/{id}/edit` | 文章编辑:Markdown 编辑器 + SEO 面板 | | `/admin/settings` | 系统设置:草稿上限/批量条数/自动发布/会话超时等 | | `/admin/geo/brand` | GEO 品牌监测:品牌提及扫描与统计 | | `/admin/geo/keywords` | 关键词实验室:关键词批次生成与管理 | | `/admin/geo/citations` | 引用监测:目标引用源追踪 | | `/admin/internal-links` | 内链管理:站内文章关联配置 | --- ## 内容摘要 ### 核心功能模块 **AI 模型接入** - 支持 7 家 Provider:DeepSeek、OpenAI、MiniMax、智谱 GLM、火山方舟 Ark、阿里通义千问、自定义 OpenAI 兼容接口 - 统一适配器模式(ProviderInterface),工厂化实例化 - 连通性测试、默认模型标记、温度/最大 token 可配置 **内容生成流水线** ``` 提示词模板 + 标题库 + 关键词库 + 知识库 → AIService → AI 模型生成正文 → 草稿 ↓ 审核(approve/reject)→ 已发布 → 前台可见 + Sitemap ``` **任务调度与进程管理** - CLI 常驻 worker 进程(`cli/worker.php`),独立于 Web 请求 - 按任务配置的 `interval_seconds` 轮询到期任务 - PID 文件 + 孤儿进程检测 + 单实例保护 - Windows/POSIX 双平台兼容 **SEO/GEO 输出能力** - 动态 Meta 标签(title/description/keywords) - Open Graph 社交分享标签 - Schema.org 结构化数据(Article) - Slug 友好 URL + 中文回退机制 - 实时 sitemap.xml 生成 **素材库管理** - 标题库:预定义/AI 生成,追踪使用次数 - 关键词库:全局唯一,关联文章 - 图片库:上传校验(扩展名/MIME/大小≤5MB),按年月分目录存储 - 知识库:自定义上下文注入生成提示词 - 作者管理:姓名/简介/头像,文章署名 **安全机制** - CSRF 令牌校验(所有非 GET 请求) - PDO 预处理语句防 SQL 注入 - bcrypt 密码存储 + 会话固定防护 - 安全响应头(nosniff/DENY/Referrer-Policy/XSS/CSP) --- ## 技术细节 ### 数据库结构(13 张表) | 表名 | 用途 | |------|------| | `users` | 管理员账号(首版单账号) | | `settings` | 键值配置(站点信息/业务参数) | | `ai_models` | AI 模型配置(provider/api_key/base_url/model_name) | | `prompts` | 提示词模板(system_prompt/user_prompt/content_type) | | `titles` | 标题库(source: predefined/ai, status: unused/used) | | `keywords` | 关键词库(全局唯一,usage_count 追踪) | | `images` | 图片库(filepath/mime_type/宽高/alt) | | `knowledge` | 知识库(tags/tags, is_active) | | `authors` | 作者信息(name/bio/avatar) | | `tasks` | 生成任务(status/pid/progress/interval) | | `task_logs` | 任务日志(level/message/article_id) | | `articles` | 文章(status: draft/review/published/rejected, view_count, like_count) | | `article_keywords` | 文章-关键词关联(多对多) | ### API 接口概览(JSON,前缀 `/api`) **认证与健康** - `GET /api/dashboard/stats` — 仪表盘统计数据 - `GET /api/system/health` — 系统健康诊断(进程/DB/AI 成功率) - `GET/POST /api/settings` — 读取/保存设置 **AI 模型与提示词** - `GET/POST/PUT/DELETE /api/models[/{id}]` — CRUD - `POST /api/models/{id}/test` — 连通性测试 - `GET/POST/PUT/DELETE /api/prompts[/{id}]` — CRUD **素材库** - `GET/POST/PUT/DELETE /api/titles[/{id}]` — 标题 CRUD - `POST /api/titles/generate` — AI 批量生成标题 - `GET/POST/PUT/DELETE /api/keywords[/{id}]` — 关键词 CRUD - `POST /api/images/upload` — 图片上传 - `GET/POST/PUT/DELETE /api/images[/{id}]` — 图片 CRUD - `GET/POST/PUT/DELETE /api/knowledge[/{id}]` — 知识 CRUD - `GET/POST/PUT/DELETE /api/authors[/{id}]` — 作者 CRUD - `POST /api/{resource}/batch-delete` — 批量删除(resource ∈ titles/keywords/images/knowledge/authors) **任务** - `GET/POST/PUT/DELETE /api/tasks[/{id}]` — CRUD - `POST /api/tasks/{id}/start|stop|pause` — 控制任务 - `GET /api/tasks/{id}/logs` — 查看日志 **文章** - `GET /api/articles` — 列表(支持 status 筛选) - `GET/PUT/DELETE /api/articles/{id}` — 详情/更新/删除 - `POST /api/articles/batch` — 批量操作(status/review/publish/delete) - `POST /api/articles/{id}/review` — 审核(approve/reject) - `POST /api/articles/{id}/publish` — 手动发布 - `POST /api/articles/{id}/like` — 前台点赞 **GEO 专项** - `GET/POST/PUT/DELETE /api/brands[/{id}]` — 品牌 CRUD - `POST /api/brands/{id}/scan` — 品牌提及扫描 - `GET /api/brands/{id}/mentions|stats|export` — 提及/统计/导出 - `GET/POST /api/keyword-lab/batches` — 关键词批次管理 - `GET/POST /api/citation-targets[/{id}]` — 引用目标管理 ### CLI 命令 ```bash php cli/migrate.php # 初始化数据库(建表 + 种子 + 默认管理员) php cli/worker.php start # 后台启动常驻 worker php cli/worker.php stop # 停止 worker php cli/worker.php status # 查看 pid/存活/心跳/运行任务 php cli/worker.php run-once # 执行一轮调度后退出(调试用) php cli/worker.php cleanup # 孤儿进程清理 + 卡死任务复位 ``` ### 默认配置值 | 配置项 | 默认值 | 说明 | |--------|--------|------| | `task_batch_size` | 10 | 单轮批量生成条数 | | `auto_publish_after_review` | 0 | 审核通过即发布开关 | | `session_timeout` | 7200s | 会话超时时间 | | `worker_interval` | 60s | worker 轮询间隔 | | `upload_max_size` | 5MB | 图片上传大小上限 | ### 访问通道 - **前台**:`https://geo.sanlizhenpin.com/` - **后台登录**:`https://geo.sanlizhenpin.com/login` - **Sitemap**:`https://geo.sanlizhenpin.com/sitemap.xml` --- ## 文档资源 - `README.md` — 环境要求、安装、启动、目录说明 - `docs/PRD.md` — 产品需求文档(P0/P1/P2 需求池、用户故事、验收标准) - `docs/ARCHITECTURE.md` — 系统架构设计(组件职责、数据结构、接口清单、时序图、任务分解) - `database/schema.sql` — 完整 DDL 与种子数据 - `config/config.php` — 应用配置、Provider 预设、路由表 --- *本文档基于 geo-ai-cms 项目实际代码与文档生成,最后更新:2026-09-21*