diff --git a/docs/content/en/blog/DevLog-2025.08.01/CharacterMatcher.vue b/docs/content/en/blog/DevLog-2025.08.01/CharacterMatcher.vue
index f122c1e7b..9dd6490e3 100644
--- a/docs/content/en/blog/DevLog-2025.08.01/CharacterMatcher.vue
+++ b/docs/content/en/blog/DevLog-2025.08.01/CharacterMatcher.vue
@@ -1,5 +1,6 @@
-
-
-
-
-
-
-
- 图例
-
-
- 字符
-
-
- 不完整字素簇
-
-
- 完整字素簇
-
-
-
-
diff --git a/docs/content/zh-Hans/blog/DevLog-2025.08.01/CharacterShowcase.vue b/docs/content/zh-Hans/blog/DevLog-2025.08.01/CharacterShowcase.vue
deleted file mode 100644
index ee905e9dc..000000000
--- a/docs/content/zh-Hans/blog/DevLog-2025.08.01/CharacterShowcase.vue
+++ /dev/null
@@ -1,38 +0,0 @@
-
-
-
-
-
- {{ value }}
-
-
-
-
- {{ char.codePointAt(0)?.toString(16).toUpperCase() }}
-
-
-
-
diff --git a/docs/content/zh-Hans/blog/DevLog-2025.08.01/GraphemeClusterAssembler.vue b/docs/content/zh-Hans/blog/DevLog-2025.08.01/GraphemeClusterAssembler.vue
deleted file mode 100644
index a76dc5546..000000000
--- a/docs/content/zh-Hans/blog/DevLog-2025.08.01/GraphemeClusterAssembler.vue
+++ /dev/null
@@ -1,34 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/docs/content/zh-Hans/blog/DevLog-2025.08.01/GraphemeClusterInspector.vue b/docs/content/zh-Hans/blog/DevLog-2025.08.01/GraphemeClusterInspector.vue
deleted file mode 100644
index 776189a8e..000000000
--- a/docs/content/zh-Hans/blog/DevLog-2025.08.01/GraphemeClusterInspector.vue
+++ /dev/null
@@ -1,104 +0,0 @@
-
-
-
-
-
- 文本
-
-
-
-
-
-
- 字素簇
-
-
-
-
-
-
-
-
- 字符
-
-
-
-
-
-
-
-
-
-
diff --git a/docs/content/zh-Hans/blog/DevLog-2025.08.01/RollingText.vue b/docs/content/zh-Hans/blog/DevLog-2025.08.01/RollingText.vue
deleted file mode 100644
index b5bc00a7f..000000000
--- a/docs/content/zh-Hans/blog/DevLog-2025.08.01/RollingText.vue
+++ /dev/null
@@ -1,60 +0,0 @@
-
-
-
-
-
-
-
-
-
diff --git a/docs/content/zh-Hans/blog/DevLog-2025.08.01/assets/animated-chat-bubble.mp4 b/docs/content/zh-Hans/blog/DevLog-2025.08.01/assets/animated-chat-bubble.mp4
deleted file mode 100644
index c87b11b1d..000000000
Binary files a/docs/content/zh-Hans/blog/DevLog-2025.08.01/assets/animated-chat-bubble.mp4 and /dev/null differ
diff --git a/docs/content/zh-Hans/blog/DevLog-2025.08.01/index.md b/docs/content/zh-Hans/blog/DevLog-2025.08.01/index.md
index cb36d02c4..3643d8664 100644
--- a/docs/content/zh-Hans/blog/DevLog-2025.08.01/index.md
+++ b/docs/content/zh-Hans/blog/DevLog-2025.08.01/index.md
@@ -5,10 +5,10 @@ date: 2025-08-01
---
## 开始之前
@@ -20,13 +20,13 @@ import RollingText from './RollingText.vue'
-> 下方动画效果可通过右上角的“减少动画”开关控制
+> 下方动画效果可通过右上角的「减少动画」开关控制
> **下方动画效果已关闭**
-> 可以通过右上角的“减少动画”开关重新开启动画
+> 可以通过右上角的「减少动画」开关重新开启动画
@@ -48,7 +48,7 @@ import RollingText from './RollingText.vue'
在 Project AIRI 里,我们的伙伴 [@nekomeowww](https://github.com/nekomeowww) 也做了一个丝滑的聊天气泡组件:
@@ -72,7 +72,7 @@ const decoded = decoder.decode(chunk, { stream: true })
## 这样安全吗?
-太长不看:**不的**。
+太长不看:**并不**。
TextDecoder 的确能帮我们把字节流正确解码成 Unicode 码点(字符)。但在 Unicode 里,还有「字素簇」(grapheme cluster)这个概念,它把多个码点组合成一个「视觉上」一体的字符。例如「👩👩👧👦」(家庭)这个 Emoji,底层其实由多个码点组成,但视觉上是一个字符。它们之间通过零宽连接符(ZWJ,码点 `U+200D`)连接。
@@ -138,7 +138,7 @@ while (true) {
-## Clustr 的诞生
+## [Clustr](https://github.com/sumimakito/clustr) 的诞生
写这篇 DevLog 的时候,社区中已经有不少可以把字符串拆分成字素簇的库了。但我没找到一个既能接受 UTF-8 字节流、又能随到随输出字素簇的实现。所以我自己实现了一个,并把思路分享给了大家,并取名为 [Clustr](https://github.com/sumimakito/clustr),和 Unicode 的「字素簇」概念相应。