极简主题重构了 Hugo 和原版主题对中文极不友好的字数统计逻辑,采用精确的正则分离算法,为中文用户提供完美的统计体验。

传统统计的痛点

Hugo 默认统计问题

Hugo 默认的字数统计对中文支持不佳:

  • 按空格分词:中文没有空格,导致整段文字被当作一个词
  • 统计不准确:中文文章字数严重虚高或偏低
  • 阅读时长失真:基于错误字数计算的时间没有参考价值

原版主题问题

PaperMod 等主题沿用 Hugo 默认统计:

  • 中文 1000 字文章可能显示为 1 字或 10000 字
  • 阅读时长计算毫无意义
  • 影响用户体验和内容规划

极简主题的解决方案

精确识别算法

采用先进的正则分离算法,精确识别:

  • 汉字:每个汉字独立计数
  • 字母:连续字母组合为一个单词
  • 数字:连续数字组合为一个单位
  • 标点符号:智能过滤,不计入字数

统计示例

1
这是一篇测试文章,包含英文 Hello World 和数字 2025。

统计结果

  • 汉字:13 字(这是一篇测试文章包含英文和数字)
  • 英文单词:2 个(Hello、World)
  • 数字:1 个(2025)
  • 总计:16 字

配置方法

启用统计功能

hugo.yaml 中配置:

1
2
3
4
5
6
params:
  # 显示阅读时长
  ShowReadingTime: true
  
  # 自定义阅读速度(字/分钟)
  readingSpeed: 200

参数说明

参数 类型 默认值 说明
ShowReadingTime bool false 是否显示阅读时长
readingSpeed int 200 阅读速度(字/分钟)

阅读速度参考

不同场景的建议阅读速度:

场景 阅读速度 说明
深度阅读 150-200 字/分钟 仔细研读,理解透彻
快速浏览 300-400 字/分钟 快速获取信息
技术文章 100-150 字/分钟 需要思考和理解代码
轻松阅读 250-300 字/分钟 小说、散文等

推荐设置:200 字/分钟(适合大多数博客文章)

显示效果

文章列表

每篇文章显示统计信息:

约 1234 字 | 预计阅读 6 分钟

文章详情页

文章开头显示:

📅 2025-03-13 | ⏱️ 阅读时长 6 分钟 | 📖 1234 字

统计原理详解

算法实现

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
// 伪代码示意
func countChineseWords(content string) int {
    // 1. 移除 Markdown 标记
    content = removeMarkdown(content)
    
    // 2. 提取汉字
    hanzi := regexp.MustCompile(`[\p{Han}]`)
    hanziCount := len(hanzi.FindAllString(content, -1))
    
    // 3. 提取英文单词
    words := regexp.MustCompile(`[a-zA-Z]+`)
    wordCount := len(words.FindAllString(content, -1))
    
    // 4. 提取数字组合
    numbers := regexp.MustCompile(`[0-9]+`)
    numberCount := len(numbers.FindAllString(content, -1))
    
    return hanziCount + wordCount + numberCount
}

准确性对比

以本文档为例(示例数据):

统计方式 字数 准确度
Hugo 默认 1 ❌ 极不准确
原版主题 50 ❌ 不准确
极简主题 2547 ✅ 精确

自定义配置

针对特定文章

在文章 Front Matter 中可覆盖全局设置:

1
2
3
4
5
6
---
title: "深度技术文章"
ShowReadingTime: true
# 此文章技术含量高,阅读速度设为 100
readingSpeed: 100
---

隐藏统计信息

如果不想在特定文章中显示统计:

1
2
3
4
5
---
title: "简短公告"
ShowReadingTime: false
hideMeta: true
---

常见问题

Q: 统计包含代码块吗?

A: 包含。代码块中的字符也会被统计,这符合实际情况,因为阅读代码也需要时间。

Q: 统计包含图片 alt 文本吗?

A: 不包含。只统计文章正文内容。

Q: 阅读时长计算公式?

A:

阅读时长(分钟) = 总字数 / 阅读速度

结果会向上取整,避免显示 0 分钟。

Q: 为什么我的字数统计比其他工具多?

A: 不同工具的统计标准不同:

  • 极简主题:汉字 + 英文单词 + 数字组合
  • Word:字符数(包含空格和标点)
  • 在线工具:可能有不同的过滤规则

极简主题的统计方式更符合实际阅读体验。

Q: 可以完全关闭统计吗?

A: 可以。在 hugo.yaml 中设置:

1
2
params:
  ShowReadingTime: false

统计数据应用

内容规划

  • 根据字数评估文章深度
  • 控制文章长度,保持可读性
  • 估算写作时间

用户体验

  • 帮助读者评估阅读投入
  • 提供内容预期
  • 增强专业感

SEO 优化

  • 结构化数据支持
  • 提升用户体验指标
  • 增加页面停留时间

技术细节

性能优化

统计算法经过优化:

  • 构建时计算,不影响运行时性能
  • 缓存统计结果
  • 正则表达式预编译

兼容性

支持多种内容格式:

  • ✅ 纯文本
  • ✅ Markdown
  • ✅ 短代码内容
  • ✅ HTML 标签(自动过滤)
  • ✅ 多语言混排

相关配置


极简主题的精准中文统计功能,让你的博客更专业、更贴心!