内容分离架构概览
约 2124 字大约 7 分钟
2026-09-01
Shirone 提供了原生支持的内容分离架构,允许将 主题前端工程 与 博主个人内容 分别存放于两个相互独立的 Git 仓库中进行解耦管理。
核心设计概念
如果把个人博客比作一处居所:
- 主题代码仓库相当于房屋的建筑框架、水电气管线与施工体系:负责交互动效、深浅色模式、响应式布局、图片优化转码与前端构建流水线,由主题维护者 公开维护与持续迭代;
- 个人内容仓库相当于入住后的家具、照片、书籍与日记:包含你的所有文章、说说、相册照片、个人资料实体与个性化配置覆盖,由你 完全掌控并可设为私有。
传统的单仓库模式中,博主撰写的文章、相册媒体与主题源码紧密耦合在同一个 Git 仓库内。每当主题发布新功能或修复缺陷时,直接合并上游更新极易产生 Git 冲突,甚至不小心将未公开的随笔与草稿推送到公开仓库中。
Shirone 的内容分离架构彻底解决了这一痛点:你的内容独立保存在 私有内容仓库 中,主题代码仓库仅负责拉取内容并完成编译构建。
双仓协作的核心价值
通过将内容与程序分离,博主可以像使用无头 CMS(Headless CMS)一样自由编写 Markdown 与配置,同时无缝跟随主题主线的最新功能演进。
内容仓库组织结构(Shirone-Content)
在内容分离架构中,所有与个人创作、相册媒体、静态数据和个性化配置相关的文件均集中在独立的内容仓库(以官方模板仓库 LyraVoid/Shirone-Content 为规范标准)中管理:
LyraVoid/Shirone-Content 标准结构
.github
workflows
trigger-build.yml.example# 跨仓触发 GitHub Actions 模板
config# 全站声明式配置 YAML 文件群
site.yaml# 站点标识、时区、色彩与横幅壁纸
profile.yaml# 博主头像、昵称、签名与社交外链
nav-bar.yaml# 顶部导航栏条目与下拉菜单
sidebar.yaml# 侧边栏布局与组件清单
font.yaml# 全站字体与字形裁剪配置
anime.yaml# 追番追剧页面与同步数据源
music.yaml# 侧栏播放器模式与歌单配置
comment.yaml# Twikoo 评论系统配置
article.yaml# 文章排版与阅读提醒配置
post-list.yaml# 首页文章列表与分页模式
devices.yaml# 数码装备分类与筛选规则
projects.yaml# 开源项目分类与阶段规则
skills.yaml# 技能图谱分类与熟练度规则
timeline.yaml# 大事记时间线分类规则
friends.yaml# 友情链接分组规则
announcement.yaml# 全局浮动公告栏配置
expressive-code.yaml# 代码高亮与代码块行号
fab.yaml# 悬浮动作按钮 (FAB)
image-bloom.yaml# 图片泛光视觉滤镜
license.yaml# 原创知识共享协议 (CC)
llms.yaml# 大模型 AI 检索增强
umami.yaml# Umami 访问统计分析
footer.yaml# 页脚文案与备案信息
footer.html# 自定义注入的页脚 HTML 片段
content# 原创文章、说说与页面文案
posts# Markdown 与 MDX 博客长文 (如 guide.md)
…
moments# 动态生活说说 (如 first-moment.md)
…
spec# 特殊页面文案 (about.md, friends.md)
…
data# 结构化数据实体 TypeScript 模块
anime.ts# 追番本地数据快照
compass.ts# 推荐导航与罗盘条目
devices.ts# 硬件与数码设备清单
friends.ts# 友情链接清单
music.ts# 本地音乐曲目数据
projects.ts# 开源与个人项目清单
skills.ts# 技能图谱与熟练度数据
timeline.ts# 个人大事记时间线数据
public# 静态多媒体资源 (原样发布不转码)
assets# 番剧封面与媒资缓存
…
images# 博客图片与相册
albums# 摄影相册目录 (如 SampleAlbum/01.webp + info.json)
…
.gitignore
README.md
shirone.content.json# 内容仓库元数据标识与挂载清单
目录职能划分
config/(声明式配置覆盖):按功能领域拆分的轻量 YAML 文件,遵循 最小化覆盖原则,未声明字段自动继承主题默认值;content/(核心创作载体):存放所有 Markdown/MDX 博客长文、即时说说与自定义页面文案;data/(结构化数据源):通过 TypeScript 模块直接管理项目、设备、技能、时间线与友链等结构化数据;public/(静态媒体与相册):存放原图、番剧封面缓存与相册摄影集,构建时原样发布至静态站点根目录;shirone.content.json(内容清单描述文件):声明内容源协议、挂载映射表与文件保护白名单。
双仓协作与自动化流水线
整个内容同步、覆盖编译与发布流程由自动化脚本驱动:
在内容仓库创作
使用任意 Markdown 编辑器撰写文章或调整 YAML 配置文件,通过 Git 推送到私有内容仓库。
自动化流水线触发
内容仓库中的工作流自动向主题代码仓库发送 派发信号,或由云托管平台的部署钩子捕获更新。
内容物化与配置合并
主题代码仓库自动拉取对应版本的内容,并将 YAML 配置覆盖与主题默认配置执行 对象递归深度合并。
编译与全网发布
主题代码仓库完成中文字体子集抽取、静态页面渲染与资源压缩,并自动部署至全网 CDN。
核心优势
1. 主题升级零冲突
开源主题会持续演进并加入新特性。在内容分离架构下,你的个人文章、相册与配置文件完全不在主题代码仓库中。当主题发布新版本时,直接在代码仓同步上游更新即可,实现 主题升级零冲突。
2. 保护个人私密内容
许多博主希望将自己的主题代码仓库公开分享给开源社区,但博客内容中通常包含:
- 未完成的草稿与生活随笔;
- 个人家庭相册与原图照片;
- 站点的私有凭据或未公开数据。
通过双仓架构,你可以将 内容仓库设为私有,将 主题代码仓库设为公开,在享受开源社区红利的同时彻底隔离私密数据。
隐私隔离保护
将文章与个人数据存放在 Private 仓库中,即使主题代码仓库完全公开并开源,你的草稿与相册原图也不会暴露在公网。
3. 专注内容创作与轻量化维护
创作者日常无需关心复杂的 Node.js 依赖链、构建工具版本与打包脚本。写作时仅需关注两部分内容:
- 在
content/目录下用 Markdown 撰写长文与动态; - 在
config/目录下编写轻量 YAML 文件调整站点基础信息与配色。
单仓与双仓架构选型对比
| 评估维度 | 默认单仓模式 起步 | 内容分离双仓模式 推荐 |
|---|---|---|
| 适用人群 | 刚开始接触静态博客、追求极简起步的博主 | 长期稳定写作、需要保护私密草稿、频繁跟随主题更新的博主 |
| 仓库数量 | 1 个(代码与内容混存) | 2 个(公开主题仓 + 私有内容仓) |
| 主题升级成本 | 需手动拉取上游并解决潜在 Git 冲突 | 直接拉取上游最新分支,零合并冲突 |
| 内容私密性 | 若代码仓开源,草稿与未发布文章一并公开 | 内容仓完全私有,代码仓可安全开源 |
| 日常写作工具 | 需在主题工程内或使用指定编辑器 | 可使用 Obsidian、VS Code、Typora 等外部工具独立打开内容仓 |
| 学习与上手成本 | 零额外配置,克隆即用 | 需一次性配置访问令牌或部署钩子 |
下一步
- 前往 初始化私有内容仓库:掌握一键迁出与模板初始化的两种建仓方式