AI 自动发布的需求
织梦站点内容运营中,重复性的选题撰写占用了大量人力。接入大模型后,可以实现“选题库 → AI 生成 → 织梦入库 → 定时发布”的全自动流水线,把编辑从机械劳动中解放出来,专注选题策划与质量把控。配置的关键是把 AI 接口、织梦入库逻辑、定时任务三者串起来,并保留人工审核环节。
整体架构
- 选题库:MySQL 表存储待生成标题与关键词。
- 生成服务:调用大模型 API 生成文章。
- 入库脚本:通过织梦
article_add逻辑写入数据库。 - 定时任务:crontab 每小时生成 N 篇并发布。
- 审核队列:生成后状态为“待审”,人工抽检后放行。
步骤一:准备选题库
CREATE TABLE `dede_ai_topics` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`title` varchar(120) NOT NULL,
`keywords` varchar(200) DEFAULT NULL,
`catid` smallint(6) NOT NULL COMMENT '目标栏目',
`status` tinyint(1) DEFAULT '0' COMMENT '0待生成 1已生成',
`created` datetime DEFAULT NULL,
PRIMARY KEY (`id`)
) TYPE=MyISAM;
把提前准备好的标题批量导入,例如每天导入 20 条,AI 每小时生成 3-5 条。
步骤二:对接大模型 API
// plus/aigen/generate.php
function generate_article($title, $keywords) {
$prompt="请围绕《{$title}》写一篇织梦CMS技术文章," .
"关键词:{$keywords}。要求:标题h1、分段h2、h3," .
"800字以上,含代码示例与注意事项,结尾给行动建议。";
$payload=[
'model'=> 'gpt-4o',
'messages'=> [['role'=>'user','content'=>$prompt]],
'temperature'=> 0.7,
'max_tokens'=> 2000,
];
$ch=curl_init('https://api.example.com/v1/chat/completions');
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'Authorization: Bearer '.$GLOBALS['cfg_ai_apikey'],
'Content-Type: application/json',
]);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($payload));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$resp=json_decode(curl_exec($ch), true);
return $resp['choices'][0]['message']['content'];
}
不同模型 API 格式略有差异,文心、通义、Kimi 均可对接,建议按可读性与专业度做对比测试。
步骤三:写入织梦数据库
模拟织梦 article_add.php 的入库逻辑,把 AI 生成内容写入主表与附加表:
require_once dirname(__FILE__).'/../include/common.inc.php';
require_once DEDEINC.'/arc.archives.class.php';
// 1. 写主表
$aid=$dsql->GetOne("SELECT IFNULL(MAX(id),0)+1 AS id FROM dede_archives");
$arcID=$aid['id'];
$dsql->ExecuteNoneQuery("INSERT INTO dede_archives
(id, typeid, title, writer, source, pubdate, senddate, arcrank, click)
VALUES ($arcID, $catid, '$title', 'AI助手', '原创',
".time().", ".time().", 0, 0)");
// 2. 写附加表
$dsql->ExecuteNoneQuery("INSERT INTO dede_addonarticle (aid, typeid, body)
VALUES ($arcID, $catid, '".addslashes($body)."')");
// 3. 更新栏目统计
$dsql->ExecuteNoneQuery("UPDATE dede_arctype SET
totalpart=totalpart+1 WHERE id=$catid");
// 4. 生成静态页
$arc=new Archives($arcID);
$arc->MakeHtml();
步骤四:定时任务编排
# crontab -e
# 每小时第 10 分钟生成 3 篇
10 * * * * /usr/bin/php /www/wwwroot/dedecms/plus/aigen/run.php batch=3
# 每天凌晨把待审转正式发布
0 2 * * * /usr/bin/php /www/wwwroot/dedecms/plus/aigen/approve.php
run.php 从选题库取未生成条目,调 AI 生成并入库;approve.php 把审核通过的文章 arcrank 置 0 并推送到百度。
步骤五:人工审核与质量把控
- 生成后 arcrank=-1 待审,不直接发布。
- 后台“所有档案列表”筛“待审核”,编辑抽检。
- 检查事实准确性、代码可用性、语句通顺。
- 合格即放行,不合格回退 AI 重写。
- 合格率低于 80% 时调整 prompt。
质量保障策略
| 环节 | 措施 |
|---|---|
| 选题 | 编辑筛选高价值标题 |
| 生成 | 模板化 prompt 约束输出 |
| 查重 | 入库前比对历史文章 |
| 审核 | 人工抽检 ≥ 30% |
| 监控 | 跟踪收录与排名 |
注意事项
- API Key 加密存储,权限 600。
- 控制生成频率,避免触发 API 限流。
- AI 生成内容标注来源,遵守平台规则。
- 定期评估内容质量,迭代 prompt。
- 避免完全无人值守,保留人工环节。
建议与展望
AI 自动发布是把双刃剑,建议把它定位为“产能放大器”而非“编辑替代者”:选题、审核、运营仍由人主导,AI 负责把好选题快速成稿。把生成质量、收录率、用户停留时长纳入看板,持续优化 prompt 与流程。当织梦站点建立起“人机协作”的内容生产线,既能在量上规模化,又能在质上保持水准,长期获得搜索流量与用户认可。