Hexo博客:一些非常有用的插件

Hexo博客:一些非常有用的插件

前言

使用框架Hexo搭建博客后,你可能需要一些功能,例如:对生成的文件进行压缩,生成站点地图,生成RSS订阅等等。面对官方的插件列表又有些无从下手,这里推荐一些,同时也是我在用的一些插件。

正文

下面示例的配置适用于2026年7月31日前的最新版插件,如果后期插件发生更新,请以官方文档为准。

页面生成器

除了Hexo init自动安装的生成器外,这里介绍一下RSS/Atom订阅生成器和sitemap生成器

hexo-generator-feed

官方仓库:https://github.com/hexojs/hexo-generator-feed

功能介绍:为你的博客生成feed,别人可以对你的博客进行订阅。

配置示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
feed:
enable: true # 是否启用插件(默认 true)
type: atom # 订阅类型:atom 或 rss2;也可同时输出两种
# type:
# - atom
# - rss2
path: atom.xml # 输出路径(同时输出时 path 需与 type 顺序对应)
# path:
# - atom.xml
# - rss2.xml
limit: 20 # 订阅内最大文章数;0 或 false 表示全部
hub: # (可选) PubSubHubbub hub 地址,不用则留空
content: false # (可选) true 表示在订阅中包含全文
content_limit: 140 # (可选) 摘要长度,仅在 content=false 且无文章描述时生效
content_limit_delim: ' ' # (可选) 截断摘要时的分隔符,到该字符为止
order_by: -date # 文章排序(默认 -date,最新在前)
icon: icon.png # (可选) 自定义订阅图标
autodiscovery: true # 是否输出 feed 自动发现标签(默认 true)

为某个文章设置图片:
在文章的 front-matter 中设置

1
image: #后面加图片链接

如果你博客也有文章封面图但是和这个配置名称不一样可以写个脚本自动转换。


hexo-generator-sitemap

官方仓库:https://github.com/hexojs/hexo-generator-sitemap

功能介绍:为站点产生一个标准格式的sitemap,方便搜索引擎收录

配置示例:

1
2
3
4
5
6
7
8
9
sitemap:
path:
- sitemap.xml # 输出路径,可同时生成 xml 和 txt 两种
- sitemap.txt
template: ./sitemap_template.xml # (可选) 自定义 xml 模板路径
template_txt: ./sitemap_template.txt # (可选) 自定义 txt 模板路径
rel: false # 是否在站点 header 添加 rel-sitemap 标签(默认 false)
tags: true # 是否包含站点标签页(默认 true)
categories: true # 是否包含站点分类页(默认 true)

排除指定文章/页面
在文章的 front-matter 中设置

1
sitemap: false

功能插件

官方仓库:https://github.com/ohroy/hexo-abbrlink

功能介绍:文章静态短链接,拒绝过长的链接

配置示例:
步骤 1:
修改 permalink(_config.yml)

1
2
3
4
# 二选一
permalink: posts/:abbrlink/
# 或
permalink: posts/:abbrlink.html

步骤 2:
插件配置(_config.yml)

1
2
3
4
5
6
7
# abbrlink config
abbrlink:
alg: crc32 # 生成算法:crc16(默认)/ crc32
rep: hex # URL 展示形式:dec(默认,十进制)/ hex(十六进制)
drafts: false # 是否为草稿生成 abbrlink(默认 false)
force: false # 强制模式:忽略缓存,为已有 abbrlink 的文章重新计算(默认 false)
writeback: true # 是否把生成的 abbrlink 回写进 .md 文件的 front-matter(默认 true)

效果示例:

1
2
3
4
crc16 & hex → https://your.site/posts/66c8.html
crc16 & dec → https://your.site/posts/65535.html
crc32 & hex → https://your.site/posts/8ddf18fb.html
crc32 & dec → https://your.site/posts/1690090958.html

hexo-blog-encrypt

官方仓库:https://github.com/D0n9X1n/hexo-blog-encrypt

功能介绍:给文章加密,限制文章的访问者范围

