5823 字
29 分钟
页面浏览--访问次数--
零基础搭建并装修精致优雅的二次元博客网站

Why Shirone?#

在检索“如何将大肥鱼接入 QQ 机器人”的教程时,我偶然刷到一个看起来不错的博客,翻了几个友链发现用的都是同一套主题,于是记下了那个主题的名字——Mizuki。一番调研后了解到该 主题仓库 已停止维护了,项目重构升级后迁到了 Shirone。

当时主要是看中了该主题提供的丰富的独立页面,甚至还有 追番展示 页面。当然,考虑到站点迁移的工作量与我并不充裕的时间,这些还不足以让我下定决心放弃现有的博客。

决定性的因素是该 主题模板 提供的一整套架构设计与性能优化方案,其中 双仓架构、实时监听 与 构建优化 尤为突出,切实解决了此前搭建与维护博客遇到的一些痛点。

遂决定忙里偷闲也要把博客搬过去。

于是按照某种惯例,这次也分享一下搭建博客的大致步骤与过程中踩的一些坑。

前置准备#

环境配置#

首先需要准备以下工具:

工具作用举例
AI Agent核心出装,零基础的基础Codex、DSH、omp 等,视自身需求选用
IDE编辑代码微软大战代码
Markdown 编辑器写文章Obsidian,或安装 IDE 插件
Git拉取上游仓库更新与推送本地仓库安装一个适配本机的版本即可
GitHub托管网站仓库,部署网页(可选)注册账号用网页版即可
Node.js管理主题模板依赖与执行内置命令建议安装最新版,并在选择版本时注意适配 pnpm

然后找一个合适的目录用于存放网站文件,不妨称之为 /site。

在该目录下打开终端并执行环境检查:

Terminal window
git -v
node -v
pnpm -v

正常输出版本号则环境已配好。

主题准备#

然后拉取两个仓库:

Terminal window
git clone https://github.com/LyraVoid/Shirone.git theme
git clone https://github.com/LyraVoid/Shirone-Content.git blog-content

这里的 theme 和 blog-content 为主题仓和内容仓的文件夹命名,可以任意定义,下文统一以此指代主题仓和内容仓,注意命令中的命名替换。

然后在 GitHub 上创建两个仓库:一个公共仓库用于托管主题仓,一个私有仓库 blog-content(内容仓)用于托管 /blog-content。内容仓的命名可以任意定义,主题仓的命名规则见下方须知。

接着,我们需要将两个仓库的远程地址重定向为自己的仓库。

主题仓:

Terminal window
cd theme
# 将原地址重命名为upstream
git remote rename origin upstream
# 添加自己的仓库地址
git remote add origin git@github.com:你的用户名/你的用户名.github.io.git
# 最后检验仓库地址状态
git remote -v

若两个仓库地址都在,则配置完成。

内容仓:

Terminal window
cd blog-content
git remote rename origin upstream
git remote add origin git@github.com:你的用户名/blog-content.git
git remote -v

同上。

如此配置,推送时 push 到 origin,更新时 fetch 自 upstream。需要注意的是,要严格贯彻双仓分离的原则,自己的配置、文章、图片等各种项目资产全部放到内容仓,主题仓中不作任何改动。在 merge 时,主题仓以上游为准,内容仓的情况比较复杂,可能存在一些冲突(如配置表更新)需要手动微调。

为了让主题仓能读取内容仓的文件,需要在 /theme 下新建一个文件 .env,内容建议直接从已有的 .env.example 复制粘贴,然后将被注释的三行代码编辑为:

CONTENT_DIR="blog-content的绝对目录"
CONTENT_REPO_URL="https://github.com/你的用户名/blog-content.git"
CONTENT_REPO_REF="main"

然后在同目录下的 .gitignore 文件中新增一行:

.env

这样就可以防止环境变量被上传到主题仓库。

最后在主题仓安装依赖,并预览确认默认网页的状态:

Terminal window
cd theme
pnpm install
pnpm dev

命令运行输出绿字后,打开浏览器 localhost:4321 即可本地预览网页状态。

至此,就可以开始正式的网站搭建了。

初识 Shirone#

项目概览#

首先大概看一下 /theme 的文件结构:

