文章

开发文档

PHP 站群系统(SEO / GEO 站群优化系统)开发文档

136 分钟 5.4w 字 12 阅读

PHP 站群系统(SEO / GEO 站群优化系统)开发文档

文档版本:v1.0 更新日期:2026-10-11 目标读者:开发人员、产品负责人、测试人员 技术栈:PHP + HTML + JS + Layui + MySQL + Nginx(宝塔面板部署) 开发辅助:WorkBuddyAI(腾讯 AI Agent 工作台,用于 AI 辅助编码与自动化开发流程)


目录

  1. 项目概述
  1. 需求分析与补充(PRD)
  1. 技术架构与总体设计
  1. 数据库设计
  1. 模块详细设计
  1. 接口设计(API)
  1. DeepSeek 大模型集成设计
  1. 宝塔部署与泛域名方案
  1. 搜索引擎推送设计
  1. 定时任务设计
  1. 安全设计
  1. 测试与验收
  1. 开发计划与里程碑
  1. 合规与风险提示
  1. 附录

1. 项目概述

1.1 项目背景

用户需要搭建一套 站群管理系统,用于批量创建、管理、发布独立子站页面,并通过传统 SEO(搜索引擎优化)与 GEO(生成式引擎优化,面向 AI 搜索引擎)手段获取自然流量与客户线索。

系统核心诉求是 全自动化:从关键词挖掘、内容生成、页面发布、泛域名绑定,到搜索引擎推送、定时任务执行,全流程无需人工干预。

1.2 项目目标

编号目标说明
G1全自动建站输入描述词 + 引流配置,AI 自动生成独立页面并绑定泛域名子域
G2全自动优化AI 自动挖掘核心词 / 长尾词,自动生成内容并持续扩充
G3全自动推送定时调用百度 / 必应 / Google/360 站长 API 推送新页面
G4GEO 友好页面按生成式引擎优化标准构建,提升被 AI 搜索引用概率
G5集中管控Layui 后台统一管理:管理员、页面、域名、关键词、任务、日志

1.3 核心能力一览

  • 管理员登录与 RBAC 权限管理(超级管理员 / 普通管理员)
  • 多域名管理,支持多个根域名及各自泛解析(*.xxx.com / *.xxx.xxx.com)
  • 页面管理:创建 / 修改 / 预览 / 发布 / 下线 / 删除,版本留痕
  • AI 内容生成:接入 DeepSeek API,按描述词 + 关键词自动生成整页内容
  • 引流配置:页面自动携带 QQ 客服号 / 微信客服二维码(悬浮客服组件)
  • 泛域名自动绑定:生成随机字符子域,前台 {随机字符}.xxx.xxx.com 直接可访问
  • 搜索引擎 API 推送:百度普通收录 / 快速收录、必应 Batch、Google Indexing、360
  • 关键词与长尾词全自动体系:AI 挖掘 + 词库管理 + 定时扩充
  • 定时任务中心:内容生成、推送、静态化、sitemap、日志清理等
  • GEO 优化:结构化数据(schema.org)、FAQ 区块、引用友好内容、llms.txt
  • 数据统计:访问量、推送成功率、AI 调用成本、收录状态跟踪

1.4 术语表

术语说明
SEO搜索引擎优化(Search Engine Optimization),面向传统搜索引擎排名
GEO生成式引擎优化(Generative Engine Optimization),面向 AI 搜索引擎(豆包、DeepSeek、ChatGPT、Perplexity、AI Overviews 等),目标是让内容被 AI 直接引用为答案来源
泛域名解析DNS 通配符解析,将 *.domain.com 的所有子域指向同一服务器
子域 / Subdomain泛解析下随机生成的独立子域名,如 a1b2c3.xxx.com
长尾词搜索量低、竞争小、转化意图明确的多词组合关键词
静态化将动态页面输出为静态 HTML 文件,提升访问速度与抓取友好度
收录推送通过站长平台官方 API 主动提交新 URL,加速搜索引擎收录
引流配置页面内的客服转化元素:QQ 号、微信二维码、联系表单等

2. 需求分析与补充(PRD)

本章在用户原始需求基础上补充完整需求,作为开发验收基线。

2.1 用户角色与权限模型

角色权限范围
超级管理员(role=1)全部功能:管理员管理、系统配置、域名管理、页面管理、关键词、推送、任务、日志、财务 / 成本查看
普通管理员(role=2)页面管理、关键词管理、数据统计;不可修改系统配置与管理员账号

补充说明:

  • 登录使用账号密码 + 图形验证码,支持 "记住我"(7 天 Cookie)。
  • 密码使用 password_hash()(bcrypt)存储,禁止明文。
  • 所有后台操作写入操作日志(operation\_log)。

2.2 功能需求清单

F1 管理员管理模块

编号功能说明
F1.1管理员列表分页、搜索(用户名 / 昵称 / 状态)
F1.2新增管理员用户名、昵称、密码、角色、状态
F1.3编辑管理员修改资料、重置密码
F1.4禁用 / 启用禁用后立即无法登录
F1.5删除管理员不允许删除自身与最后一个超级管理员
F1.6登录日志记录登录 IP、时间、结果

F2 域名管理模块(泛域名)

编号功能说明
F2.1域名列表展示根域名、泛解析状态、SSL 状态、绑定页面数
F2.2新增域名录入根域名(如 xxx.com),开启泛解析开关
F2.3泛解析引导展示 DNS 配置指引(A 记录 * → 服务器 IP),并校验解析是否生效
F2.4搜索引擎配置每个域名独立配置百度 token、必应 API Key、Google 凭证、360 token
F2.5删除域名仅允许在无绑定页面时删除
F2.6状态控制启用 / 暂停该域名下所有页面的发布与推送

F3 页面管理模块

编号功能说明
F3.1页面列表分页、按域名 / 状态 / 关键词 / 时间筛选;展示 URL、收录状态、访问量
F3.2创建页面填写:标题、描述词(内容主题)、选择模板、引流配置(QQ 号 / 微信二维码)、关键词、GEO 开关;点击 "自动生成"
F3.3修改页面修改描述词后重新生成,保留历史版本(page\_revision)
F3.4预览页面后台 iframe 预览生成效果
F3.5发布 / 下线发布后生成静态文件并写入推送队列;下线后 404 并停止推送
F3.6批量操作批量发布、批量下线、批量删除
F3.7自动绑定泛域名创建成功后自动生成随机字符子域(如 k8f2x9.xxx.com),无需人工配置
F3.8访问统计每页面展示 PV/UV(基于 visit\_log 或 Redis 计数)

F4 AI 内容生成模块(DeepSeek)

编号功能说明
F4.1API 配置后台配置 DeepSeek API Key、模型(默认 deepseek-chat)、Base URL、超时、并发数
F4.2单页生成按描述词 + 标题 + 关键词 + 模板类型生成整页 HTML 内容
F4.3批量生成对关键词池批量生成页面(定时任务驱动)
F4.4内容校验生成后自动检查:字数下限、敏感词、重复率;不合格自动重试或标记
F4.5成本统计记录每次调用的 token 用量与预估费用,后台可视化
F4.6失败降级API 异常时进入重试队列,超过阈值停止并告警,不影响已发布页面