配置示例:
_config.yml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# Security
encrypt: # hexo-blog-encrypt
abstract: 有东西被加密了, 请输入密码查看. # 加密摘要文案
message: 您好, 这里需要密码. # 密码输入框提示
tags: # 按标签加密(可选)
- {name: tagName, password: 密码A}
- {name: tagName, password: 密码B}
wrong_pass_message: 抱歉, 这个密码看着不太对, 请再试试. # 密码错误提示
# wrong_hash_message: 已废弃(v4 起等同于 wrong_pass_message)

# ── v4 新增配置(全部可选,均有安全默认值)──────────────
decryptButton: # 在密码框旁显示"解密"按钮
show: true # 默认 true
text: 解密
autoSave: false # 是否缓存密钥到 localStorage 免重复输入(默认 false)
stableSalt: false # 是否让 PBKDF2 salt 在 clean build 间保持稳定(默认 false,
# 配合 autoSave 用于 Cloudflare Pages / Vercel / GitHub Actions 等
# 每次从干净环境重新构建的部署平台)
kdf:
iterations: 250000 # PBKDF2 迭代次数,下限 100000,推荐 ≥ 600000(OWASP 2023)
theme: default # 加密主题:default / xray(更多开发中)
silent: true # 禁止插件输出 INFO 日志(默认 false)

# 文章级别优先级:文章 front-matter > _config.yml > 默认值

文章 front-matter 用法

1
2
3
4
5
6
7
8
9
10
11
12
---
title: Hello World
date: 2016-03-30 21:18:02
password: hello # 必填:文章密码
abstract: 有东西被加密了, 请输入密码查看. # 可选:覆盖全局摘要
message: 您好, 这里需要密码. # 可选:覆盖全局提示
wrong_pass_message: 抱歉, 这个密码看着不太对, 请再试试. # 可选
theme: xray # 可选:单篇指定加密主题
autoSave: true # 可选:单篇开启密钥缓存
---

文章正文……

特殊用法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 对已打 Tag 加密的文章,单独取消加密:
---
title: Callback Test
tags:
- A Tag should be encrypted
password: "" # 空字符串 = 取消该篇的 Tag 加密
---

# 解密后触发事件监听:
<script>
window.addEventListener('hexo-blog-decrypt', function() {
// 解密完成后的回调
});
</script>

⚠️ 注意:v4 使用 AES-256-GCM,密文格式与 v3 不互通,升级需 hexo clean && hexo generate;生产环境必须 HTTPS(Web Crypto API 要求安全上下文)。


hexo-safego

官方仓库:https://github.com/willow-god/hexo-safego

功能介绍:外链安全跳转,在要跳转外部链接时,进行提示说明

配置示例:
_config.yml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
# hexo-safego 安全跳转插件
hexo_safego:
# 基本功能设置
general:
enable: true # 启用插件(默认 false,注意要打开!)
enable_base64_encode: true # 跳转链接 Base64 编码(默认 true)
enable_target_blank: true # 新窗口打开跳转页(默认 true)

# 安全设置
security:
url_param_name: 'u' # URL 参数名(默认 'u')
html_file_name: 'go.html' # 跳转页面文件名(默认 'go.html')
ignore_attrs: # 忽略处理的 HTML 属性(默认 ['data-fancybox'])
- 'data-fancybox'

# 容器与页面设置
scope:
apply_containers: # 生效容器选择器(默认 ['body'];主题示例 #article-container)
- '#article-container'
apply_pages: # 生效页面路径(默认 ['/'] 全站)
- "/posts/"
- "/devices/"
exclude_pages: # 排除的页面路径(默认空)
# - "/about/"

# 域名白名单(必改!填你自己的站点域名)
whitelist:
domain_whitelist: # 字符串匹配,包含即跳过处理
- "your-site.com" # ← 改成你的域名!

# 跳转页外观
appearance:
avatar: /info/avatar.ico # 头像路径(默认 jsdelivr 远程图,建议本地化)
title: "网站名称" # 跳转页标题
subtitle: "网站副标题" # 跳转页副标题
darkmode: auto # 深色模式:true / false / auto
countdowntime: 4 # 倒计时秒数;负数 = 不自动跳转
custom_css: /css/go.css # 自定义 CSS(相对路径或完整 URL,留空不插入)
leave_text: "您即将离开本站,跳转到:" # 主提示文案
countdown_text: "⚡将在{seconds}秒后跳转,请自行确认链接安全性" # 倒计时文案,{seconds} 为占位符
manual_confirm_text: "💡请自行确认链接安全后再继续跳转" # countdowntime<0 时显示