主题仓架构
  • public纯静态资源(favicon、robots.txt 等无需编译的文件)
    • favicon.svg站点主图标
  • src核心源码目录
    • assets由 Vite / Astro 处理的静态资源(默认横幅、插画)
      • fonts本地字体文件与构建期子集产物
    • componentsSvelte 5 原子组件与 Astro 业务模块
    • config强类型站点配置文件群
    • contentMarkdown 文章与独立数据集合
    • i18n多语言文案与语言包
    • integrationAstro 集成入口(路由注入、字体子集、图标收集、缩略图生成)
    • layouts顶层页面布局(Layout.astro、MainGridLayout.astro)
    • pages静态路由与动态页面生成
    • stylesM3 Expressive Tokens 与全局 CSS 样式
    • user用户配置覆盖层(由 content:sync 生成,勿手改)
    • utils算法工具库(WebCrypto、动态配色、音频单例)
  • scripts自动化构建与离线同步脚本
    • anime
      • sync.mjsBangumi / Bilibili 追番数据同步入口
  • astro.config.mjsAstro 顶层配置文件(集成 Svelte、Swup、Tailwind)
  • svelte.config.jsSvelte 5 编译器配置(启用 Runes 响应式)
  • tsconfig.jsonTypeScript 路径映射与严格模式
  • package.json项目依赖与脚本命令
  • pnpm-lock.yaml锁版本清单

其中,主题仓在双仓模式下一般不需要改动,了解大致用途即可。

因为网站在执行构建时,会用内容仓中的配置覆盖主题仓的配置。我们需要关注的是 /blog-content :

内容仓架构
  • .github
    • workflows
      • trigger-build.yml.example跨仓触发 GitHub Actions 模板
  • config全站声明式配置 YAML 文件群
    • site.yaml站点标识、时区、色彩与横幅壁纸
    • permalink.yaml全局文章固定链接与占位符规则
    • profile.yaml博主头像、昵称、签名与社交外链
    • nav-bar.yaml顶部导航栏条目与下拉菜单
    • sidebar.yaml侧边栏布局与组件清单
    • font.yaml全站字体与字形裁剪配置
    • anime.yaml追番追剧页面与同步数据源
    • music.yaml侧栏播放器模式与歌单配置
    • comment.yaml评论系统配置(Twikoo / Giscus / Waline)
    • article.yaml文章排版与阅读提醒配置
    • post-list.yaml首页文章列表与分页模式
    • devices.yaml数码装备分类与筛选规则
    • games.yaml游戏展示分类与筛选规则
    • projects.yaml开源项目分类与阶段规则
    • skills.yaml技能图谱分类与熟练度规则
    • timeline.yaml大事记时间线分类规则
    • friends.yaml友情链接分组规则
    • announcement.yaml全局浮动公告栏配置
    • expressive-code.yaml代码高亮与代码块行号
    • context-menu.yaml桌面端右键增强菜单与操作项
    • fab.yaml悬浮动作按钮 (FAB)
    • image-bloom.yaml图片泛光视觉滤镜
    • license.yaml原创知识共享协议 (CC)
    • llms.yaml大模型 AI 检索增强
    • umami.yamlUmami 访问统计分析
    • series.yaml系列连载展示与索引配置
    • footer.yaml页脚文案与备案信息
    • footer.html自定义注入的页脚 HTML 片段
  • content原创文章、说说与页面文案
    • postsMarkdown 与 MDX 博客长文 (如 guide.md)
    • moments动态生活说说 (如 first-moment.md)
    • series系列连载实体与导读 (如 guide-series.md)
    • spec特殊页面文案 (about.md, friends.md)
  • data结构化数据实体 TypeScript 模块
    • anime.ts追番本地数据快照
    • compass.ts推荐导航与罗盘条目
    • devices.ts硬件与数码设备清单
    • games.ts游戏展示清单
    • friends.ts友情链接清单
    • music.ts本地音乐曲目数据
    • projects.ts开源与个人项目清单
    • skills.ts技能图谱与熟练度数据
    • timeline.ts个人大事记时间线数据
  • assets自己的高清图片 (同步到代码仓 src/assets/,构建时自动压缩)
    • images
      • banner顶部横幅背景图,分 desktop/ 与 mobile/ 两套
      • music本地音乐的封面图
      • author.jpg博主头像
    • games游戏页面的横幅大图
  • public静态多媒体资源 (原样发布不转码)
    • assets番剧封面与媒资缓存
    • images博客图片与相册
      • albums摄影相册目录 (如 SampleAlbum/01.webp + info.json)
  • docs内容仓结构说明与写作规范
  • .gitignore
  • README.md
  • shirone.content.json内容仓库元数据(来源、挂载、保留与裁剪规则)

