Skip to content

内容分析自动化

概述

本项目已实现网站内容分析的完全自动化集成,无需手动上传数据文件,分析数据会在网站构建时自动生成并压缩存储。

🚀 主要改进

1. 自动化数据生成

  • 在网站构建过程中自动扫描所有内容文件
  • 支持多语言 (中文/英文) 和多内容类型 (博客/图书/通知/播客/翻译)
  • 生成包含版本信息的 JSON 数据文件

2. 数据压缩存储

  • 使用 Pako 库进行 gzip 压缩,大幅减少文件大小
  • 数据存储在 public/analysis-data/content_analysis_data.json.gz
  • 压缩后的文件可直接通过 Web 访问

3. 前端自动加载

  • 页面加载时自动获取最新分析数据
  • 支持版本缓存,避免重复加载相同数据
  • 失败时自动降级到手动上传模式

4. 版本管理

  • 使用时间戳作为版本号,确保数据始终是最新的
  • 前端缓存机制避免不必要的网络请求

📁 文件结构

scripts/
├── generate-analysis-data.js  # 新增:分析数据生成器
└── build.js                   # 修改:集成数据生成和压缩

assets/js/
└── content-analysis-upload.js # 修改:支持自动加载

layouts/pages/
└── analysis.html              # 修改:优化用户界面

public/analysis-data/
└── content_analysis_data.json.gz  # 自动生成:压缩的分析数据

🔧 构建流程

1. 完整构建

npm run build

这会执行:

  1. hugo --environment production --minify - 构建网站
  2. npm run compress-json - 运行 build.js 脚本

2. build.js 脚本流程

npm run compress-json

执行步骤:

  1. 生成分析数据 (generate-analysis-data.js)
  2. 压缩搜索索引文件
  3. 压缩分析数据文件
  4. 删除原始未压缩文件以节省空间

3. 单独生成分析数据

npm run generate-analysis

📊 数据格式

生成的 JSON 数据包含:

{
  "generated_at": "2025-01-04T23:31:24.036Z",
  "version": 1751673484036,
  "website_root": "/path/to/website",
  "content_data": [],
  "statistics": {
    "total_content": 861,
    "total_years": 12,
    "avg_per_year": 71.8,
    "bilingual_analysis": {
      "total_pairs": 128,
      "total_content": 256
    }
  }
}

🌐 前端功能

自动加载流程

  1. 页面加载时自动请求压缩数据
  2. 使用 Pako 库解压数据
  3. 检查版本缓存,避免重复处理
  4. 渲染所有图表和统计信息

降级机制

  • 如果自动加载失败,显示手动上传界面
  • 用户可以手动上传数据文件作为备用方案
  • 清晰的状态提示和错误处理

📈 性能优化

数据压缩效果

  • 原始 JSON 文件约 800KB+
  • 压缩后约 100-200KB
  • 压缩率达到 70-80%

缓存策略

  • 使用版本号检查数据更新
  • localStorage 缓存版本信息
  • 避免重复下载相同版本数据

🔍 技术细节

依赖库

  • gray-matter: 解析 Markdown front matter
  • pako: gzip 压缩/解压缩
  • toml: 解析 Hugo 配置文件

支持的内容类型

  • blog: 博客文章
  • book: 图书内容
  • notice: 通知公告
  • podcast: 播客节目
  • trans: 翻译文章
  • travel: 旅行记录

支持的语言

  • zh: 中文
  • en: 英文

🛠️ 开发指南

本地开发

# 生成分析数据
npm run generate-analysis

# 启动开发服务器
hugo server

# 访问分析页面
open http://localhost:1313/analysis/

部署流程

构建命令会自动处理所有步骤:

npm run build

确保部署时包含 public/analysis-data/ 目录。

🚨 注意事项

  1. 构建顺序:必须先运行 Hugo 构建,再运行数据生成
  2. 目录权限:确保构建进程有权限创建 public/analysis-data/ 目录
  3. 内存使用:大型网站扫描时可能消耗较多内存
  4. 版本控制public/ 目录通常不纳入版本控制

🔄 升级指南

从手动上传模式升级到自动化模式:

  1. 确保所有新文件已添加到项目中
  2. 运行 npm run build 生成初始数据
  3. 访问 /analysis/ 页面确认自动加载正常
  4. 删除旧的手动生成脚本(可选)

📝 更新日志

v2.0.0 - 自动化集成

  • ✅ 实现完全自动化的数据生成流程
  • ✅ 集成到网站构建过程
  • ✅ 添加数据压缩和版本管理
  • ✅ 前端自动加载功能
  • ✅ 降级到手动上传的备用方案
  • ✅ 性能优化和缓存策略