织梦采集定时自动发布设置
采集与发布分离是内容运营的常见策略:采集先入库为草稿,再按计划定时发布,既能控制更新节奏符合搜索引擎偏好,又能均衡服务器负载。本文介绍如何用织梦采集 + 定时任务实现无人值守的自动发布流水线。
一、整体流程设计
完整的自动发布链路由四个环节构成:
- 采集入库:采集节点抓取内容,写入待发布队列。
- 分配发布时间:为每篇文档分配一个未来发布时间。
- 定时触发:计划任务定时扫描并发布到期文档。
- 生成静态:发布后自动生成对应 HTML。
二、采集入库设为待发布
1. 采集后状态
在采集节点设置中,将“采集后文档状态”设为“未审核”或“草稿”,而非直接发布,便于后续按计划释放:
采集后状态:未审核(待发布队列)
2. 关键词与栏目预设
采集时即指定好目标栏目与默认关键词,避免发布前再人工调整。
三、定时发布插件配置
1. 安装定时发布插件
在“模块 → 模块管理”中安装“定时发布”或“自动发布”类插件。安装后入口出现在“核心 → 批量维护”下。
2. 设置发布时间分布
插件支持为待发布文档批量分配发布时间,可按时间段均匀分布:
发布时间段:08:00 - 22:00
每日发布数量:20 篇
发布间隔:30 分钟
起始日期:2026-07-30
发布时间建议集中在用户活跃时段(上午 9-11 点、晚间 19-21 点),既符合阅读习惯也利于抓取。
3. 时间分配策略
- 均匀分布:全天等间隔发布,适合资讯类站点。
- 高峰加权:在阅读高峰时段加密发布。
- 随机抖动:在固定间隔上加 ±5 分钟随机,避免被识别为机器行为。
四、计划任务触发发布
1. 宝塔计划任务
在宝塔面板添加计划任务,每 5 分钟执行一次发布脚本:
# 任务类型:Shell 脚本
# 执行周期:每 5 分钟
php /www/wwwroot/站点/dede/auto_publish.php
2. 发布脚本逻辑
脚本扫描 dede_archives 中 senddate <=当前时间 且状态为待发布的文档,将其改为已发布并触发生成:
// auto_publish.php 核心逻辑
$now=time();
$dsql->SetQuery("UPDATE `dede_archives`
SET arcrank=0 WHERE arcrank=-1 AND senddate <=$now");
$dsql->ExecuteNoneQuery();
// 触发生成静态
MakeArt($aid);
五、静态生成配合
发布后需生成 HTML 才能被访问。两种方案:
- 即时生成:发布脚本中调用
MakeArt()单篇生成,负载可控。 - 批量生成:每小时另起任务批量生成,适合发布量大时降低频率。
发布与生成同在高频执行会占用大量 CPU,建议两者错峰,发布每 5 分钟、生成每 30 分钟。
六、发布监控与告警
- 在发布脚本中加入日志记录,每次执行写入
/data/logs/publish.log。 - 当日发布量低于预期 50% 时触发告警(邮件/钉钉)。
- 定期检查待发布队列是否堆积,避免采集过快导致积压。
七、注意事项
- 服务器时区:确认 PHP 与服务器时区为 Asia/Shanghai,避免发布时间错位。
- 采集频率匹配:采集速度应略高于发布速度,保证队列不断档。
- 内容抽检:自动发布前建议保留一道关键词过滤,防止违规内容上线。
- 节假日调整:特殊日期可调整发布计划,避免敏感时段自动发布。
建议保留一个“紧急暂停”开关,遇到突发事件可一键停止自动发布,改人工接管。
自动化发布运营建议
定时自动发布能极大解放人力,但也容易让站点变成“无人值守的流水线”而失去温度。建议在自动化的基础上保留人工巡检环节,每天抽查当日已发布内容质量,及时处理采集源异常或违规内容。同时把发布节奏与运营活动联动——新品上线、节日营销时手动加密发布,让自动化服务于运营节奏而非反过来,才能让站点既有持续更新的稳定性,又有把握关键节点的灵活性。