Solejay's Blog
Back to Docs

AI 博客分析系统

AI 驱动的博客内容分析工具,支持多维度可视化和智能洞察

概述#

AI 博客分析系统是一个基于 AI 的自动化工具,能够对博客文章进行深度分析并提供多维度洞察。通过集成大语言模型,系统可以分析写作风格、情感倾向、内容结构等多个维度。

核心特性#

  • Map-Reduce 并行处理:多线程分析单篇文章,提高效率
  • MD5 智能缓存:基于内容哈希缓存分析结果,避免重复计算
  • 混合计算策略:统计型数据用代码计算,分析型数据用 LLM 生成
  • 7种可视化图表:雷达图、词云、概念网络、时间线、情感分布、写作结构、词频统计
  • 健壮的错误处理:LLM 失败时自动 fallback 到统计方法

快速开始#

1. 环境准备#

# 确保 Python 版本
python --version  # 需要 3.9+

# 安装依赖
pip install -r scripts/requirements.txt
bash

2. 配置 API Key#

# 方式 1: 环境变量(推荐)
export API_KEY="your_deepseek_api_key"

# 方式 2: 写入 .env 文件
echo "API_KEY=your_deepseek_api_key" > .env
bash

3. 运行分析#

# 基础运行
python scripts/ai_analysis/run.py

# 带详细日志
python scripts/ai_analysis/run.py --verbose
bash

4. 查看结果#

分析完成后,访问 /about 页面查看可视化结果。

高级用法#

增量更新#

修改文章后,再次运行会自动跳过未修改的文章:

python scripts/ai_analysis/run.py --verbose
bash

强制重新分析#

python scripts/ai_analysis/run.py --force
bash

限制分析数量#

# 只分析前 5 篇文章
python scripts/ai_analysis/run.py --limit 5 --verbose
bash

预览模式#

# 列出待分析的文章,但不实际调用 LLM
python scripts/ai_analysis/run.py --dry-run
bash

指定文章分析#

# 分析指定文章
python scripts/ai_analysis/run.py --target "src/content/blog/your-article.md" --force
bash

5. manifest.json 和 cache 文件#

manifest.json 和 cache 文件存储在 scripts/ai_analysis 目录下。

# 查看 manifest.json
cat scripts/ai_analysis/manifest.json

# 查看 cache 文件
cat scripts/ai_analysis/cache/2025-02-23-也许你该买份保险_f3645c1f373593e5cc9903bffad854af.json
bash

系统架构#

整个系统采用经典的 Map-Reduce 架构:

Blog Posts → Map (单篇分析) → Cache → Reduce (全局聚合) → 可视化
plaintext

Map 阶段:单篇文章分析#

  1. 数据提取:解析 Markdown 文件的 frontmatter 和正文
  2. 基础指标计算:统计句长、词频等基础数据
  3. LLM 深度分析:分析写作风格、情感、结构等
  4. MD5 缓存:基于内容哈希避免重复计算

Reduce 阶段:全局数据聚合#

  1. 统计型数据:用代码计算平均语气、情感分布等
  2. 分析型数据:用 LLM 生成主题名称等
  3. 健壮性设计:失败时自动回退到基础统计

技术栈#

后端分析引擎#

  • Python 3.9+:脚本语言
  • Pydantic:数据验证和 schema 定义
  • DeepSeek API:LLM 服务
  • 并发处理ThreadPoolExecutor 加速分析

前端可视化#

  • Astro:博客框架
  • ECharts 5:图表库
  • echarts-wordcloud:词云插件

可视化维度#

1. 写作风格雷达图#

展示教学性、反思性、幽默性、批判性等维度的平均水平。

2. 关键词云图#

显示文章中最常出现的关键词,支持 fallback 到柱状图。

3. 概念关系网络#

构建概念共现网络,展示思想脉络和概念之间的关联。

4. 时间线深度图#

展示写作深度随时间的变化趋势。

5. 情感分布图#

统计积极、中性、消极情感的文章分布。

6. 写作结构统计#

分析文章的写作结构模式。

7. 词频统计图#

显示高频词汇的分布情况。

常见问题#

API Key 未设置#

[ERROR] API_KEY not set in environment
plaintext

解决

export API_KEY="your_key_here"
bash

网络超时#

[WARNING] Request failed (attempt 1/3), retrying...
plaintext

解决

  • 检查网络连接
  • 调整超时时间:export AI_REQUEST_TIMEOUT_S=600
  • 使用代理:export https_proxy=http://127.0.0.1:7890

Python 版本不兼容#

TypeError: unsupported operand type(s) for |
plaintext

解决:升级到 Python 3.10+ 或修改类型注解为 Union

成本优化建议#

  • 开发阶段使用 --limit 测试
  • 正式运行前用 --dry-run 预览
  • 利用缓存机制,避免 --force
  • 增量更新,只分析修改的文章

参考资源#