这是 Shirone 博客主题的官方内容模板仓库,用于内容与代码分离的双仓管理模式。
在该模式下:
- 内容仓库(本仓库):存放你的文章、说说、相册、自定义数据与站点配置(建议设为私有仓库);
- 代码仓库:存放主题的前端源码、样式与构建流程。
推送内容后,可通过 GitHub Actions 或云平台 Deploy Hook 自动拉取最新内容并完成构建。这样既能避免主题升级时与本地文章产生合并冲突,也可以保护未公开的草稿与私密数据。
本仓库内置了完整的使用文档,存放在 docs/ 目录下(该目录已被构建与同步排除):
| 教程模块 | 入口链接 | 核心内容说明 |
|---|---|---|
| 快速入门 | 01-quickstart/ | 概念理解、content:eject 一键解耦迁出、本地预览与 CLI 工作流 |
| 全站配置 | 02-configuration/ | 最小化配置覆盖原理、站点基础、导航侧栏、追番音乐、字体与评论 |
| 内容撰写 | 03-content-authoring/ | 文章发布、动态说说、相册管理、数据实体维护与 Markdown 扩展排版语法 |
| 自动部署 | 04-deployment/ | GitHub Actions 跨仓自动构建、云平台 Deploy Hook 与常见问题排查 |
| 中文全景 | 中文教程全景 | 所有模块的全景导览与速查索引 |
| English | English Docs | Complete documentation in English |
本内容仓库与主题代码仓库之间的标准目录映射关系如下:
| 内容仓库路径 | 代码仓映射路径 | 职能说明 |
|---|---|---|
content/posts/ |
src/content/posts/ |
Markdown 与 MDX 格式的长篇博客文章 |
content/moments/ |
src/content/moments/ |
生活动态说说与即时随笔 |
content/series/ |
src/content/series/ |
系列连载实体(每篇 Markdown 对应一个系列,含标题、状态与总览) |
content/spec/ |
src/content/spec/ |
关于我与友链申请文案 |
config/ |
src/user/user-config.ts |
各功能领域的 YAML 覆盖配置(构建期自动生成桥接层) |
data/ |
src/data/ |
设备、游戏、友链、项目、技能、时间线、罗盘等结构化数据 |
assets/ |
src/assets/ |
参与构建期优化与 WebP 压缩的本地图片资源 |
public/ |
public/ |
由 Web 服务器直接分发的静态多媒体与自定义相册 |
docs/ |
无(自动排除) | 教程与使用指南,不参与生产构建与同步 |
shirone.content.json |
根目录元数据 | 内容仓库协议标识与挂载清单 |
如果你已经在本地克隆或 Fork 了主题代码仓库,只需在代码仓根目录运行一条命令即可一键完成抽离:
# 1. 运行一键解耦迁移向导(默认导出至上一级目录 ../shirone-content)
pnpm.cmd content:eject --yes
# 2. 进入导出的外部目录并推送到个人的 GitHub 私有仓库
cd ../shirone-content
git init -b main
git add .
git commit -m "feat: 初始化博客私有内容仓库"
git remote add origin git@github.com:你的用户名/my-blog-content.git
git push -u origin main如果你希望从零开始建立全新内容仓,可直接克隆本模板并重定向至个人的 GitHub 私有仓库:
git clone https://github.com/LyraVoid/Shirone-Content.git my-blog-content
cd my-blog-content
git remote set-url origin git@github.com:你的用户名/my-blog-content.git
git push -u origin main在主题代码仓库根目录下,通过环境变量指定内容仓路径即可启动日常写作与调试:
在 Windows PowerShell 中:
$env:CONTENT_DIR = "D:\Code\my-blog-content"
pnpm.cmd content:sync
pnpm.cmd dev在 macOS / Linux Bash 中:
export CONTENT_DIR="/path/to/my-blog-content"
pnpm content:sync
pnpm dev在第一个终端运行 pnpm dev,在第二个终端运行监听命令。保存文件时会自动完成同步并触发浏览器热重载:
pnpm.cmd content:watchpnpm content:validate:纯内存安全预检,快速排查 YAML 格式与字段拼写错误;pnpm content:status:检查当前内容源路径、连接状态与配置差异;pnpm content:export:按最小化覆盖原则将本地调试修改反向沉淀至内容仓;pnpm content:clean:清理代码仓内的本地同步缓存并自动创建快照备份。
config/ 目录下的每个 YAML 文件对应主题的一个功能模块,遵循最小化覆盖原则:
- 按需定制:只写想改的键,未声明字段自动继承主题默认值,平滑跟进主题升级;
- 合并规则:字典对象按层级递归合并,列表数组整体替换;
- 类型安全:构建期通过 TypeScript 严格校验,拼写错误时终端会给出纠错建议。
site.yaml:网站标题、副标题、默认背景模式、横幅壁纸多图轮播与背景纹理系统profile.yaml:博主头像、昵称、签名与社交平台链接nav-bar.yaml:顶部导航栏条目清单、预设条目(LinkPresets)与下拉子菜单sidebar.yaml:侧边栏单栏/双栏布局编排、组件清单与吸顶跟随comment.yaml:评论系统服务提供商与 Twikoo / Giscus 连接参数anime.yaml:追番追剧页面主数据源与 Bilibili/Bangumi 同步策略music.yaml:侧栏音乐播放器模式(混合/本地/自定义/网易云歌单)font.yaml:全站中文字体、西文字体与全自动字体子集裁剪流水线llms.yaml:大语言模型与 AI 检索端点(/llms.txt 与 /llms-full.txt)及私密内容脱敏footer.yaml与footer.html:页脚自定义 HTML 片段注入umami.yaml:Umami 公开统计读取,以及可选的官方访问采集(websiteId与scriptUrl必须同时填写)series.yaml:系列连载展示、索引页标题描述与文章内系列卡位置
在当前内容仓库的 Settings -> Secrets and variables -> Actions 中配置对应密钥:
- 方案 A(推荐:GitHub Actions 跨仓自动构建):
配置
DISPATCH_TOKEN(个人访问令牌,需对主题代码仓拥有 Contents 读写权限)。内容推送后自动通知代码仓拉取最新内容、完成字体子集裁剪、静态编译与全球发布。 - 方案 B(云托管平台 Deploy Hook 触发):
在 Cloudflare Pages、Vercel、腾讯云 EdgeOne 或 Netlify 等平台中配置部署钩子,并在本内容仓中配置对应的 Secret(如
CLOUDFLARE_DEPLOY_HOOK)。
当向本仓库的 main 分支推送提交时:
- 启用触发流后(将
.github/workflows/trigger-build.yml.example重命名为trigger-build.yml),工作流首先调用主题代码仓的可复用校验工作流,验证 YAML 配置语法与 Markdown 元数据; - 校验通过后,工作流自动向主题代码仓派发构建事件或请求云平台部署钩子;
- 目标平台拉取最新内容,完成全量静态打包与全球节点更新。
本项目采用 MIT 许可证。