其中,这些是我们要用到的:

目录用途
/config编辑所有的配置表
/content编辑文章、说说、系列与特殊页面的文案
/data编辑特殊页面的内容
/assets存放各种网站资产,图片、视频、音频等
/.github编辑 GitHub 工作流,把网页部署到 GitHub Pages 时用到

在配置的过程中逐一熟悉即可。

工作流#

以下是开发实践中总结的一些常用操作,由基本指令组合而成,详见 快速开始 | 文档 | Shirone Docs 和 CLI 命令行工具链 | 文档 | Shirone Docs 。

调试:边改边看#

在 /theme 下开两个终端,分别执行:

Terminal window
pnpm dev
Terminal window
pnpm content:watch

之后在浏览器打开 localhost:4321,每当外部编辑器修改了网站文件,就会触发局部热重载,网页刷新后显示更新后的版本。

拉取上游更新#

分主题仓和内容仓两种情况。

主题仓:

Terminal window
git fetch upstream --tags
git merge upstream/main
# 重新安装依赖并检查
pnpm install
pnpm check

内容仓:

Terminal window
git fetch upstream --tags
# 检查是否存在冲突
git log --oneline HEAD..upstream/main
git merge upstream/main
# 同步内容更改
cd ..\blog
pnpm content:sync

推送更新#

在内容仓目录下执行:

Terminal window
git add -A
git commit -m "本次更改概要"
git push origin main

如果需要提交主题仓的改动,请在 /theme 目录下执行(先清理构建期物化副本,避免把生成物提交进去):

Terminal window
# 先清理主题仓中的临时副本
pnpm content:clean # 预演:打印清理计划
pnpm content:clean --yes # 实际执行清理
git add -A
git commit -m "本次更改概要"
git push origin main

配置调教:定制自己的网站#

接下来,就可以在 主题模板 的基础上,更改配置项,制作属于自己的网站了。

由于配置中的个性化选项过多,且 官方文档 提供了详尽的引导,这里仅提供简略的指引,作为实操的参考。

基本流程#

编辑配置的方法十分简单,用 IDE 打开内容仓目录,然后在 blog-content/config 下找到你要改的配置项。例如我想要修改网页的标题,这一项在 site.yaml 中,于是我打开该文件,然后根据代码中的注释与 官方文档 中对应的说明,完成修改。

如果想即时确认修改结果,参见上文的 边改边看。

配置顺序#

下面是我编辑配置的顺序,可以作为实践参考。

修改建议说明:

  • 必修:掌握每个配置项的用途并确认状态。
  • 选修:依自身需求酌情配置,不想要可以关掉,一般是 enable: false。
  • 开摆:没什么用或默认配置已经很完善了,想看看也行。

普通配置#

配置项配置文件参考文档修改建议
基础信息、配色、背景图等site.yaml基础配置、动态配色、横幅与背景必修
博主资料profile.yaml页脚与博主资料必修
顶部导航栏nav-bar.yaml导航栏配置必修
左右侧栏sidebar.yaml侧栏布局、组件总览、基础组件选修
公告栏announcement.yaml公告组件选修
音乐播放器music.yaml音乐播放器、Meting API选修
页脚footer.yaml、footer.html页脚与博主资料开摆
字体font.yaml自定义字体选修
文章页面article.yaml文章页配置开摆
悬浮控制fab.yaml悬浮控制流(FAB)开摆
右键菜单context-menu.yaml右键增强菜单选修
版权声明license.yaml版权声明选修
代码样式expressive-code.yaml代码块主题选修
评论系统comment.yaml评论系统选修
Umami 统计umami.yamlUmami 统计、Umami API选修
AI 友好内容llms.yaml订阅与机器可读输出、LLM 友好内容开摆
图片加载效果image-bloom.yaml图片色调辉光开摆
全局永久链接permalink.yaml固定链接开摆

独立页面配置#

还有一些特殊的配置项,更改的是 独立页面(归档、分类、关于等)的内容,它们除修改 .yaml 配置文件外可能还需要额外修改一些文件来写入页面内容,这里单列:

