Pages CMS 部署教程:为 Astro 博客装上 Git 原生 CMS

Pages CMS 部署教程:为 Astro 博客装上 Git 原生 CMS

2026年9月6日星期日 · #部署教程 推荐 / 效率 / 教程 / 分享 · 2217 字 11 分钟 ·
- 浏览量
·
简介

详解为 Astro 博客配置 Pages CMS 的完整流程,包含托管版部署、配置文件解读与自托管方案,实现 Git 原生内容管理体验。

Pages CMS 部署教程:为 Astro 博客装上 Git 原生 CMS

作为一个 Astro 博客的作者,你可能早已习惯了用 Markdown 写文章、用 Git 做版本控制的美妙体验。但每当想写点东西时,总得打开代码编辑器,在 Frontmatter 和正文之间来回切换,多少有点不够「丝滑」。

有没有一种方法,既能保留 Git 的所有优势(版本控制、分支管理),又能拥有像 Notion 或 WordPress 那样友好的编辑界面?

Pages CMS 就是答案。它不是一个存储你内容的第三方数据库,而是一个直接运行在你 GitHub 仓库之上的「可视化编辑器」。你提交的每一处修改,都会直接变成一次 Git 提交。对于 Astro 这种基于文件路由和 Content Collection 的框架来说,简直是天作之合。

本文将从零开始,带你为 Astro 项目配置并部署 Pages CMS。


为什么选择 Pages CMS?#

在开始动手之前,先来聊聊它为什么值得一试。

  • 真正的 Git 原生:Pages CMS 本身不存数据,它只是 GitHub 的一个优雅客户端。你的所有文章、图片、配置都安全地躺在你的仓库里,随时可以 git log 查看历史,甚至可以 git revert 回滚误操作。
  • 为 SSG 而生:它完美匹配 Astro、Next.js、Hugo 等静态站点生成器的工作流。你不需要为了适配 CMS 去修改路由或数据获取逻辑,只需告诉它你的 Markdown 文件放在哪。
  • 开发体验友好:它的配置基于一个 .pages.yml 文件,完全声明式。你可以精确控制编辑器的表单字段,甚至定义字段的验证规则,让非技术背景的写作者也能轻松上手,而不必担心格式错误。

快速开始:托管版(推荐)#