# 调试
debug:
enable: false # 调试模式,输出详细信息(默认 false)

单页关闭(front-matter)

1
2
3
---
safego: false
---

特别注意:
domain_whitelist:必须填入你的站点域名,否则站内链接也会被处理成跳转页


hexo-yam

官方仓库:https://github.com/curbengh/hexo-yam

功能介绍:静态资源压缩:HTML/JS/CSS/SVG/XML/JSON + gzip/brotli/zstd

配置示例:
_config.yml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
minify:
enable: true # 启用插件(默认 true)
previewServer: true # hexo server 预览时禁用(默认 true,本地调试不压缩)

# ── HTML ──────────────────────────────────────────
html:
enable: true # 默认 true
priority: 10 # 插件优先级(默认 10)
verbose: false # 详细输出(默认 false)
exclude: # 排除文件,支持通配符
# - "*.min.html"
globOptions: # glob 匹配选项(详见 micromatch)

# ── CSS ───────────────────────────────────────────
css:
enable: true # 默认 true
priority: 10
verbose: false
exclude:
- "*.min.css" # 跳过已压缩文件
level: 2 # 优化级别 1-2(默认 2,clean-css 参数)

# ── JS ────────────────────────────────────────────
js:
enable: true # 默认 true
priority: 10
verbose: false
exclude:
- "*.min.js"
compress: # Terser compress 选项(默认开启)
mangle: true # 变量名混淆(默认 true;可传对象细化 mangle 选项)
output: # Terser output 选项
# comments: true # 保留注释

# ── SVG ───────────────────────────────────────────
svg:
enable: true # 默认 true
priority: 10
verbose: false
include: # 默认排除 *.min.svg
- "*.svg"
- "!*.min.svg"
plugins: # svgo 插件选项
# removeComments: false # 保留注释
# cleanupIds: false # 保留未使用的 ID

# ── XML(默认关闭)───────────────────────────────
xml:
enable: false # 默认 false
priority: 10
verbose: false
include:
- "*.xml"
- "!*.min.xml"
removeComments: true # 移除 XML 注释(默认 true)

# ── JSON(默认关闭)──────────────────────────────
json:
enable: false # 默认 false
priority: 10
verbose: false
include:
- "*.json"
- "!*.min.json"

# ── Gzip ──────────────────────────────────────────
gzip:
enable: true # 默认 true
priority: 10
verbose: false
include: # 支持通配符,必须带 * 和单引号
- "*.html"
- "*.css"
- "*.js"
- "*.txt"
- "*.ttf"
- "*.atom"
- "*.stl"
- "*.xml"
- "*.svg"
- "*.eot"
- "*.json"
level: 9 # 压缩级别 1-9(默认 9)

# ── Brotli ────────────────────────────────────────
brotli:
enable: true # 默认 true
priority: 10
verbose: false
include:
- "*.html"
- "*.css"
- "*.js"
- "*.txt"
- "*.ttf"
- "*.atom"
- "*.stl"
- "*.xml"
- "*.svg"
- "*.eot"
- "*.json"
level: 11 # 压缩级别 1-11(默认 11)

# ── Zstd ⚠️ 依赖 @mongodb-js/zstd(v1.x 已弃用)───
zstd:
enable: true # 默认 true
priority: 10
verbose: false
include:
- "*.html"
- "*.css"
- "*.js"
- "*.txt"
- "*.ttf"
- "*.atom"
- "*.stl"
- "*.xml"
- "*.svg"
- "*.eot"
- "*.json"
level: 3 # 压缩级别 1-22(默认 3)

glob 匹配注意

1
2
3
4
5
exclude:
- "*foo.html" # basename 匹配默认开启
- "**/bar/*/*.html" # 含斜杠的路径,basename 自动关闭
globOptions:
basename: true # 默认开启

写在最后

你或许会觉得这是AI生成的——确实借助了AI做总结,但我人工核对、调整也花了不少时间,所有配置都和我博客实际使用的一模一样,并且尽可能详细地给出了可能用到的配置。希望对你有所帮助。

 

鸣心/Write

Hexo博客:一些非常有用的插件
https://b.wihi.top/posts/1620da98.html
作者
鸣心
发布于
2026年7月31日
许可协议