F5 前台访问模块

编号功能说明
F5.1泛域名访问{随机字符}.xxx.xxx.com 直接访问独立静态页面
F5.2模板渲染多套行业模板(通用 / 科技 / 生活 / 教育等),响应式布局
F5.3引流组件右下角悬浮客服:QQ 一键会话 / 微信二维码弹窗;页脚联系方式
F5.4静态化发布时生成静态 HTML,Nginx 直接托管,降低服务器压力
F5.5404 页面未绑定子域统一返回友好 404
F5.6内容结构面包屑、H1/H2 层级、FAQ 区块、相关阅读(GEO 友好)

F6 关键词与长尾词自动化模块

编号功能说明
F6.1词库管理核心词、长尾词、地域词分类管理;去重;状态流转(待生成 / 已生成 / 已废弃)
F6.2手工添加后台手动添加关键词,可一键生成页面
F6.3AI 挖掘定时任务调用 DeepSeek,基于种子词批量生成长尾词(带搜索意图分类)
F6.4自动建页词库中 "待生成" 的长尾词自动进入生成队列,全自动产出页面
F6.5词 - 页绑定一个词对应一个页面(一对一),避免重复内容
F6.6扩展策略地域 + 核心词、疑问句式(怎么办 / 是什么 / 多少钱)、对比句式等模板化扩展

F7 搜索引擎推送模块

编号功能说明
F7.1推送配置各引擎开关、每日配额、推送间隔
F7.2自动推送新发布页面自动入队,定时任务批量推送
F7.3推送日志记录每次推送的引擎、URL、HTTP 状态、返回内容、成功 / 失败
F7.4配额管理按引擎每日配额控制推送量,超限自动暂停次日恢复
F7.5失败重试网络类失败自动重试 3 次;业务类失败(如 over quota)停止并记录
F7.6sitemap 生成自动生成 / 更新 sitemap.xml 与各子域 URL 列表

F8 定时任务中心

编号功能说明
F8.1任务列表查看所有内置任务的 cron 表达式、上次 / 下次执行时间、状态
F8.2任务开关每个任务可独立启用 / 停用,可手动立即执行
F8.3任务日志每次执行的开始 / 结束时间、结果摘要、错误信息
F8.4守护机制任务互斥锁,防止重复执行;超时自动中断

F9 GEO 优化模块(补充需求)

编号功能说明
F9.1结构化数据自动生成 schema.org JSON-LD(Article / FAQPage / Product / Organization)
F9.2FAQ 区块AI 基于页面主题自动生成 3-5 条高频问答,直接可被 AI 引擎引用
F9.3引用友好正文首段直接回答问题(Q\&A 式开头),语义层级清晰,统计性、列表化内容占比提升
F9.4实体与权威信号输出作者 / 机构 / 日期 / 引用来源等字段,增强可信度信号
F9.5llms.txt自动生成 llms.txt,向 LLM 爬虫提供结构化站点说明与链接索引
F9.6爬虫策略robots.txt 默认允许 GPTBot / ClaudeBot / PerplexityBot / Bingbot 等(可配置)
F9.7被引监测(可选)定时向 AI 引擎提问页面核心词,记录页面是否被引用(人工 / 半自动)

F10 统计与日志

编号功能说明
F10.1总览看板页面总数、已推送数、今日访问量、AI 调用成本、任务健康度
F10.2访问统计按日 / 页面 / 来源统计 PV、UV
F10.3推送统计各引擎成功率、推送量趋势
F10.4操作日志后台所有管理操作留痕
F10.5AI 成本token 用量、费用估算、失败率

2.3 非功能需求

类别要求
性能静态页面首屏 < 1s;后台接口 < 500ms;单台服务器支撑 500+ 泛域名页面
并发静态页面由 Nginx 直接服务,不经过 PHP 动态解析(泛域名页面除外)
可用性定时任务失败自动重试;AI 不可用时系统其余功能不受影响
安全见 第 11 章 安全设计
可维护性MVC 分层,配置化模板,全部功能可在后台开关
扩展性支持后续接入更多搜索引擎、更多 AI 模型(兼容 OpenAI 协议)
兼容性PHP 7.4+(推荐 8.1/8.2),MySQL 5.7+/8.0,Chrome/Edge 浏览器

3. 技术架构与总体设计

3.1 技术选型

层次选型说明
后端语言PHP 7.0+原生 PHP + 轻量自研 MVC 框架(不引入 Composer 重依赖,也可选 ThinkPHP 6)
前端框架Layui 2.9.x后台管理界面(表格、表单、弹层、树形)
前台渲染HTML5 + CSS3 + 原生 JS模板引擎输出静态 HTML,响应式
数据库MySQL 5.7 / 8.0utf8mb4
缓存(可选)Redis任务锁、计数器、会话
Web 服务器Nginx(宝塔)泛域名 server_name *.xxx.com,静态化页面直接托管
定时任务宝塔计划任务 /crontab调用 CLI 脚本或 curl 触发任务入口
AI 服务DeepSeek APIOpenAI 兼容协议,deepseek-chat 模型
推送服务各站长平台官方 API百度 / 必应 / Google / 360

3.2 总体架构图

flowchart TB
    subgraph 前台访问层
        Browser[用户浏览器 / AI 爬虫<br/>GPTBot / ClaudeBot / PerplexityBot]
        StaticHTML[静态 HTML 页面<br/>随机字符.xxx.com]
    end

    subgraph Web层[Nginx(宝塔)]
        NG[泛域名 server_name *.xxx.com<br/>静态文件直出 / 动态接口转发]
    end

    subgraph 应用层[PHP 应用]
        MVC[MVC 核心<br/>路由 / 控制器 / 模型 / 视图]
        Admin[Layui 后台<br/>管理员 / 页面 / 域名 / 关键词 / 任务]
        AI[AI 内容生成引擎<br/>DeepSeek Client]
        Push[搜索引擎推送引擎<br/>百度 / 必应 / Google / 360]
        Task[定时任务调度器<br/>互斥锁 + 队列]
        Geo[GEO 引擎<br/>JSON-LD / FAQ / llms.txt / robots]
        Static[静态化引擎<br/>模板渲染 → HTML 落盘]
    end

    subgraph 数据层
        DB[(MySQL<br/>admin/domain/page/keyword/...)]
        Redis[(Redis<br/>锁 / 计数 / 队列)]
        FILES[(静态页面文件<br/>/www/wwwroot/site/html/)]
    end

    subgraph 外部服务
        DS[DeepSeek API]
        SE[站长平台<br/>百度/必应/Google/360]
        DNS[DNS 服务商<br/>泛解析 *.xxx.com]
    end

    Browser --> NG
    StaticHTML --> NG
    NG --> MVC
    Admin --> MVC
    MVC --> AI --> DS
    MVC --> Push --> SE
    MVC --> Task
    MVC --> Geo
    MVC --> Static --> FILES
    MVC --> DB
    Task --> DB
    Push --> DB
    AI --> DB
    MVC --> Redis
    NG -.域名校验.-> DNS