对于绝大多数个人博客作者,最快的方式是使用 Pages CMS 官方提供的托管服务。

  1. 打开 app.pagescms.org](https://app.pagescms.org)。)。)
  2. 点击 Sign in with GitHub,使用你的 GitHub 账号登录。
  3. 授权 Pages CMS 应用。你可以选择让它访问所有仓库,或仅选中的特定仓库(为了安全,通常推荐后者)。
  4. 登录后,你会看到你有权限的仓库列表。点击你想管理的博客仓库。
  5. 如果仓库根目录还没有 .pages.yml 配置文件,Pages CMS 会贴心地提示你创建一个。
  6. 最关键的一步:将我文末附上的配置文件内容,粘贴到新建的 .pages.yml 中。这份配置是为 Firefly 博客主题深度定制的,涵盖了文章、关于页、友链以及各种站点配置。
  7. 保存文件并提交到仓库主分支。
  8. 刷新 Pages CMS 页面,你就会在左侧导航栏看到「📝 博客文章」、「⚙️ 站点设置」等分组了。现在,点击「博客文章」,试试新建一篇吧!

附录:Firefly 博客完整配置#

将以下内容保存为项目根目录的 .pages.yml 即可。这份配置完整映射了 Firefly 主题的所有可编辑内容,你可以直接使用,也可以根据自己的需求调整字段。

# PagesCMS 配置 - Firefly 博客
# 基于 PagesCMS v2.x 官方 schema 编写
# 文档: https://pagescms.org/docs/configuration/
media:
# 文章配图 - 上传到文章目录的 images 子文件夹
- name: post-images
label: 文章配图
input: src/content/posts/images
output: /images
categories: [image]
# public 静态资源 - 封面图、音乐封面等
- name: assets
label: 站点资源
input: public/assets
output: /assets
categories: [image]
# 头图 / 壁纸
- name: banner
label: 站点头图
input: public/assets/images
output: /assets/images
categories: [image]
content:
# ============================================================
# 📝 内容页面
# ============================================================
- name: content-pages
label: 📝 内容页面
type: group
items:
# 博客文章 (collection)
- name: posts
label: 📝 博客文章
type: collection
path: src/content/posts
format: yaml-frontmatter
filename:
template: "{primary}.md"
field: create
exclude: ["**/images/**", "**/*.avif", "**/*.webp", "**/*.png", "**/*.jpg"]
view:
primary: title
fields: [title, published, tags, category, draft, pinned]
sort: ["published desc", "title asc"]
search: [title, description, tags, category]
default:
sort: published
order: desc
fields:
- name: title
label: 标题
type: string
required: true
description: 文章标题
- name: published
label: 发布时间
type: date
required: true
options:
time: false
format: yyyy-MM-dd
- name: updated
label: 更新时间
type: date
options:
time: false
format: yyyy-MM-dd
- name: draft
label: 草稿
type: boolean
default: false
- name: description
label: 文章摘要
type: text
description: 简短描述,留空则自动截取正文
- name: image
label: 封面图(上传)
type: image
description: 文章封面图片路径
- name: image
label: 封面图(网络)
type: string
description: 文章封面图片路径
- name: tags
label: 标签
type: string
description: 多个标签用逗号分隔
- name: category
label: 分类
type: string
description: 文章分类(如"资源推荐"、"部署教程"、"生活日常"、"感悟杂记")
- name: lang
label: 语言
type: select
options:
values:
- { label: 中文, value: "" }
- { label: English, value: en }
- { label: 日本語, value: ja }
- { label: 繁體中文, value: zh_TW }
- { label: Русский, value: ru }
- name: pinned
label: 置顶
type: boolean
default: false
- name: author
label: 作者
type: string
description: 覆盖默认作者名(通常留空)
- name: sourceLink
label: 原文链接
type: string
description: 转载/翻译文章的原始出处
- name: licenseName
label: 许可协议名称
type: string
description: 如 CC BY-NC-SA 4.0
- name: licenseUrl
label: 许可协议链接
type: string
- name: comment
label: 启用评论
type: boolean
default: true
- name: password
label: 文章密码
type: string
description: 设置后需要密码才能查看(留空为公开)
- name: passwordHint
label: 密码提示
type: string
description: 提示访问者密码是什么
- name: body
label: 正文
type: rich-text
required: true
# 关于页面
- name: about
label: 📄 关于页面
type: file
path: src/content/spec/about.md
format: yaml-frontmatter
fields:
- name: title
label: 页面标题
type: string
default: "关于我"
- name: body
label: 正文
type: rich-text
# 友情链接
- name: friends
label: 🔗 友情链接
type: file
path: src/content/spec/friends.mdx
format: yaml-frontmatter
fields:
- name: title
label: 页面标题
type: string
default: 友情链接
- name: description
label: 页面描述
type: string
- name: body
label: 正文
type: code
options:
format: mdx
description: MDX 格式(包含 JSX 组件),使用代码模式编辑
# 留言板
- name: guestbook
label: 📬 留言板
type: file
path: src/content/spec/guestbook.md
format: yaml-frontmatter
fields:
- name: title
label: 页面标题
type: string
default: 留言板
- name: body
label: 正文
type: rich-text
# ============================================================
# ⚙️ 站点设置
# ============================================================
- name: site-settings
label: ⚙️ 站点设置
type: group
description: 核心站点配置,包括标题、域名、SEO、个人信息等
items:
- name: site-config
label: 🌐 站点主配置
type: file
path: src/config/siteConfig.ts
format: code
description: 站点标题、URL、主题色、分页、Bangumi 等核心设置
- name: profile-config
label: 👤 个人信息
type: file
path: src/config/homeConfig.ts
format: code
description: 头像、昵称、签名、社交链接等个人资料配置
- name: announcement-config
label: 📢 公告栏
type: file
path: src/config/announcementConfig.ts
format: code
description: 博客顶部公告栏的标题、内容和链接配置
- name: license-config
label: 📜 许可协议
type: file
path: src/config/licenseConfig.ts
format: code
description: 文章底部版权声明(如 CC BY-NC-SA 4.0)
# ============================================================
# 🎨 布局与外观
# ============================================================
- name: layout-appearance
label: 🎨 布局与外观
type: group
description: 导航栏、侧边栏、壁纸、字体等视觉相关配置
items:
- name: nav-bar-config
label: 🧭 导航栏
type: file
path: src/config/navBarConfig.ts
format: code
description: 导航栏菜单项、链接预设和搜索配置
- name: sidebar-config
label: 📐 侧边栏布局
type: file
path: src/config/sidebarConfig.ts
format: code
description: 侧边栏位置、组件(个人资料、公告、音乐、分类、标签等)的显示和排序
- name: footer-config
label: 📏 页脚设置
type: file
path: src/config/footerConfig.ts
format: code
description: 页脚开关控制
- name: font-config
label: 🔤 字体设置
type: file
path: src/config/fontConfig.ts
format: code
description: 全局字体、横幅字体、Google Fonts、子集化等配置
- name: cover-image-config
label: 🖼️ 文章封面图
type: file
path: src/config/coverImageConfig.ts
format: code
description: 文章详情页封面图显示和随机图 API 配置
- name: expressive-code-config
label: 💻 代码块样式
type: file
path: src/config/expressiveCodeConfig.ts
format: code
description: 代码高亮主题、折叠插件、语言徽章等代码块配置
# ============================================================
# 🔧 功能配置
# ============================================================
- name: feature-settings
label: 🔧 功能配置
type: group
description: 评论、统计、音乐、打赏、友链、特效等功能模块配置
items:
- name: comment-config
label: 💬 评论系统
type: file
path: src/config/commentConfig.ts
format: code
description: Twikoo / Waline / Giscus / Artalk / Disqus 评论系统配置
- name: calendar-config
label: 📅 日历页面
type: file
path: src/config/calendarConfig.ts
format: code
description: 日历页标题、节日 API(timor.tech)、内置节日(含农历)、生日与日程安排配置
- name: music-config
label: 🎵 音乐播放器
type: file
path: src/config/musicConfig.ts
format: code
description: 音乐播放模式(Meting API / 本地音乐)、播放列表、歌词设置
- name: sponsor-config
label: 💰 打赏页面
type: file
path: src/config/sponsorConfig.ts
format: code
description: 打赏用途、支付方式(支付宝/微信/Ko-fi/爱发电)、赞助者列表
- name: friends-data
label: 🔗 友链数据
type: file
path: src/config/friendsConfig.ts
format: code
description: 友链列表(站点名、头像、描述、链接、标签、权重)
- name: gallery-config
label: 🖼️ 相册配置
type: file
path: src/config/galleryConfig.ts
format: code
description: 相册列表(ID、名称、描述、地点、日期、标签、密码)和布局设置
- name: pio-config
label: 🎭 看板娘
type: file
path: src/config/pioConfig.ts
format: code
description: Spine / Live2D 看板娘模型、位置、交互、气泡提示配置
- name: plantuml-config
label: 📐 PlantUML 图表
type: file
path: src/config/plantumlConfig.ts
format: code
description: PlantUML 服务器地址和明暗主题配置
- name: collectionsapi-config
label: 📐 推荐导航栏
type: file
path: src/config/collectionsApiConfig.ts
format: code
description: 推荐导航栏目修改
settings:
content:
merge: false
Pages CMS 部署教程:为 Astro 博客装上 Git 原生 CMS
https://www.3181314.xyz/posts/pagescms/
作者
Odd.G
发布于
2026-09-06
许可协议
CC BY-NC-SA 4.0

评论区

看板娘
公告
友链 互换友链

正在招募技术类博客友链,要求原创、稳定更新。点击了解更多。

查看详情
欢迎 关于我的介绍

欢迎来到我的博客,热爱技术、持续学习,欢迎同好交流探讨,也欢迎大佬互换友链。

查看详情
音乐
封面

音乐

暂未播放

0:00
0:00
暂无歌词
标签
# 分享 10 # 教程 4 # 技术 3 # 博客 3 # 部署教程 3 # 效率 2 # 部署 2 # 个人 2 # AI 1 # 推荐 1 # Docker 1 # Waline 1 # 邮件模板 1 # 随笔 1 # 碎碎念 1 # WorkBuddy 1 # 腾讯智能体 1 # IM集成 1 # OpenClaw 1 # AI助手 1 # 本地部署 1 # 魔术 1 # 前端 1 # 春晚 1 # 源码 1 # 服务器监控 1 # Docker部署 1 # CloudFlare 1 # 哪吒监控 1 # 免费托管 1 # 静态网站 1 # 动态部署 1 # AI项目 1 # 建站工具 1 # 云服务器 1 # 虚拟主机 1 # Minecraft 1 # 服务端 1 # 备份教程 1 # 模组 1 # Shadowsocks 1 # Linux 1 # 一键脚本 1 # 代理 1 # 导航页 1 # EdgeOne 1 # 静态应用 1 # Cloudflare 1 # 图床 1 # Mizuki 1 # 思考 1 # 博客搭建 1 # 关于 1
目录
工具

隐私政策

更新日期: 2026 年 7 月 15 日
生效日期: 2026 年 7 月 15 日

适用范围#

本政策适用于 Odd.g的博客(以下简称“本站”)。本站是个人博客,用于发布和分享内容;不提供账户注册、支付、定位或广告投放服务。访问本站、发表文章评论或在留言板留言前,请阅读本政策。

信息收集与使用#

本站只在提供内容、评论和留言功能,以及维护站点安全所需的范围内处理信息。

  • 访问与统计信息:访问页面时,统计服务可能处理访问时间、页面地址、来源页、浏览器和设备相关信息,用于了解内容访问情况、排查故障和改进站点。
  • 评论信息:使用文章评论功能时,Waline 可能处理您主动提交的昵称、邮箱、站点链接和评论内容;还可能处理 IP 地址等必要信息,用于防止垃圾评论、滥用和维护服务安全。评论内容、昵称和站点链接(如填写)可能公开展示在文章下方;邮箱不会公开展示。
  • 留言信息:留言板使用 Waline /guestbook/ 频道。Waline 可能处理您主动提交的昵称、可选邮箱、站点链接、留言内容和图片,以及浏览器、操作系统、IP 地址等必要的反滥用信息。默认情况下,留言图片以内嵌数据随留言提交;如站点维护者配置了远程图片上传接口,图片会先发送至该接口并在留言中保存返回的图片地址。留言内容、昵称、图片和站点链接(如填写)可能公开展示;邮箱和 IP 地址不会在留言板公开展示。
  • AI 对话信息:使用 AI 搜索时,本站会处理您提交的问题以及最近 6 条对话历史,用于检索博客内容并生成回答。问题和对话历史会发送至 ModelScope,或在第三方接口不可用时由 Cloudflare Workers AI 处理。请勿在 AI 对话中提交密码、Token、身份证件、联系方式或其他敏感信息。

请不要在评论或留言中提交身份证件、银行卡、住址、密码或其他不必要的敏感个人信息。

第三方服务#

为实现本站功能,以下第三方会在各自服务范围内处理相关数据:

  • Umami:用于匿名化的网站访问统计和出站链接点击统计,帮助我了解本站的使用情况。
  • Waline:用于文章评论、留言板及访问量统计。服务会按照其自身规则处理您在评论或留言时提交的信息及必要的反滥用信息。
  • Cloudflare:为本站提供静态资源分发、AI Worker、Vectorize 和相关基础设施。留言板不使用项目 Worker 或 KV 存储。
  • ModelScope:为 AI 搜索提供文本向量和对话模型服务,会处理您提交的问题及发送给模型的最近对话历史。
  • Cloudflare Workers AI:在未配置第三方 AI 接口时提供文本向量和对话模型服务,并处理相同的 AI 请求数据。
  • unpkg:用于加载 Waline 的前端脚本、样式和表情资源;请求这些资源时,您的浏览器会与该服务建立连接。

第三方服务可能有独立的隐私政策和数据保存规则。请在使用相关功能前查阅其规则;本站无法控制其独立的数据处理活动。

本站主要使用浏览器本地存储(Local Storage 或 Session Storage)保存使用偏好,例如主题颜色、明暗模式、文章列表视图和音乐播放设置。留言板会在本地保存匿名资料、未发送草稿和登录状态,以便恢复输入与会话;管理员登录状态仅保存在当前会话。AI 搜索的会话标题和完整对话也会保存在当前浏览器的 Local Storage 中,最长保存 7 天;您可以在 AI 面板中使用“清空全部会话”立即删除这些数据。

本站不主动设置用于广告定向的第一方 Cookie。评论、统计或资源服务可能按照其自身规则使用 Cookie 或类似技术。您可以通过浏览器设置查看、删除或限制 Cookie 和本地存储;清除后,部分偏好或互动状态可能会恢复为默认值,评论功能也可能受到影响。

信息公开、保存与安全#

评论和留言属于公开互动内容,提交后可能被搜索引擎收录、被他人引用或在缓存中短暂保留。请谨慎决定发布内容。除非您提出删除请求、内容违反规则或法律法规另有要求,公开内容会持续保留以维持讨论上下文。

本站会采取合理措施保护数据安全,包括使用 HTTPS、输入校验、内容转义和访问频率限制。但互联网传输和第三方服务均无法保证绝对安全,请理解并自行承担公开发布信息的相应风险。

你的权利#

你可以通过 1044192982@qq.com*,oddg@foxmail.com 联系我,申请查询、更正或删除由本站直接保存的评论、留言或相关公开内容。为保护他人权益,请在请求中提供足以定位内容的信息,并说明你与该内容的关系;必要时可能需要进行合理核验。

对于由 Waline、Umami、Cloudflare 或 unpkg 独立处理的数据,你也可以直接向对应服务提供方行使相关权利。删除公开评论或留言后,第三方缓存、搜索引擎索引或他人转载的副本可能无法立即同步删除。

未成年人条款#

未满 14 周岁的未成年人应在监护人同意和指导下使用本站的评论、留言等互动功能。监护人如发现未成年人未经同意提交了个人信息,可通过上述联系方式与我联系,我会在合理范围内协助处理。

政策更新与联系#

我可能因本站功能或适用规则变化更新本政策,更新后的版本将在本站公布并标明日期。继续使用相关功能即表示你已阅读并理解更新后的政策。

如对本政策或数据处理有疑问,请联系 1044192982@qq.comoddg@foxmail.com

用户协议

更新日期: 2026 年 5 月 19 日
生效日期: 2026 年 5 月 19 日

适用范围#

本协议适用于你访问 Odd.g的博客,以及使用文章评论、留言板等互动功能的行为。继续浏览本站或提交评论、留言,即表示你已阅读、理解并同意遵守本协议及本站的隐私政策。

评论及留言规则#

请在交流中保持友善、理性和尊重。你不得利用本站发布、传播或实施以下行为:

  • 发布任何违反中华人民共和国法律法规的内容。
  • 发布任何侵犯他人合法权益的内容,包括但不限于隐私、名誉、肖像、著作权、商标权和其他知识产权。
  • 恶意攻击、辱骂、骚扰、威胁、歧视其他用户或任何第三方。
  • 发布垃圾广告、恶意推广、刷屏、灌水,或与讨论主题明显无关的重复内容。
  • 利用本站进行网络诈骗、钓鱼、传播恶意软件,或发布可能危害网络和信息安全的内容。
  • 绕越或试图绕越本站的审核、限流、封禁等管理措施。
  • 冒充他人、伪造身份,或收集、公开他人的个人信息。

内容与访问管理#

你应对自己发布的评论和留言负责,并保证拥有发布该等内容所需的合法权利。论坛管理员有权在不另行通知的情况下删除违规内容、限制或封禁违规账号,或限制其继续使用本站互动功能。

如发现涉嫌违法犯罪、严重侵权或危及本站安全的内容,本站可保留相关记录,并在法律法规要求或必要时向有关部门提供协助。对管理措施有疑问时,可通过文末联系方式说明情况;本站会结合实际情况处理,但不承诺恢复已删除内容或访问权限。

知识产权与内容授权#

本站原创文章、页面设计和其他受保护内容的权利归作者或权利人所有。未经授权,请勿复制、转载、镜像或用于商业用途;法律法规允许的合理使用除外。

你发布评论或留言时,授予本站为展示、存储、备份、审核、删除和维护互动功能所必需的非独占、免费的使用许可。该许可不改变你对原创内容依法享有的权利。

免责声明#

本站内容仅用于个人记录、学习交流和一般信息参考,不构成任何专业意见、承诺或担保。你应结合自身情况独立判断,并对据此采取的行动负责。

评论、留言和外部链接中的内容由其发布者或运营者负责,不代表本站立场。本站会在合理范围内处理明显违规内容,但不保证所有内容均及时发现,也不对第三方网站的可用性、内容、安全性或隐私实践承担责任。

因网络故障、不可抗力、第三方服务异常、维护升级或超出合理控制范围的原因导致本站暂时无法访问、内容延迟或数据丢失的,本站会尽力恢复,但不承担由此产生的间接损失。

未成年人条款#

未满 14 周岁的未成年人应在监护人同意和指导下使用评论、留言等互动功能。监护人应协助未成年人理解本协议,并对其使用行为进行必要的引导。

其他条款#

我可以根据本站功能、管理需要或法律法规变化更新本协议,更新后的版本将在本站公布并标明日期。继续使用本站即视为接受更新后的协议。

本协议的订立、执行和解释适用中华人民共和国法律。因本协议或使用本站产生争议时,双方应先友好协商;协商不成的,依法向有管辖权的人民法院解决。

如对本协议或内容管理有疑问,请联系 1044192982@qq.comoddg@foxmail.com