内容分析自动化
概述
本项目已实现网站内容分析的完全自动化集成,无需手动上传数据文件,分析数据会在网站构建时自动生成并压缩存储。
🚀 主要改进
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
这会执行:
hugo --environment production --minify
- 构建网站npm run compress-json
- 运行 build.js 脚本
2. build.js 脚本流程
npm run compress-json
执行步骤:
- 生成分析数据 (
generate-analysis-data.js
) - 压缩搜索索引文件
- 压缩分析数据文件
- 删除原始未压缩文件以节省空间
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
}
}
}
🌐 前端功能
自动加载流程
- 页面加载时自动请求压缩数据
- 使用 Pako 库解压数据
- 检查版本缓存,避免重复处理
- 渲染所有图表和统计信息
降级机制
- 如果自动加载失败,显示手动上传界面
- 用户可以手动上传数据文件作为备用方案
- 清晰的状态提示和错误处理
📈 性能优化
数据压缩效果
- 原始 JSON 文件约 800KB+
- 压缩后约 100-200KB
- 压缩率达到 70-80%
缓存策略
- 使用版本号检查数据更新
- localStorage 缓存版本信息
- 避免重复下载相同版本数据
🔍 技术细节
依赖库
gray-matter
: 解析 Markdown front matterpako
: 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/
目录。
🚨 注意事项
- 构建顺序:必须先运行 Hugo 构建,再运行数据生成
- 目录权限:确保构建进程有权限创建
public/analysis-data/
目录 - 内存使用:大型网站扫描时可能消耗较多内存
- 版本控制:
public/
目录通常不纳入版本控制
🔄 升级指南
从手动上传模式升级到自动化模式:
- 确保所有新文件已添加到项目中
- 运行
npm run build
生成初始数据 - 访问
/analysis/
页面确认自动加载正常 - 删除旧的手动生成脚本(可选)
📝 更新日志
v2.0.0 - 自动化集成
- ✅ 实现完全自动化的数据生成流程
- ✅ 集成到网站构建过程
- ✅ 添加数据压缩和版本管理
- ✅ 前端自动加载功能
- ✅ 降级到手动上传的备用方案
- ✅ 性能优化和缓存策略