3.3 核心流程图

流程一:全自动页面创建与发布

sequenceDiagram
    participant A as 管理员/定时任务
    participant B as 后台控制器
    participant C as AI引擎(DeepSeek)
    participant D as 数据库
    participant E as 静态化引擎
    participant F as Nginx/前台

    A->>B: 提交描述词+关键词+引流配置
    B->>B: 校验输入、生成随机子域字符
    B->>D: 创建 page 记录(草稿) + 版本
    B->>C: 调用 DeepSeek 生成内容
    C-->>B: 返回 HTML 内容
    B->>B: 内容校验(字数/敏感词/重复)
    alt 校验通过
        B->>D: 更新 page(内容+GEO元数据)
        B->>E: 渲染模板 → 生成静态文件
        E-->>B: 静态文件路径
        B->>D: 状态置为"已发布" + 入推送队列
        B-->>A: 返回页面URL(随机字符.xxx.com)
        F-->>A: 前台直接访问
    else 校验失败
        B->>B: 重试生成(最多3次)
        B->>D: 记录失败原因
        B-->>A: 返回失败提示
    end

流程二:搜索引擎自动推送

flowchart LR
    P[页面发布] --> Q[写入推送队列<br/>push_queue]
    Q --> C[定时任务触发<br/>每30分钟]
    C --> S{引擎开关与配额检查}
    S -->|百度| B[百度 API<br/>data.zz.baidu.com]
    S -->|必应| Y[必应 Batch API]
    S -->|Google| G[Google Indexing API]
    S -->|360| Z[360 站长 API]
    B --> L[写入 push_log]
    Y --> L
    G --> L
    Z --> L
    L --> R{结果}
    R -->|成功| OK[更新页面收录状态]
    R -->|失败| RT[按类型重试或终止]

流程三:关键词 / 长尾词全自动体系

flowchart TB
    A[种子词库] --> B[定时任务: AI长尾词挖掘<br/>每日 01:00]
    B --> C[去重/过滤入库<br/>keyword 状态=待生成]
    C --> D[定时任务: 批量自动建页<br/>每 2 小时]
    D --> E[AI 生成内容 → 发布页面]
    E --> F[词状态=已生成<br/>绑定 page_id]
    F --> G[进入推送队列]

3.4 项目目录结构(建议)

/www/wwwroot/zhanqun/                 # 站点根目录(宝塔站点目录)

├── app/                              # 应用层

│   ├── controllers/                  # 控制器

│   │   ├── admin/                    # 后台控制器

│   │   │   ├── LoginController.php

│   │   │   ├── AdminController.php

│   │   │   ├── DomainController.php

│   │   │   ├── PageController.php

│   │   │   ├── KeywordController.php

│   │   │   ├── PushController.php

│   │   │   ├── TaskController.php

│   │   │   ├── AiController.php

│   │   │   ├── SettingController.php

│   │   │   └── StatController.php

│   │   └── front/                     # 前台控制器

│   │       ├── PageController.php    # 泛域名页面渲染

│   │       └── IndexController.php   # 根域名入口/404

│   ├── models/                        # 数据模型

│   ├── services/                      # 业务服务

│   │   ├── AiService.php              # DeepSeek 调用

│   │   ├── PushService.php            # 搜索引擎推送

│   │   ├── KeywordService.php         # 长尾词挖掘

│   │   ├── StaticService.php          # 静态化

│   │   ├── GeoService.php             # GEO 元数据生成

│   │   └── TaskService.php            # 定时任务

│   ├── lib/                           # 基础库

│   │   ├── Db.php                     # PDO 封装

│   │   ├── Redis.php

│   │   ├── Request.php

│   │   ├── Response.php

│   │   ├── Auth.php                   # 登录认证

│   │   ├── Csrf.php

│   │   └── Helper.php

│   └── views/                         # 视图

│       ├── admin/                     # Layui 后台页面

│       └── front/                     # 前台模板

├── public/                            # Web 入口(宝塔运行目录指向此处)

│   ├── index.php                      # 前台入口(泛域名路由)

│   ├── admin.php                      # 后台入口

│   ├── static/                        # 静态资源 css/js/images

│   └── robots.txt

├── storage/                           # 运行时数据(不可直接访问)

│   ├── html/                          # 生成的静态页面文件

│   ├── qrcode/                        # 微信二维码素材

│   ├── logs/                          # 运行日志

│   └── cache/

├── config/

│   ├── database.php                   # 数据库配置

│   ├── app.php                        # 应用配置

│   └── ai.php                         # DeepSeek 配置

├── cron/                              # 定时任务 CLI 入口

│   ├── keyword.php                    # 长尾词挖掘

│   ├── build\_page.php                 # 批量自动建页

│   ├── push.php                       # 搜索引擎推送

│   ├── sitemap.php                    # sitemap 生成

│   └── cleanup.php                    # 日志清理

└── install/                           # 安装向导

4. 数据库设计

4.1 ER 关系概览

