网站内容治理与自动化运维实战:发文查重+全站指纹+首页自动同步+三组滚动备份

项目概览

「网站内容治理与自动化运维」是科学小舟官网(www.kexuexiaozhou.cn)的内容质量保障与运维自动化项目,2026年7-8月持续开发落地。项目围绕三大痛点展开:①发文重复——多编辑协同时文章撞题、内容雷同;②首页更新靠手动——发文后首页「最新文章区」不自动刷新;③备份靠人记——忘了备份、备份堆积。团队开发了「发文查重 + 全站指纹 + 首页自动同步 + 三组滚动备份」四件套,把内容治理与运维从「人工盯」升级为「系统管」。

一、发文查重:发前必查,杜绝重复

开发了 check_duplicate.py 查重脚本,编辑发文前必须执行,接入服务器端 kxz/v1/check-duplicate 查重API:

# 用法:发文前查重(标题+正文)
python check_duplicate.py "文章标题" "正文内容文件路径"
# 输出
#   DUPLICATE: yes | 命中ID=xxx | 已有文章=xxx | 原因=xxx  → 重复,必须换文章
#   DUPLICATE: no                                          → 无重复,可以发布

脚本通过 WordPress 登录会话获取 wp_rest nonce,调用站内查重接口比对标题与正文,命中即返回已有文章ID与重复原因,把「重复发文」挡在发布之前。

二、全站指纹:内容变动可检测

服务器端开发了 kxz_fingerprint.php 指纹脚本,输出网站内容指纹JSON(文章总数/最新修改时间/max_id/mu-plugin md5),作为「内容是否变动」的客观判据:

<?php
// 网站内容指纹:文章数/最新修改/max_id/mu-plugin md5
$count  = $wpdb->get_var("SELECT COUNT(*) FROM wp_posts
            WHERE post_type='post' AND post_status IN ('publish','draft','pending')");
$maxmod = $wpdb->get_var("SELECT MAX(post_modified) FROM wp_posts WHERE post_type='post'");
$maxid  = $wpdb->get_var("SELECT MAX(ID) FROM wp_posts WHERE post_type='post'");
$mu_md5 = md5_file(WP_CONTENT_DIR . '/mu-plugins/kxz-custom.php');
echo json_encode(array('count'=>$count,'max_modified'=>$maxmod,
                       'max_id'=>$maxid,'mu_plugin_md5'=>$mu_md5));
?>

三、全站重复扫描 v2:滑窗分块 Jaccard 相似度

开发 scan_duplicates_v2.php 对全站历史文章做相似度体检:正文归一化(小写/全角转半角/去标点空格)后按100字符块、50字符步长滑窗分块,计算Jaccard相似度,相似度≥90%即判定重复,用于清理历史堆积的重复内容:

// 滑窗分块:块100字符,步长50(重叠50%)
function kxz_chunks2($c_norm) {
    $chunks = array(); $len = mb_strlen($c_norm, 'UTF-8'); $i = 0;
    while ($i < $len) {
        $chunks[md5(mb_substr($c_norm, $i, 100, 'UTF-8'))] = true;
        if ($len - $i <= 100) break;
        $i += 50;
    }
    return array_keys($chunks);
}

四、首页自动同步:发文即刷新

开发 sync_homepage.php(本地镜像 sync_homepage_local.php),老板拍板「发文成功必须自动同步,禁止手动补救」:发文后执行一次同步,首页「最新文章区」与全部文章页自动刷新。同步脚本内置与首页模板一致的全站分类配色表(科学小舟新科学/前沿科学转载/AI运用与Skills/商业风口/宇宙与天文/作品展示),按分类渲染最新文章列表,保证发文后首页立即展示、配色风格统一。

五、三组滚动备份:指纹驱动,自动轮转

开发 local_backup_rotate.sh 实现「指纹驱动的三组滚动备份」:先从服务器获取内容指纹,与本地上次指纹对比——无变动跳过、有变动才备份;下载数据库+wp-content到新日期组目录,保留最近3组、自动删除最老一组,备份体积可控、不堆积:

  • 指纹对比先行:无变动不备份,省流量省时间
  • 全量打包:mysqldump数据库 + tar打包主题/插件/上传/mu-plugins
  • 本地校验:gunzip -t 校验数据库包、tar tzf 校验内容包,损坏即报警
  • 三组轮转:保留最近3组备份,自动覆盖最老一组

项目成果

✅ 发文查重常态化:每篇发文前必查,重复文章零新增。✅ 全站指纹+滑窗查重,历史重复内容可扫描、可清理。✅ 首页自动同步,发文后「最新文章区」立即更新,告别手动补救。✅ 三组滚动备份自动轮转,网站数据安全有兜底。

项目说明:本文基于 D:\AI-Win专属工作区\网站管理 目录下 check_duplicate.py、kxz_fingerprint.php、scan_duplicates_v2.php、sync_homepage_local.php、local_backup_rotate.sh 等实际项目文件撰写,为科学小舟团队真实开发项目。

— 分享本文 —

类似文章

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注