独立页面配置文件内容文件参考文档修改建议
关于无content/spec/about.md关于页必修
动态无content/moments/瞬间页选修
友链无data/friends.ts友链页必修
项目projects.yamldata/projects.ts项目页选修
技能skills.yamldata/skills.ts技能页选修
设备devices.yamldata/devices.ts设备页选修
游戏games.yamldata/games.ts游戏页选修
系列series.yamlcontent/series/系列页选修
时间线timeline.yamldata/timeline.ts时间线选修
追番anime.yaml无番剧页、Bangumi API、Bilibili API、数据快照与离线同步选修

独立页面较多,根据自身需求选用即可,没有必要全用。也可以先做一部分,等到有需求后再增加。

在 Shirone 写作#

编辑配置表使其不断适配个性化需求的过程是令人上头的,但不要忘记博客网站最初的目的——博客网站一定要有博客。

Shirone 为 Markdown 提供了丰富的格式支持与特性扩展,与一种合乎逻辑的 多文件夹 组织方式。

用 Markdown 写作#

官方文档 提供了一份 入门教程,基本覆盖了 Markdown 的常用语法,以供快速上手。此外,还有大量的富文本特性有待探索。在此之前,我们需要准备一个 Markdown 文本编辑器,这里推荐 Obsidian,原因如下:

  • 强大的插件生态
  • 较低的学习成本
  • 天然支持 Frontmatter

对于 Obsidian 用户,只需将 /blog-content 作为一个本地仓库(Vault)打开,就会在 /blog-content 下创建 .obsidian 文件,并将其新建为一个仓库。如果此前使用过 Obsidian 并已有一个配置完善的仓库,可以直接将它的 .obsidian 文件粘贴并替换该文件,让 /blog-content 仓库直接继承此前的所有配置项与插件。

编写并发布第一篇文章#

以本文为例,首先在内容仓的博文目录下新建存放新文章的目录 /content/posts/site-building,然后在其下新建 site-building.md,并在文件开头填入:

---
title: 零基础搭建并装修精致优雅的二次元博客网站
permalink: site-building
published: 2026-10-24
publishedAt: 2026-10-24T14:25:41+08:00
description: 基于 Astro 框架 + Shirone 主题的静态博客建站方案,在官方文档的基础上补充了基于实践经验的整理与引导,以便上手和学习。
image: ./cover.png
tags:
  - 指南
  - 博客
category: 技术
draft: false
lang: zh-CN
---

这是博文的 Frontmatter,完整的配置项见 Frontmatter | 文档,这里只介绍重点:

permalink可选string

文章的固定链接,如上填写则文章将固定在 网站地址/posts/site-building。

image可选string

封面,如上填写,则会取同目录下的 cover.png 作为封面。

draft可选boolean

是否为草稿,填 true 不会发布,填 false 则会发布。

详见 编写文章 | 文档。

发个说说#

上文提到的 独立页面 中,瞬间页 相当于 QQ 空间,可用于发布一些轻量的内容,如随想、灵感、日常等。

要发布一条说说,只需在 content/moments 下新建 .md 文件,建议命名为 日期-标题,例如 2026-10-24-first-moment.md。然后填写说说的 Frontmatter:

---
published: 2026-10-24T21:30:00+08:00 # 发布时间(含时区),必填
mood: material-symbols:sentiment-excited-outline-rounded # 心情图标
tags: # 标签,用于筛选
- 随想
images: # 图片排版数组
- src: /images/moments/arknights-7_5.webp
alt: 《明日方舟》7.5周年活动
---
# 下为正文部分

这里 mood 使用了来自 materiail-symbols 的图标,目前 Shirone 支持 Iconify 图标库中的图标,默认安装的库有 fa7-brands、fa7-solid、material-symbols 和 simple-icons。

想使用图标时,可以到 Icônes 查找想用的图标并复制图标全名。

另外,说说的配图建议集中写在 Frontmatter 中,并将图片资产统一存放于内容仓的 /public/images/moments 下。

各种特性#

下面展示一部分 Shirone 支持的语法特性 。

GitHub 仓库卡片#

::github{repo="LyraVoid/Shirone"}
::github{repo="LyraVoid/Shirone-Content"}
LyraVoidShirone

LyraVoidShirone-Content

嵌入 Bilibili 视频#

::bilibili{bvid="BV1KKtV69E8a" title="主题宣传视频" p=1 preload="auto"}
演示视频Bilibili

折叠卡片#

默认展开的项目

这里是第一个卡片的内容正文。

默认折叠的项目