erDiagram
    ADMIN ||--o{ OPERATION_LOG : "操作"
    DOMAIN ||--o{ PAGE : "拥有"
    DOMAIN ||--o{ KEYWORD : "拥有"
    PAGE ||--o{ PAGE_REVISION : "版本"
    PAGE ||--o{ PUSH_LOG : "推送"
    PAGE ||--o| KEYWORD : "绑定词"
    PAGE ||--o{ VISIT_LOG : "访问"
    KEYWORD ||--o{ AI_LOG : "生成记录"

4.2 数据表明细

所有表使用 utf8mb4 ,主键自增 bigint ,时间字段 datetime 。以下字段类型为建议值,可按需微调。

表 t\_admin 管理员

字段类型说明
idbigint PK主键
usernamevarchar(50) unique登录名
passwordvarchar(255)password\_hash 加密
nicknamevarchar(50)昵称
roletinyint1 = 超级管理员 2 = 普通管理员
statustinyint1 = 启用 0 = 禁用
emailvarchar(100)邮箱
phonevarchar(20)手机号
last\_login\_ipvarchar(50)最近登录 IP
last\_login\_timedatetime最近登录时间
created\_at / updated\_atdatetime创建 / 更新时间

表 t\_domain 域名配置

字段类型说明
idbigint PK主键
domainvarchar(100) unique根域名,如 xxx.com
is\_wildcardtinyint1 = 已开启泛解析 0 = 未开启
wildcard\_prefixvarchar(20)随机子域字符集(默认 abcdefghijklmnopqrstuvwxyz0123456789)
sub\_lentinyint随机子域长度(默认 6)
ssl\_statustinyint0 = 未配置 1 = 已配置泛域名证书
enginesjson推送配置 JSON:{"baidu":{"token":"","enabled":1,"daily_quota":1000},"bing":{"apikey":"","enabled":1,"daily_quota":10000},"google":{"json":"","enabled":0,"daily_quota":200},"so360":{"token":"","enabled":0}}
statustinyint1 = 启用 0 = 暂停
remarkvarchar(255)备注
created\_at / updated\_atdatetime时间

表 t\_page 页面

字段类型说明
idbigint PK主键
domain\_idbigint所属域名(FK → t\_domain)
subdomainvarchar(30) unique随机子域字符(如 k8f2x9)
full\_domainvarchar(130) unique完整域名 k8f2x9.xxx.com
titlevarchar(200)页面标题(H1/Title)
descriptionvarchar(300)页面描述(meta description)
keywordsvarchar(300)页面关键词(meta keywords)
description\_prompttext创建时输入的描述词(内容主题)
content\_htmllongtext生成的正文 HTML(不含模板外壳)
template\_idbigint模板 ID(FK → t\_page\_template)
qq\_numbervarchar(20)引流 QQ 号(可空)
wechat\_qrvarchar(255)微信二维码图片路径(可空)
statustinyint1 = 草稿 2 = 已发布 3 = 已下线
is\_statictinyint1 = 已生成静态文件
static\_pathvarchar(255)静态文件相对路径
geo\_enabledtinyint1 = 启用 GEO 优化
geo\_jsonldtext生成的 JSON-LD 结构化数据
faq\_jsontextFAQ 区块数据 JSON
sourcevarchar(20)来源:manual /keyword/batch
keyword\_idbigint绑定关键词 ID(可空)
publish\_timedatetime发布时间
view\_countbigint访问计数(PV)
index\_statusvarchar(20)收录状态:pending/pushed/indexed/unknown
created\_at / updated\_atdatetime时间

表 t\_page\_template 页面模板

字段类型说明
idbigint PK主键
namevarchar(50)模板名称
industryvarchar(50)行业分类(通用 / 科技 / 生活 / 教育 / 本地服务)
html\_pathvarchar(255)模板文件路径(app/views/front/xx.html)
layout\_configjson布局配置(配色、模块开关)
is\_defaulttinyint是否默认模板
statustinyint1 = 启用 0 = 停用

表 t\_page\_revision 页面版本

字段类型说明
idbigint PK主键
page\_idbigint页面 ID
title / description / content\_html...版本快照
admin\_idbigint操作人
created\_atdatetime版本时间

表 t\_keyword 关键词库

字段类型说明
idbigint PK主键
domain\_idbigint所属域名
keywordvarchar(200) unique(domain\_id)关键词文本
keyword\_typetinyint1 = 核心词 2 = 长尾词 3 = 地域词
intentvarchar(20)意图分类:info/buy/compare/nav
sourcevarchar(20)manual / ai / template
statustinyint1 = 待生成 2 = 已生成 3 = 已废弃
page\_idbigint绑定页面 ID(可空)
search\_volumeint搜索量(可空,估算)
difficultytinyint竞争度 1-100(可空)
created\_at / updated\_atdatetime时间

表 t\_push\_log 推送日志

字段类型说明
idbigint PK主键
page\_idbigint页面 ID
enginevarchar(20)baidu / bing / google / so360
urlvarchar(200)推送 URL
http\_codeintHTTP 状态码
resulttext返回原文(JSON)
successtinyint1 = 成功 0 = 失败
error\_msgvarchar(255)错误信息
created\_atdatetime推送时间

表 t\_push\_queue 推送队列

字段类型说明
idbigint PK主键
page\_idbigint页面 ID
enginevarchar(20)目标引擎
urlvarchar(200)URL
statustinyint0 = 待推送 1 = 已推送 2 = 失败 3 = 跳过
retry\_counttinyint已重试次数
next\_try\_timedatetime下次尝试时间
created\_at / updated\_atdatetime时间

表 t\_cron\_task 定时任务

字段类型说明
idbigint PK主键
task\_namevarchar(50)任务名
task\_keyvarchar(50) unique唯一标识(keyword/build/push/sitemap/cleanup)
cron\_exprvarchar(50)cron 表达式(展示用)
enabledtinyint1 = 启用 0 = 停用
runningtinyint1 = 执行中(互斥锁)
last\_run\_atdatetime上次执行时间
last\_resultvarchar(255)上次结果摘要
fail\_countint连续失败次数
remarkvarchar(255)备注

表 t\_ai\_log AI 调用日志

字段类型说明
idbigint PK主键
task\_typevarchar(20)page\_gen / keyword / faq / geo
modelvarchar(50)模型名
prompt\_hashchar(32)Prompt 内容哈希(去重)
input\_tokensint输入 token
output\_tokensint输出 token
costdecimal(10,4)估算费用(元)
statustinyint1 = 成功 0 = 失败
error\_msgvarchar(255)错误信息
created\_atdatetime时间

表 t\_visit\_log 访问日志

字段类型说明
idbigint PK主键
page\_idbigint页面 ID
ipvarchar(50)访客 IP
uavarchar(255)User-Agent
referervarchar(255)来源
visit\_timedatetime访问时间

表 t\_settings 系统配置

字段类型说明
idbigint PK主键
group\_namevarchar(30)分组:ai/push/cron/system/geo
keyvarchar(50) unique配置键
valuetext配置值
remarkvarchar(255)说明
updated\_atdatetime更新时间

表 t\_operation\_log 操作日志

字段类型说明
idbigint PK主键
admin\_idbigint操作人
actionvarchar(50)动作(page\_create/page\_update/...)
detailvarchar(500)详情
ipvarchar(50)操作 IP
created\_atdatetime时间

5. 模块详细设计

5.1 管理员认证与权限

  • 登录页:Layui 表单 + 图形验证码(GD 库生成),失败 5 次锁定 10 分钟。
  • 会话:$_SESSION(或 Redis session),后台每个请求校验 Auth::check()。
  • 权限:超级管理员全量;普通管理员在控制器入口做 role 判断(中间件式)。
  • 安全:密码 password_hash()/password_verify();Cookie "记住我" 用随机 token 存 remember_token 字段。

5.2 域名与泛域名管理

  • 新增域名 → 写入 t_domain → 后台展示 DNS 配置指引:
  • A 记录:* → 服务器 IP,TTL 600(示例:阿里云 / 腾讯云 DNSPod 均可)
  • 若根域也需访问,另配 A 记录 @ → 服务器 IP
  • 泛解析生效校验:gethostbyname('test.' . $domain) 是否等于服务器 IP,或前端提示手动确认。
  • 每个域名的搜索引擎配置独立存储于 t_domain.engines JSON。
  • 域名暂停:t_domain.status=0 时,前台该域名下所有子域返回 404,推送任务跳过。

5.3 页面管理

创建页面前端交互(Layui 弹层表单):

\[域名]          下拉选择(启用中的域名)

\[标题]          输入框(可留空由 AI 生成)

\[描述词]        文本域(必填,如"桂林旅游攻略")

\[关键词]        输入框(可多个,逗号分隔)

\[模板]          下拉选择(按行业)

\[引流QQ号]      输入框(可空)

\[微信二维码]    上传图片(可空)

\[GEO优化]      开关(默认开)

\[按钮]          立即生成
  • 点击 "立即生成":POST /admin/page/create → 生成随机子域 → 创建草稿 → 异步 / 同步调用 AI → 校验 → 发布。
  • 修改:进入编辑页,修改描述词后 "重新生成",旧内容存 t_page_revision。
  • 列表页:表格展示 + 操作列(预览 / 编辑 / 发布 / 下线 / 删除 / 推送记录)。

5.4 DeepSeek AI 内容生成引擎(AiService)

核心方法:

class AiService {

&#x20;   /\*\*

&#x20;    \* 生成整页内容

&#x20;    \* @param string \$title 标题

&#x20;    \* @param string \$prompt 描述词

&#x20;    \* @param array \$keywords 关键词列表

&#x20;    \* @param string \$templateType 模板类型

&#x20;    \* @return array{html:string, faq:array, jsonld:string}

&#x20;    \*/

&#x20;   public function generatePage(\$title, \$prompt, \$keywords, \$templateType) { ... }

&#x20;   /\*\* 挖掘长尾词 \*/

&#x20;   public function generateKeywords(\$seedWords, \$count = 30) { ... }

&#x20;   /\*\* 生成 FAQ \*/

&#x20;   public function generateFaq(\$title, \$content, \$count = 4) { ... }

&#x20;   /\*\* 生成 GEO 元数据(jsonld) \*/

&#x20;   public function generateGeoMeta(\$page) { ... }

}

调用协议(DeepSeek,OpenAI 兼容):

POST https://api.deepseek.com/chat/completions

Authorization: Bearer {API\_KEY}

Content-Type: application/json

{

&#x20; "model": "deepseek-chat",

&#x20; "messages": \[

&#x20;   {"role": "system", "content": "你是一名资深SEO内容编辑..."},

&#x20;   {"role": "user", "content": "..."}

&#x20; ],

&#x20; "temperature": 0.8,

&#x20; "max\_tokens": 3000,

&#x20; "stream": false

}

限流与降级策略:

  • 单次生成超时 60s,失败重试 2 次(指数退避:5s / 15s)。
  • 并发控制:全局最大 2-3 个并发(防止触发 API 限流 429)。
  • 连续失败 10 次 → 任务进入 "暂停" 状态并写入 t_ai_log,后台看板告警。

5.5 前台渲染与静态化(StaticService)

  • 发布时执行:
  1. 取模板 HTML 外壳(占位符:{title} {content} {qq} {wechat} {jsonld} {faq} {footer}...)
  1. 填充生成内容 → 完整 HTML
  1. 写入 storage/html/{subdomain}/index.html
  1. 更新 t_page.is_static=1, static_path
  • Nginx 静态托管优先:try_files 命中静态文件直接返回,未命中走 PHP 路由渲染(兼容未静态化页面)。
  • 根域名访问(如 xxx.com):展示站点导航页(可配置)或 404。

5.6 关键词 / 长尾词全自动体系(KeywordService)

  • AI 挖掘 Prompt 模板(见 7.3),产出 JSON 数组:["桂林旅游攻略", "桂林旅游攻略多少钱", "桂林两日游最佳路线", ...]
  • 入库前去重(按 domain_id + keyword unique),过滤已有词。
  • 自动建页任务(cron/build\_page.php):取 status=1 待生成 的词,逐条走 5.3 创建流程,成功后将词状态置 2 并绑定 page\_id。
  • 模板化扩展:内置句式模板(疑问式 / 对比式 / 地域式 / 场景式),作为 AI 挖掘的种子补充。

5.7 搜索引擎推送(PushService)

推送引擎抽象:

interface PushEngine {

&#x20;   public function push(string \$url): PushResult;   // 单条

&#x20;   public function pushBatch(array \$urls): array;    // 批量

&#x20;   public function name(): string;

}
  • 百度:POST http://data.zz.baidu.com/urls?site={域名}&token={token},body 为 URL 列表(每行一条),一次 ≤ 10 条。
  • 必应:POST https://ssl.bing.com/webmaster/api.svc/json/SubmitUrlbatch?apikey={key},body {"siteUrl":"https://xxx.com","urlList":["..."]},每日上限 10000。
  • Google:POST https://indexing.googleapis.com/v3/urlNotifications:publish(需 Service Account JWT 鉴权),每日上限 200。
  • 360:POST https://url.so.com/s/{token}(360 站长平台,可选)。

流程:发布 → 写 t_push_queue(按引擎各一条)→ 定时任务消费队列 → 写 t_push_log → 配额控制。

5.8 定时任务中心(TaskService)

  • 统一入口:cron/{key}.php,由宝塔计划任务按 cron 表达式调用(php /www/wwwroot/zhanqun/cron/push.php)。
  • 互斥锁:Redis SET NX EX 3600 或数据库锁表(t_cron_task.running + 时间戳),防止任务重叠。
  • 执行后更新 t_cron_task 的 last_run_at / last_result / fail_count。
任务 key说明建议 cron建议频率
keywordAI 长尾词挖掘0 1 * * *每天 01:00
build\_page批量自动建页0 */2 * * *每 2 小时
push搜索引擎推送*/30 * * * *每 30 分钟
sitemap生成 / 更新 sitemap.xml0 */6 * * *每 6 小时
cleanup清理过期日志 / 临时文件0 3 * * 1每周一 03:00
geo\_checkGEO 被引监测(可选)0 6 * * 1每周一 06:00

5.9 GEO 优化模块(GeoService)

生成内容时同步产出:

  1. JSON-LD 结构化数据:
{

&#x20; "@context": "https://schema.org",

&#x20; "@type": "Article",

&#x20; "headline": "桂林旅游攻略:5天4夜行程安排",

&#x20; "description": "...",

&#x20; "datePublished": "2026-10-11",

&#x20; "keywords": \["桂林旅游", "桂林攻略"],

&#x20; "author": {"@type": "Organization", "name": "站点名称"},

&#x20; "mainEntityOfPage": {"@type": "WebPage", "@id": "https://xxx.xxx.com/"}

}
  1. FAQPage:AI 生成 3-5 条问答,前台折叠展示,JSON-LD 同步输出。
  1. 引用友好正文:首段直接回答核心问题(Q\&A 式开头);H2 语义化小标题;正文含列表、表格、数据等结构化表达。
  1. llms.txt:storage/html/llms.txt 自动生成站点与页面索引。
  1. robots.txt:允许 GPTBot、ClaudeBot、PerplexityBot、Bingbot、Google-Extended(可配置开关)。
  1. 权威信号:页面输出作者 / 机构、发布时间、来源引用字段。

5.10 统计与日志

  • 访问统计:静态页面内嵌 JS 上报 /api/visit?page_id=xx(异步,写 t_visit_log),或 Nginx access log 解析;PV 直接累加 t_page.view_count。
  • 看板:t_settings 存汇总缓存,定时任务刷新当日数据。
  • AI 成本:t_ai_log.cost 按 DeepSeek 单价估算(deepseek-chat 按官方刊例价,可在配置中填写单价)。

6. 接口设计(API)

统一前缀:后台 /admin/* (JSON 响应 {code:0,msg,data} ,code=0 成功);前台 /api/* 。所有写操作带 CSRF Token(header X-CSRF-Token )。

6.1 认证

方法路径说明
POST/admin/login登录(username/password/captcha)
POST/admin/logout退出
GET/admin/captcha图形验证码

6.2 管理员

方法路径说明
GET/admin/admin/list管理员列表(分页 / 搜索)
POST/admin/admin/add新增管理员
POST/admin/admin/edit编辑管理员
POST/admin/admin/delete删除管理员
POST/admin/admin/resetPwd重置密码
GET/admin/admin/loginLog登录日志

6.3 域名

方法路径说明
GET/admin/domain/list域名列表
POST/admin/domain/add新增域名
POST/admin/domain/edit编辑域名(含 engines 配置)
POST/admin/domain/delete删除域名
POST/admin/domain/checkDns校验泛解析是否生效

6.4 页面

方法路径说明
GET/admin/page/list页面列表
GET/admin/page/detail页面详情
POST/admin/page/create创建页面(AI 生成)
POST/admin/page/update修改页面
POST/admin/page/regenerate重新 AI 生成
POST/admin/page/publish发布(静态化 + 入推送队列)
POST/admin/page/offline下线
POST/admin/page/delete删除
POST/admin/page/batch批量操作
GET/admin/page/preview预览 HTML
GET/admin/page/revisions版本列表
GET/admin/page/pushLog推送记录

6.5 关键词

方法路径说明
GET/admin/keyword/list词库列表
POST/admin/keyword/add手工添加
POST/admin/keyword/delete删除
POST/admin/keyword/aiMine手动触发 AI 挖掘
POST/admin/keyword/buildPage指定词一键生成页面

6.6 AI 与系统

方法路径说明
GET/admin/ai/logAI 调用日志 / 成本
GET/admin/task/list任务列表
POST/admin/task/toggle启用 / 停用任务
POST/admin/task/run手动立即执行
GET/admin/stat/overview总览看板
GET/admin/stat/visit访问统计
GET/admin/stat/push推送统计
POST/admin/setting/save保存系统配置(含 DeepSeek Key)
GET/admin/setting/get读取配置(敏感字段脱敏)

6.7 前台

方法路径说明
GET/{subdomain}/index.html静态页面(Nginx 直出)
GET/api/visit访问上报
GET/api/page/check页面可用性探测(供监测用)

7. DeepSeek 大模型集成设计

7.1 配置项(t\_settings /config/ai.php)

配置键说明默认值
api\_keyDeepSeek API Key(后台配置,加密存储)空
base\_urlAPI Base URLhttps://api.deepseek.com
model模型deepseek-chat
temperature温度0.8
max\_tokens单次最大输出3000
timeout请求超时(秒)60
max\_concurrency最大并发3
retry\_times失败重试次数2
price\_input / price\_output单价(元 / 千 token)按官方刊例价填写

7.2 模型选择建议

  • 默认 deepseek-chat(V3 系列):性价比高,适合长文生成、长尾词挖掘。
  • 若需深度推理(如复杂 GEO 结构化策略),可选 deepseek-reasoner,成本更高,默认不启用。

7.3 Prompt 模板(示例)

页面内容生成 System Prompt

你是一名资深的SEO内容编辑与信息架构师。请根据用户提供的主题撰写一篇

原创、专业、对读者有用的中文文章。要求:

1\. 首段直接回答用户最关心的问题,100字以内。

2\. 使用 H2/H3 语义化小标题组织内容,至少4个部分。

3\. 适当使用列表、表格、数据增强结构化表达。

4\. 自然融入以下关键词:{keywords},禁止堆砌。

5\. 输出格式:Markdown(标题用#),正文1500-2500字。

页面内容生成 User Prompt

主题描述:{description\_prompt}

页面标题:{title}

核心关键词:{keywords}

目标读者:搜索这些词的普通用户

请生成文章正文内容。

长尾词挖掘 Prompt

请围绕以下种子词,从用户真实搜索意图出发(信息查询、价格咨询、

攻略方案、对比选择、本地服务等),生成 {count} 个长尾关键词。

要求:自然口语化、符合中文搜索习惯、避免重复。

只输出 JSON 数组,格式:\["词1","词2",...]

种子词:{seed\_words}

FAQ 生成 Prompt

根据以下文章内容,提炼 {count} 条用户最可能追问的高频问题,

并给出简洁、直接、可被引用的答案。只输出 JSON,格式:

\[{"q":"问题","a":"答案"}]

文章标题:{title}

文章内容:{content 前 2000 字}

7.4 内容校验与降级

生成后校验规则(AiService::validate):

校验项规则
字数正文 ≥ 800 字(可配置),不足则重试
敏感词内置敏感词库,命中则重新生成(最多 3 次)
重复率与同域名已有页面正文相似度 < 80%(simhash 快速比对)
结构必须含至少 2 个 H2 标题
JSON 解析FAQ / 长尾词输出必须可解析为合法 JSON

8. 宝塔部署与泛域名方案

8.1 环境准备(宝塔面板)

软件版本说明
Nginx1.22+Web 服务器
PHP8.1 / 8.2需启用扩展:pdo\_mysql、curl、mbstring、gd、openssl、fileinfo
MySQL5.7 / 8.0utf8mb4
Redis(可选)6.x/7.x锁、会话、计数器
宝塔最新稳定版面板管理

8.2 站点创建

  1. 宝塔 → 网站 → 添加站点:域名填写 xxx.com 与 *.xxx.com(泛域名),根目录 /www/wwwroot/zhanqun,运行目录选择 public。
  1. PHP 版本选择 8.1+,纯静态与 PHP 同时开启。
  1. 伪静态规则(Nginx):
\# 后台

location /admin {

&#x20;   try\_files \$uri \$uri/ /admin.php?\$query\_string;

}

\# 前台动态回退(静态文件不存在时)

location / {

&#x20;   try\_files \$uri \$uri/ /index.php?\$query\_string;

}

8.3 DNS 泛解析配置

在域名服务商(阿里云 / 腾讯云 DNSPod/Cloudflare 等)添加记录:

主机记录记录类型记录值TTL
*A服务器公网 IP600
@A服务器公网 IP(如需根域访问)600

注意: *. xxx.com 的泛解析会覆盖所有子域,无需为每个页面单独添加 DNS 记录。多级泛域名( *. xxx.xxx.com )同理,只需在对应域下添加 * A 记录。

8.4 Nginx 泛域名站点配置(宝塔自动生成,可参考)

server {

&#x20;   listen 80;

&#x20;   server\_name xxx.com \*.xxx.com;

&#x20;   root /www/wwwroot/zhanqun/public;

&#x20;   index index.php index.html;

&#x20;   \# 静态文件直出

&#x20;   location \~\* \\.(html|css|js|png|jpg|jpeg|gif|ico|svg|webp|woff2?)\$ {

&#x20;       expires 7d;

&#x20;       add\_header Cache-Control "public";

&#x20;   }

&#x20;   location / {

&#x20;       try\_files \$uri \$uri/ /index.php?\$query\_string;

&#x20;   }

&#x20;   location \~ \\.php\$ {

&#x20;       fastcgi\_pass unix:/tmp/php-cgi-82.sock;

&#x20;       fastcgi\_index index.php;

&#x20;       include fastcgi.conf;

&#x20;   }

}

8.5 SSL 泛域名证书

  • 泛域名证书(通配符证书)支持 *.xxx.com,宝塔 → 站点 → SSL → Let's Encrypt → 选择 "泛域名" 申请(需 DNS 验证)。
  • 泛域名证书必须通过 DNS 验证方式签发(Let's Encrypt 不支持 HTTP 验证签发通配符证书)。
  • 申请后开启 "强制 HTTPS",HTTP 301 跳转 HTTPS。

8.6 安装向导

  • 首次访问 install/index.php:检查环境 → 填写数据库 / 管理员 / DeepSeek Key → 写入配置文件 → 导入 install/schema.sql → 完成。
  • 安装完成后自动锁定(删除 install 目录或写入锁文件)。

8.7 宝塔计划任务(crontab 示例)

\# 每30分钟推送一次

\*/30 \* \* \* \* php /www/wwwroot/zhanqun/cron/push.php >> /www/wwwroot/zhanqun/storage/logs/push.log 2>&1

\# 每天1点挖掘长尾词

0 1 \* \* \* php /www/wwwroot/zhanqun/cron/keyword.php >> /www/wwwroot/zhanqun/storage/logs/keyword.log 2>&1

\# 每2小时批量建页

0 \*/2 \* \* \* php /www/wwwroot/zhanqun/cron/build\_page.php >> /www/wwwroot/zhanqun/storage/logs/build.log 2>&1

\# 每6小时更新sitemap

0 \*/6 \* \* \* php /www/wwwroot/zhanqun/cron/sitemap.php >> /www/wwwroot/zhanqun/storage/logs/sitemap.log 2>&1

也可在宝塔面板 → 计划任务 → 添加 Shell 脚本任务,按上述命令配置。


9. 搜索引擎推送设计

9.1 各引擎接入要点

引擎接入方式频率 / 配额失败特征
百度普通收录POST http://data.zz.baidu.com/urls?site={域名}&token={token},body 每行一个 URL,单次 ≤ 10 条每日有限额(以账号配额为准)over quota(超配额)、not existed(token 错)
百度快速收录POST https://ziyuan.baidu.com/linksubmit/index(需付费 / 资质)可选—
必应 BatchPOST https://ssl.bing.com/webmaster/api.svc/json/SubmitUrlbatch?apikey={key}每日 10000HTTP 401(Key 无效)
Google IndexingPOST https://indexing.googleapis.com/v3/urlNotifications:publish,Service Account JWT每日 200403(权限不足)
360POST https://url.so.com/s/{token}每日 500(以平台为准)非 200

9.2 推送策略

  1. 入队:页面发布成功 → 写入 t_push_queue(每个启用引擎一条)。
  1. 消费:定时任务每 30 分钟取 status=0 且 next_try_time <= now 的记录,按引擎分批推送。
  1. 配额控制:t_settings 记录每个引擎当日已推数量,超配额置 status=3 跳过,次日 0 点重置。
  1. 重试:网络错误(curl 超时 / 连接失败)重试 3 次,指数退避 10/30/60 分钟;业务错误(quota / 鉴权)直接终止并告警。
  1. 结果回写:成功 → t_push_log + 更新 t_page.index_status='pushed';失败 → 记录原因。
  1. 去重:URL 已在 t_push_log 中推送过且成功,跳过。

10. 定时任务设计

10.1 任务清单与调度

任务 key入口脚本说明cron
keywordcron/keyword.phpAI 长尾词挖掘(种子词 → 长尾词库)0 1 * * *
build\_pagecron/build\_page.php消费 "待生成" 关键词 → 自动建页发布0 */2 * * *
pushcron/push.php消费推送队列 → 各引擎推送*/30 * * * *
sitemapcron/sitemap.php生成 sitemap.xml/llms.txt0 */6 * * *
cleanupcron/cleanup.php清理 30 天前日志、临时文件0 3 * * 1
geo\_checkcron/geo\_check.phpGEO 被引监测(可选)0 6 * * 1

10.2 调度器实现要点

  • 互斥锁:任务开头 Redis::set($key.'_lock', 1, ['NX','EX'=>3600]),获取失败直接退出(防止上一轮未结束)。
  • 超时保护:set_time_limit(0) + 每处理 N 条检查内存 / 时间。
  • 结果记录:成功条数、失败条数、耗时写入 t_cron_task.last_result。
  • 连续失败告警:fail_count >= 10 → 写 t_ai_log/ 发送后台站内信或邮件(可选)。
  • 手动执行:后台 "立即执行" 通过 proc_open 或任务队列异步触发,避免阻塞请求。

10.3 全自动链路串联

关键词任务(每天) → 词库扩充 → 自动建页(每2h) → AI生成+发布

→ 静态化 → 推送队列 → 推送任务(每30min) → 各引擎

→ 结果回写 → sitemap(每6h) → 收录状态更新 → 统计看板

11. 安全设计

类别措施
登录安全图形验证码、失败锁定、password_hash、登录 IP 记录
会话安全Session 固定防护(登录后 session\_regenerate\_id)、"记住我" 随机 token
CSRF所有后台写请求校验 CSRF Token(Layui 表单携带 _token)
SQL 注入全部 PDO 预处理语句,禁止字符串拼接 SQL
XSS后台输出转义(htmlspecialchars);AI 生成内容入库前过滤 <script> 等危险标签
文件上传二维码仅允许 jpg/png/webp,MIME + 扩展名双校验,重命名存储,禁止执行目录
权限控制器入口角色校验;敏感接口(设置 / 管理员)仅超级管理员
密钥存储DeepSeek Key、推送 token 加密存储(AES-256-CBC,密钥放 config 且不进仓库)
限流登录接口、AI 生成接口按 IP / 账号限流
泛域名安全前台路由校验 subdomain 仅允许白名单字符 [a-z0-9],防路径穿越
日志脱敏日志中不记录完整 token/Key,仅显示后 4 位

12. 测试与验收

12.1 功能测试清单(关键项)

编号用例预期结果
T1新增域名并校验泛解析DNS 指引正确,校验接口返回解析状态
T2创建页面(AI 生成)生成随机子域,内容合格,状态 = 已发布
T3访问 {子域}.xxx.com直接打开静态页面,引流组件正常
T4修改描述词重新生成生成新版本,历史版本可查
T5下线页面前台 404,不再进入推送队列
T6AI 长尾词挖掘产出合法 JSON 词数组,去重入库
T7自动建页任务待生成词全部产出页面并绑定
T8百度 / 必应推送队列消费,push\_log 成功记录
T9配额超限自动跳过,次日恢复
T10后台权限普通管理员无法访问系统配置
T11GEO 输出页面含 JSON-LD、FAQ、robots 放行 AI 爬虫
T12定时任务互斥同时触发两次不重复执行

12.2 性能测试

  • 静态页面并发:ab -n 10000 -c 200,P95 响应 < 200ms(Nginx 直出)。
  • 后台接口:单管理员操作无感知延迟。
  • 数据库:page 表 10 万级分页查询 < 1s(加 domain_id+status 联合索引)。

12.3 验收标准

  1. 登录后台 → 配置 DeepSeek Key 与域名 → 一键创建页面并发布成功。
  1. 前台泛域名可访问,页面含引流组件与 GEO 结构化数据。
  1. 定时任务按计划运行,推送日志有成功记录。
  1. 全程(创建→发布→推送)无人工干预即可完成。
  1. 安全测试(注入 / 上传 / XSS 基础用例)通过。

13. 开发计划与里程碑

里程碑周期交付内容
M1 基础框架第 1 周项目骨架、数据库、登录认证、Layui 后台布局、权限
M2 域名 + 页面管理第 2 周域名管理、页面 CRUD、模板系统、预览
M3 AI 生成 + 前台渲染第 3 周DeepSeek 集成、内容校验、静态化、泛域名前台访问
M4 自动化体系第 4 周关键词 / 长尾词、自动建页、推送引擎、定时任务中心
M5 GEO + 统计 + 安全第 5 周GEO 模块、访问 / 成本统计、安全加固、告警
M6 测试部署第 6 周宝塔部署、泛域名证书、全链路测试、文档完善、上线

建议使用 WorkBuddyAI 辅助开发:将本文档各章节作为需求输入,按模块(数据库→模型→服务→控制器→视图)逐步生成代码,人工评审后合入主干。


14. 合规与风险提示

14.1 搜索引擎规范风险(重要)

  • 站群 / 大量低质量页面可能被搜索引擎判定为 垃圾内容(Thin Content)或内容农场,导致整站降权、子域被收录淘汰。
  • 应对:坚持内容原创性与有用性,AI 生成内容必须经校验与人工抽检;控制单日建页量;避免纯搬运与关键词堆砌。
  • 推送 API 是各站长平台官方正规渠道,须遵守配额与《服务条款》;超配额会被限流,勿暴力刷量。

14.2 GEO 行业自律

  • 2026 年多家 GEO 企业联合发起《生成式引擎优化(GEO)行业自律公约》,公开抵制 "语料轰炸"" 关键词堆砌 ""一键分发虚假测评 / 科普 / 权威内容"。
  • 本系统的 GEO 功能定位为内容质量优化(结构化、语义层级、FAQ、权威信号),不应被用于操纵 AI 引擎输出虚假信息。

14.3 备案与法律要求

  • 使用国内服务器(宝塔部署)必须完成 ICP 备案,泛域名子域均归属于已备案根域名,须确保备案信息与实际站点一致。
  • 按规定完成 公安联网备案。
  • 页面内容不得涉及违法信息(赌博、色情、诈骗、侵权等);引流到 QQ / 微信从事营销须符合平台规则与《广告法》,不得虚假宣传。

14.4 泛域名滥用风险

  • 泛解析开放后,任何随机子域都会解析到服务器,需确保未绑定子域返回 404,避免被用于恶意用途。
  • 建议限制单域名每日建页上限,并对子域字符做白名单校验。

14.5 成本与配额风险

  • AI 生成有 token 成本,建议设置每日生成上限与预算告警。
  • 搜索引擎推送有每日配额,避免一次性推送过多导致账号风控。

15. 附录

15.1 依赖与资源清单

资源说明
DeepSeek 开放平台https://platform.deepseek.com/ (API Key、余额、模型文档)
百度搜索资源平台https://ziyuan.baidu.com/ (普通收录 token)
必应站长工具https://www.bing.com/webmasters (API Key、Batch 提交)
Google Search Consolehttps://search.google.com/search-console (Indexing API 凭证)
Layuihttps://layui.dev/ (后台 UI)
宝塔面板https://www.bt.cn/ (部署环境)
WorkBuddyAIhttps://workbuddy.tencent.com / https://www.workbuddy.cn/ (AI 辅助开发)

15.2 配置文件示例

config/ai.php:

return \[

&#x20;   'api\_key'      => getenv('DEEPSEEK\_API\_KEY') ?: '',   // 后台可覆盖

&#x20;   'base\_url'     => 'https://api.deepseek.com',

&#x20;   'model'        => 'deepseek-chat',

&#x20;   'temperature'  => 0.8,

&#x20;   'max\_tokens'   => 3000,

&#x20;   'timeout'      => 60,

&#x20;   'max\_concurrency' => 3,

&#x20;   'retry\_times'  => 2,

&#x20;   'price\_input'  => 0.002,   // 元/千token,按官方刊例价填写

&#x20;   'price\_output' => 0.008,

];

config/database.php:

return \[

&#x20;   'host'     => '127.0.0.1',

&#x20;   'port'     => 3306,

&#x20;   'dbname'   => 'zhanqun',

&#x20;   'username' => 'zhanqun\_user',

&#x20;   'password' => '\*\*\*\*\*\*',

&#x20;   'charset'  => 'utf8mb4',

];

15.3 使用 WorkBuddyAI 辅助开发的建议工作流

  1. 将本开发文档(或拆分后的章节)作为需求材料提供给 WorkBuddy,明确要求输出 PHP 代码。
  1. 按模块顺序生成:数据库建表 SQL → 模型 → 服务类(Ai/Push/Keyword/Static/Geo)→ 控制器 → Layui 视图。
  1. 每完成一个模块,在本机(宝塔环境)验证后再进入下一模块。
  1. 使用 WorkBuddy 的 Skills / 自定义模型能力,将 "页面生成 Prompt 模板" 等沉淀为可复用指令。
  1. 代码评审关注:SQL 注入、密钥泄露、权限校验、目录权限(storage 不可 Web 访问)。

15.4 后续扩展方向(非本期范围)

  • 接入更多 AI 模型(OpenAI、Kimi、通义等,兼容协议统一封装)。
  • 站群收录状态批量查询与自动重提。
  • 移动端独立模板与 PWA 化。
  • 多服务器 / 负载均衡部署(静态文件 CDN 分发)。
  • 数据看板升级(ECharts 图表:推送趋势、词库分布、成本曲线)。

文档结束。开发过程中如需求变更,请更新本文档并同步版本号。

相关推荐