diff --git a/README.md b/README.md
index bba046a..ee9824f 100644
--- a/README.md
+++ b/README.md
@@ -23,14 +23,13 @@
- **plugin-moments**:`/moments` 瞬间页
- **plugin-photos**:`/photos` 图库页
-- **plugin-links**:`/links` 友链页;并额外提供
- - `links-apply.html`:访客友链申请表单(调用插件公共 REST API,含图形验证码)
+- **plugin-links**:`/links` 友链页;友链申请表单已**直接内嵌**在友链页底部(点击「申请友链」展开,调用插件公共 REST API,含图形验证码);并额外提供
- `links-subscribe.html`:RSS 订阅动态聚合页(使用 `linkFeedFinder`)
- **halo-weread-plugin**:`weread.html` 微信读书书架页(前端拉取插件 `/shelf-html` 并注入)
- **留言板**:`page_guestbook.html` 以评论区作为留言板的单页模板
-- **plugin-extra-api**:API 扩展包(无独立页面),主题已适配其 shiki 代码高亮与暗色样式
+- **plugin-extra-api**:API 扩展包(无独立页面),主题已适配其 shiki 代码高亮与暗色样式;并在文章卡片 / 详情页展示**字数 + 阅读时长**、归档页展示**全站总字数**、瞬间页展示**单条字数**(通过 `extraApiStatsFinder`,插件未安装时自动隐藏)
-> `weread` / `留言板` / `友链申请` / `链接订阅` 均为「自定义页面模板」,在控制台新建单页并选择对应模板即可启用。
+> `weread` / `留言板` / `链接订阅` 均为「自定义页面模板」,在控制台新建单页并选择对应模板即可启用。`/links` 友链页与内嵌的友链申请无需单独建单页。
## 目录结构
@@ -86,6 +85,8 @@ pnpm check # 格式化 + Lint 修复
| about | avatar / bio / github_url / twitter_url / contact_email | 关于页(自定义模板 `page_about.html`)内容 |
| seo | enable_metadata | 输出 canonical / Open Graph / Twitter Card |
| seo | enable_structured_data | 输出文章页 BlogPosting JSON-LD |
+| footer | icp_number / icp_url | ICP 备案号与查询链接(默认工信部备案管理系统) |
+| footer | police_number / police_url | 公网安备号与查询链接(默认全国互联网安全管理服务平台) |
## 约定与说明
@@ -93,6 +94,7 @@ pnpm check # 格式化 + Lint 修复
- 社交分享 / 结构化数据中用 `status.permalink` 与 `site.routes.*` 拼出地址,不写死可配置路由。
- 搜索由官方 `PluginSearchWidget` 插件提供,按钮仅在插件可用时出现。
- 浏览量来自 Halo 原生统计(`post.stats.visit`),无需主题自行计数。
+- 字数 / 阅读时长来自 `halo-plugin-extra-api` 的 `extraApiStatsFinder`(插件未安装时相关展示自动隐藏),全站字数为缓存计算结果。
## 致谢
diff --git a/i18n/default.properties b/i18n/default.properties
index 76143d2..792e37f 100644
--- a/i18n/default.properties
+++ b/i18n/default.properties
@@ -33,3 +33,10 @@ footer.theme=Theme by {0}
about.social.github=GitHub
about.social.twitter=Twitter
about.social.email=Email
+post.words={0} words
+post.reading_time=About {0} min
+archive.stats.words=Total words
+links.apply=Apply for link
+links.apply_sent=Application submitted, awaiting review.
+links.apply_failed=Submission failed, please check and retry.
+links.apply_captcha_failed=Captcha failed to load, please refresh.
diff --git a/i18n/zh_CN.properties b/i18n/zh_CN.properties
index 1b844a0..f00e270 100644
--- a/i18n/zh_CN.properties
+++ b/i18n/zh_CN.properties
@@ -33,3 +33,10 @@ footer.theme=Theme by {0}
about.social.github=GitHub
about.social.twitter=Twitter
about.social.email=邮箱
+post.words={0} 字
+post.reading_time=约 {0} 分钟
+archive.stats.words=总字数
+links.apply=申请友链
+links.apply_sent=申请已提交,等待管理员审核。
+links.apply_failed=提交失败,请检查信息后重试。
+links.apply_captcha_failed=验证码加载失败,请刷新页面重试。
diff --git a/settings.yaml b/settings.yaml
index ff337e2..95ba5c7 100644
--- a/settings.yaml
+++ b/settings.yaml
@@ -74,3 +74,28 @@ spec:
label: 输出文章结构化数据
value: true
help: 在文章页输出 Schema.org BlogPosting JSON-LD;若已由插件提供,请关闭
+ - group: footer
+ label: 页脚备案
+ formSchema:
+ - $formkit: text
+ name: icp_number
+ label: ICP 备案号
+ value: ""
+ placeholder: 京ICP备12345678号
+ help: 工信部备案号,留空则不显示
+ - $formkit: text
+ name: icp_url
+ label: ICP 备案查询链接
+ value: "https://beian.miit.gov.cn"
+ help: 点击备案号跳转的查询地址,默认工信部备案管理系统
+ - $formkit: text
+ name: police_number
+ label: 公网安备号
+ value: ""
+ placeholder: 京公网安备11000002000001号
+ help: 公安机关备案号,留空则不显示
+ - $formkit: text
+ name: police_url
+ label: 公网安备查询链接
+ value: "https://beian.mps.gov.cn"
+ help: 点击公网安备号跳转的地址,默认全国互联网安全管理服务平台
diff --git a/src/archives.html b/src/archives.html
index d936c5e..858f421 100644
--- a/src/archives.html
+++ b/src/archives.html
@@ -38,6 +38,17 @@
Tags
+ 申请友链
-
-
-
-
-
-
暂无链接
+ +