这里是第二个卡片的内容正文。

部署网站#

最后介绍如何将网站部署到不同的平台。

为此,我们需要准备:

  • 一个域名(部署到 GitHub Pages 则不需要)
  • 一台服务器或云服务(Vercel、EdgeOne、Netlify 等均提供适合个人静态博客的免费额度)
  • 已托管的主题仓和内容仓

这部分操作详见 官方文档 中的部署部分,建议从 本地构建 看起。这里仅介绍我采用的 GitHub Pages 部署方式。

GitHub Pages 部署#

1. 基础配置#

我需要将网站部署到 https://tghyscifi.github.io,因此编辑 site.yaml:

site.yaml
site: "https://tghyscifi.github.io"
base: "/"

2. 配置 GitHub Actions#

托管在 GitHub 的仓库只包含了源代码,我们需要告诉 GitHub 的云服务如何构建网站,因此需要编辑 GitHub Actions 工作流,内容仓与主题仓各一个。

内容仓#

在 /blog-content/.github/workflows 下新建 trigger-build.yml:(参考 trigger-build.yml.example)

trigger-build.yml
name: Trigger Theme Build
on:
  push:
    branches:
      - main
    paths:
      - "content/**"
      - "config/**"
      - "data/**"
      - "assets/**"
      - "public/**"
      - "shirone.content.json"
  workflow_dispatch: {}
concurrency:
  group: trigger-build
  cancel-in-progress: true
jobs:
  validate:
    uses: LyraVoid/Shirone/.github/workflows/content-validate.yml@main
    with:
      theme_repository: LyraVoid/Shirone
      theme_ref: main
  dispatch:
    needs: validate
    runs-on: ubuntu-latest
    timeout-minutes: 5
    steps:
      - name: Dispatch build event to theme repository
        env:
          DISPATCH_TOKEN: ${{ secrets.DISPATCH_TOKEN }}
        if: ${{ env.DISPATCH_TOKEN != '' }}
        uses: peter-evans/repository-dispatch@v4
        with:
          token: ${{ env.DISPATCH_TOKEN }}
          repository: tghyscifi/tghyscifi.github.io # TODO: 使用者请替换为自己的主题代码仓
          event-type: content-updated
          client-payload: '{"sha": "${{ github.sha }}"}'
主题仓#

在 /theme/.github/workflows 下新建 deploy.yml:(参考 deploy.yml.example)

deploy.yml
name: Deploy
on:
  push:
    branches: [main]
    paths-ignore:
      - "docs/**"
      - "rules/**"
      - "README*.md"
      - "*.md"
  repository_dispatch:
    types: [content-updated]
  workflow_dispatch:
    inputs:
      content_ref:
        description: "内容仓 ref 或 commit SHA(留空使用 main)"
        required: false
        default: ""
  schedule:
    - cron: "17 4 * * *"
concurrency:
  group: deploy
  cancel-in-progress: true
permissions:
  contents: read
  pages: write
  id-token: write
env:
  CONTENT_REPOSITORY: tghyscifi/blog-content  # TODO: 替换为你的内容仓。
  CONTENT_WORKING_COPY: .content-src
jobs:
  deploy:
    name: Build and deploy
    runs-on: ubuntu-latest
    timeout-minutes: 20
    environment:
      name: github-pages
      url: ${{ steps.deployment.outputs.page_url }}
    env:
      CI: true
      CONTENT_DIR: .content-src
    steps:
      - name: Resolve content ref
        id: target
        env:
          PAYLOAD_SHA: ${{ github.event.client_payload.sha }}
          INPUT_REF: ${{ github.event.inputs.content_ref }}
        run: |
          set -euo pipefail
          ref="${PAYLOAD_SHA:-}"
          [ -n "$ref" ] || ref="${INPUT_REF:-}"
          [ -n "$ref" ] || ref="main"
          echo "ref=$ref" >> "$GITHUB_OUTPUT"
      - name: Checkout theme
        uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
      - name: Checkout content
        uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
        with:
          repository: ${{ env.CONTENT_REPOSITORY }}
          ref: ${{ steps.target.outputs.ref }}
          path: ${{ env.CONTENT_WORKING_COPY }}
          token: ${{ secrets.CONTENT_REPO_TOKEN }}
          persist-credentials: false
      - name: Record content commit
        id: content
        run: |
          set -euo pipefail
          echo "sha=$(git -C '${{ env.CONTENT_WORKING_COPY }}' rev-parse HEAD)" >> "$GITHUB_OUTPUT"
      - name: Set up pnpm
        uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda # v4.1.0
        with:
          run_install: false
      - name: Set up Node.js
        uses: actions/setup-node@cdca7365b2dadb8aad0a33bc7601856ffabcc48e # v4.3.0
        with:
          node-version: 22
          cache: pnpm
          cache-dependency-path: pnpm-lock.yaml
      - name: Restore build caches
        uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0
        with:
          path: |
            public/assets/moments/thumbnails
          key: ${{ runner.os }}-shirone-thumbnails-${{ hashFiles('pnpm-lock.yaml') }}
          restore-keys: |
            ${{ runner.os }}-shirone-thumbnails-
      - name: Install dependencies
        run: pnpm install --frozen-lockfile --prefer-offline
      - name: Materialize content and config
        run: pnpm content:sync
      - name: Restore anime cache
        uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0
        with:
          path: |
            src/data/anime-snapshots
            public/assets/anime/covers
          key: ${{ runner.os }}-shirone-anime-${{ hashFiles('pnpm-lock.yaml') }}
          restore-keys: |
            ${{ runner.os }}-shirone-anime-
      - name: Sync anime data (best effort)
        run: pnpm anime:sync --if-stale
        env:
          BILI_SESSDATA: ${{ secrets.BILI_SESSDATA }}
      - name: Build site
        run: pnpm build
        env:
          BILI_SESSDATA: ${{ secrets.BILI_SESSDATA }}
      - name: Upload Pages artifact
        uses: actions/upload-pages-artifact@v3
        with:
          path: dist
      - name: Deploy to Pages
        id: deployment
        uses: actions/deploy-pages@v4
      - name: Summarize
        if: always()
        run: |
          set -euo pipefail
          {
            echo "### Shirone deploy"
            echo ""
            echo "- 内容仓:\`${CONTENT_REPOSITORY}\`"
            echo "- 内容 ref:\`${{ steps.target.outputs.ref }}\`"
            echo "- 内容 commit:\`${{ steps.content.outputs.sha }}\`"
            if [ -f content.lock.json ]; then
              echo ""
              echo "<details><summary>content.lock.json</summary>"
              echo ""
              echo '```json'
              cat content.lock.json
              echo '```'
              echo ""
              echo "</details>"
            fi
          } >> "$GITHUB_STEP_SUMMARY"

3. 编辑仓库设置#

由于有两个仓库,跨仓构建要求两个仓库之间的通信,这就需要生成两个 GitHub PAT,点此直达:New Fine-grained Personal Access Token。

先生成一个 shirone-dispatch,选择一个有效期(建议 90 天并定期轮换,不建议设为永久),将 Repository access 设置为 Only select repositories,并选择主题仓,最后在 Repository permissions 下找到 Contents,设为 Read and write,点击生成后立刻复制下来。

再进入内容仓的 Setting 页面,在 Secrets and variables -> Actions 点击 New repository secret,密钥名为 DISPATCH_TOKEN,其值为刚才复制的内容。

填写完毕后,按相同的流程生成第二个 PAT,这次命名为 shirone-content-read,Only select repositories 选择内容仓,Repository permissions.Contents 改为 Read(只读即可)。之后在主题仓的密钥界面新建密钥 CONTENT_REPO_TOKEN,并粘贴密钥值。

两次操作总结如下:

PATshirone-dispatchshirone-content-read
有效期自定义自定义
Repository accessOnly select repositoriesOnly select repositories
选中仓库主题仓内容仓
Repository permissions.ContentsRead and writeRead
所在仓库内容仓主题仓
密钥名DISPATCH_TOKENCONTENT_REPO_TOKEN

配置完成后,在主题仓库的 Setting 页,将 Pages->Source 改为 GitHub Actions 并保存。

之后,先推送主题仓,再推送内容仓,GitHub Actions 跑完后,网站就部署完毕了。

个人访问令牌个人访问令牌个人访问令牌
零基础搭建并装修精致优雅的二次元博客网站
https://tghyscifi.github.io/posts/site-building/site-building/
作者
瞳观幻域
发布于
2026-10-24
许可协议
CC BY-NC-SA 4.0

分享文章

生成精美分享图或复制链接,与更多人分享本文。

继续阅读

换条路线

从其他文章中稳定抽取

评论