框架与内容分离:公开仓库只放组件、样式与构建脚本,个人配置、文章和图片放在仓库外的私有内容包
coisini-blog-framework — Astro 博客模板
作者 coisini233333333
基于 Astro 的静态博客框架,把可复用的组件、样式与构建脚本放在公开仓库,个人文章与配置放在仓库外的私有内容包,构建时读取并只发布静态网页。
看看你的网站会是什么样
浏览真实页面截图,比较内容排版与手机效果。点击下方缩略图切换,放大查看整页细节。
全部页面与视图 3
截图用于了解视觉与布局,交互效果请以实际项目为准。
值得关注的模板亮点
从已有项目资料中,快速了解它的特点。
构建时读取内容包,发布时只上传静态网页,不需要数据库、后台服务或浏览器 API 密钥
支持技术笔记与随笔两类内容,以及文章目录、搜索筛选、归档、RSS 与 sitemap
提供深浅主题切换,配色、字体、圆角与间距集中在 global.css 中调整
发布脚本只复制 dist/ 到临时发布仓库,不推送私有内容仓库,不改 main,也不强推历史
内置构建、内链、隐私与格式校验脚本,隐私校验会拒绝发布 Markdown、TypeScript、JSON 配置、隐藏文件和 source map
模板详细介绍
这是一个面向个人写作的 Astro 静态博客框架,仓库本身只包含组件、样式、构建脚本和虚构示例,站点配置、项目资料、Markdown 文章与图片放在独立的内容包目录中,构建时由框架读取,发布时只上传生成的静态网页。内容包位于框架仓库之外,需要自行备份到私有仓库或其他私有存储。
框架提供首页、栏目、文章、项目等路由,支持技术笔记与随笔两种分类、文章目录、搜索筛选、归档、RSS 与 sitemap,以及深浅主题切换。文章使用 Markdown 与 frontmatter 描述标题、日期、标签、分类、草稿状态和封面,项目使用 JSON 描述。样式集中在 global.css,配色、字体、间距和响应式布局可在此调整。
发布流程面向 GitHub Pages,采用 main 与 gh-pages 分支分离框架与网站:main 的 CI 只验证示例,不会自动覆盖个人站点;发布在本机执行,读取本机私有内容包。已发表文章在网站上仍然公开,生成的 HTML 可被读取、复制和搜索引擎索引,私有内容包保护的是 Markdown 原文、草稿与编辑历史,不是文章访问控制。任何放进内容包 public/ 的文件都会发布。
适合你的项目吗?
适用场景
- 个人技术博客:用 Markdown 写技术笔记,通过分类与标签组织内容,并生成 RSS 与 sitemap
- 随笔写作:随笔有独立入口,与首页的技术笔记分开呈现
- 项目展示:用 projects.json 维护项目列表与详情,可关联已发表的文章
- 希望把写作原文与草稿保留在私有存储、只公开生成网页的静态站点
- 部署到 GitHub Pages,并通过自定义域名对外访问
适合人群
- 接受用 Markdown 与 JSON 维护内容的写作者
- 希望框架代码公开、个人文章与草稿不进入公开仓库的开发者
- 需要静态发布、不依赖数据库或后端接口的博客
- 愿意自行备份内容包并自行处理 GitHub Pages 与域名配置的用户
上手与定制指南
结合仓库当前版本的说明,按下面的资料检查内容、配置与运行要求。
- 1
需要 Node.js 24 与 npm;克隆仓库后执行 npm ci 和 npm run dev,默认只读取 examples/site/ 中的公开示例
- 2
用 npm run content:init -- ../my-private-content 初始化内容包,该命令拒绝覆盖已有目录,并要求目标在框架仓库外
- 3
把 .env.example 复制为 .env,写入 SITE_CONTENT_DIR、SITE_URL、BASE_PATH 和 PAGES_REPOSITORY;修改 JSON 配置或内容包路径后需重启开发服务器
- 4
发布前执行 npm run deploy,首次推送生成 gh-pages 分支后,在 GitHub 仓库 Settings → Pages 选择 gh-pages / (root)
- 5
内容包需要自行备份到私有仓库或其他私有存储;Git ignore 不能替代备份,也不能清除已提交的文件及其历史
授权与来源资料
使用条件与限制
免费使用 · 保留许可声明本次收录的是公开仓库中采用 MIT 许可的免费版本;免费范围为该版本代码,不代表外部服务或第三方素材免费。
使用时需要遵守
- 允许免费使用、修改、商用和分发该版本代码。
- 分发代码副本或实质性部分时,保留原作者版权声明和完整 MIT 许可声明。
- 代码按现状提供;担保与责任限制以原许可证及适用法律为准。
额外费用与待核对事项
- 演示图片、字体、图标及其他第三方素材需按各自许可核对,不能仅凭代码的 MIT 许可判断。
- 域名、托管、数据库、支付或 AI 等外部服务可能另外收费。
- 内容包必须自行备份到私有仓库或其他私有存储;Git ignore 不能替代备份,也无法清除已提交文件及其历史。
- 已发表文章仍公开且可被索引;私有内容包只保护 Markdown 原文、草稿与编辑历史,不是访问控制;放入内容包 public/ 的文件都会发布。
- deploy 推送成功不等于 Pages 部署完成,需检查 GitHub Actions/Pages 状态;首次仓库设置由 GitHub 管理,脚本不会购买套餐或修改 DNS。
- 从含个人内容的旧仓库迁移时,仅当前提交删除文章不够;应新建无旧历史的框架仓库并保持旧仓库私有,不要公开含文章历史的旧仓库。
- 隐私校验会拒绝发布 Markdown、TypeScript、JSON 配置、隐藏文件和 source map,并检查常见私钥/令牌格式,但不能保证识别所有敏感信息。
- 未来若需带密钥的接口,必须使用独立服务端代理;敏感值不得放入 PUBLIC_*、页面脚本、Markdown 或 public/。
- 内容被视为可信作者输入并支持 Markdown/HTML;不要把不可信第三方内容直接放入构建。
- 使用分支发布时需在内容包 public/CNAME 写入域名一行以避免发布覆盖域名设置,并同步更新 SITE_URL 与 BASE_PATH=/ 后重新发布。
查看原文依据
Permission is hereby granted, free of charge
许可证原文
**内容包需要自行备份到私有仓库或其他私有存储**,Git ignore 不能替代备份,也不能清除已经提交过的文件及其历史。
README 原文
已发表文章在网站上仍然公开,生成的 HTML 也可读取、复制和被搜索引擎索引。私有内容包保护 Markdown 原文、草稿与编辑历史,不是文章访问控制。任何放进内容包 `public/` 的文件都会发布。
README 原文
`npm run deploy` 推送成功不等于 Pages 已完成部署,请检查 GitHub Actions/Pages 的状态。首次仓库设置由 GitHub 管理,脚本不会自行购买套餐或修改 DNS。
README 原文
从包含个人内容的旧仓库迁移时,**仅在当前提交删除文章还不够**。请像本项目一样新建无旧历史的框架仓库,旧仓库保持私有;不要直接公开含文章历史的旧仓库。
README 原文
隐私校验拒绝发布 Markdown、TypeScript、JSON 配置、隐藏文件和 source map,并检查常见私钥/令牌格式。它是额外检查,**不能保证识别所有形式的敏感信息**。
README 原文
未来需要带密钥的接口时,使用独立服务端代理,敏感值不得放入 `PUBLIC_*`、页面脚本、Markdown 或 `public/`。
README 原文
内容是可信作者输入,支持 Markdown/HTML;不要把不可信第三方内容直接放入构建。
README 原文
https://github.com/coisini233333333/coisini-blog-framework/blob/main/LICENSEhttps://github.com/coisini233333333/coisini-blog-framework/blob/main/README.md使用分支发布时,在内容包 `public/CNAME` 中放入你的域名一行,避免后续发布覆盖域名设置;同时更新 `SITE_URL` 与 `BASE_PATH=/` 并重新发布。
README 原文
DeepSeek 根据仓库许可证和 README 整理 ·2026-10-13。结果仅覆盖已读取资料,依赖、图片、字体及后续条款变更以各自原文为准。
项目核对记录与介绍依据
模板资料
- 来源平台
- GitHub
- 资料与维护参考分
- 资料较完整 · 80 / 100
- 技术栈
- Astro
- 网站类型
- 博客
这个分数如何计算
本站按许可资料(最高30分)、演示链接(12分)、预览图(10分)、Star数(15分)、记录的维护时间(15分)、描述完整度(8分)、功能记录(5分)和分类资料(5分)计算。它不是代码、安全或性能测试,也不是 Google 评分;有链接不代表已实测可用。
这个项目需要核对什么
- 记录的仓库更新时间
- 2026-09-23
- 截图检查日期
- 2026-10-13
已收录演示链接。请用你的内容与屏幕尺寸检查;有演示不代表表单、认证或支付已经可用。
目录记录的主要技术栈是 Astro。请通过依赖清单和锁文件核对实际版本与托管要求。这些说明基于收录资料,不代表代码审计或部署实测。
查看具体选型方法 →介绍的制作与核对状态
介绍由 AI 辅助整理目录与仓库资料。仓库作者不等于这篇介绍的审核者。
审核声明: [email protected] · 2026-10-13
查看当时使用的来源资料
SHA-256: a3e510d48c11519901e08717fbae438cc191d400c3b3b59365f46f5893454d96
2026-10-13T00:58:10.174Z
来源文件 / 仓库# 一隅 · Coisini Blog Framework 一个可复用的 Astro 静态博客框架:浅米白与灰绿配色、深浅主题切换、随笔、技术笔记、项目展示、文章目录、搜索筛选、归档、RSS 与 sitemap。使用 **Astro 7 + TypeScript + 原生 CSS + Markdown**,不需要数据库、后台服务或浏览器 API 密钥。 [实际站点:Coisini 博客](https://coisini2333.com/) · [框架构建状态](https://github.com/coisini233333333/coisini-blog-framework/actions/workflows/ci.yml) **公开框架,私有写作。** 框架仓库只包含组件、样式、构建脚本和虚构示例。你自己的站点配置、项目资料、文章和图片放在独立内容包,构建时读取,发布时只上传静态网页。 > 已发表文章在网站上仍然公开,生成的 HTML 也可读取、复制和被搜索引擎索引。私有内容包保护 Markdown 原文、草稿与编辑历史,不是文章访问控制。任何放进内容包 `public/` 的文件都会发布。 ## 快速体验 需要 Node.js 24、npm。点击 GitHub 的 **Use this template** 创建自己的框架仓库,或克隆此仓库: ```bash git clone https://github.com/coisini233333333/coisini-blog-framework.git cd coisini-blog-framework npm ci npm run dev ``` 打开 `http://localhost:4321/`。默认只读取 `examples/site/` 中的公开示例。 ## 创建自己的博客 ```bash npm run content:init -- ../my-private-content ``` 初始化拒绝覆盖已有目录,并要求目标在框架仓库外。把 `.env.example` 复制为 `.env`,写入: ```dotenv SITE_CONTENT_DIR=../my-private-content SITE_URL=https://YOUR_NAME.github.io/YOUR_REPOSITORY BASE_PATH=/YOUR_REPOSITORY PAGES_REPOSITORY=YOUR_NAME/YOUR_REPOSITORY ``` 本地体验时可先省略后三项。使用自定义域名时设 `SITE_URL=https://your-domain.com`、`BASE_PATH=/`。路径以框架根目录为基准,支持绝对路径;进程环境变量优先于 `.env`。修改 JSON 配置或内容包路径后重启开发服务器。 `.env` 已忽略;框架的格式化和 Git 提交不会包含外部内容目录。**内容包需要自行备份到私有仓库或其他私有存储**,Git ignore 不能替代备份,也不能清除已经提交过的文件及其历史。 ## 目录与职责 ```text coisini-blog-framework/ 公开、可以复用 ├── content/source.mjs 选择内容包与部署地址(仅构建端) ├── src/config/site.ts 站点 JSON 的类型与校验 ├── src/content.config.ts Markdown 集合与 frontmatter 校验 ├── src/data/projects/ 项目 JSON 校验 ├── src/pages/ 首页、栏目、文章、项目等路由 ├── src/components/ 导航、卡片、搜索与 SVG 插图 ├── src/layouts/ 共享页面外壳 ├── src/styles/global.css 配色、字体、间距、响应式布局 ├── examples/site/ 可运行的公开示例内容包 ├── scripts/ 初始化、校验和发布 └── .github/workflows/ci.yml 只验证示例,不读取私有内容 my-private-content/ 私有、在框架仓库之外 ├── site.json 作者、标题、首页图片和关于介绍 ├── projects.json 项目列表与详情 ├── blog/ Markdown 文章与草稿 └── public/ 会公开的图片、图标等静态资源 ``` 每次构建只选一个完整内容包,不会把个人文章与示例混合。框架升级通常只需更新框架代码;内容结构如有不兼容变化,JSON/Markdown 校验会明确报错。 ## 日常修改 | 需求 | 修改位置 | | -------------------------- | ---------------------------------------------------- | | 站名、介绍、头像、首页图片 | 内容包 `site.json` | | 替换图片 | 内容包 `public/images/`,配置使用 `/images/name.jpg` | | 写随笔、技术文章 | 内容包 `blog/*.md` | | 新增项目、状态、相关资料 | 内容包 `projects.json` | | 配色、字体、圆角、间距 | 框架 `src/styles/global.css` | | 调整布局、交互 | 框架 `src/pages/`、`src/components/` | 图片路径不带 `public`。头像设为空字符串时不显示右上角头像,关于页使用姓名首字。默认字体来自本机,不请求第三方字体。详见 [美术定制](docs/visual-assets.md)。 ### 文章格式 ```md --- title: 我的笔记 description: 简短介绍。 pubDate: 2026-09-12 tags: [研究, 实践] category: technical draft: false art: particles # updatedDate: 2026-09-13 # cover: /images/my-cover.jpg # coverAlt: 图片说明 --- ## 正文标题 正文从这里开始。 ``` - `category`:`technical`(默认)或 `essay`;首页放技术笔记,随笔有独立入口。 - `draft: true`:不生成文章页面,也不进入列表、搜索、归档、RSS、sitemap。草稿仍只应保存在私有内容包。 - `art`:默认 `landscape`,另有 `particles` 和 `interface` 两种 SVG 封面;设置 `cover` 时优先使用图片。 - `sample: true`:标记公开示例,不影响发布;真实文章通常不需要这个字段。 - 文件名作为文章地址,建议英文小写与连字符。项目的可选 `noteSlug` 对应该文件名;未找到已发表文章时不显示关联链接。 内容是可信作者输入,支持 Markdown/HTML;不要把不可信第三方内容直接放入构建。文章内链使用相对地址。单层文章互链可写 `../another-post/`,图片可写 `../../images/picture.jpg`。复杂路径请以 `npm run test:build` 的检查结果为准。 ### 项目格式 复制示例 `projects.json` 中的一项。必填字段为 `slug`、`title`、`subtitle`、`description`、`tags`、`status`、`overview`、`focus` 和 `references`。允许空数组;`noteSlug` 可省略。项目 `slug` 必须唯一,只允许小写英文、数字及中间连字符。 ## 发布到 GitHub Pages 采用两个分支分离框架与网站: | 位置 | 内容 | | ------------------- | ------------------------------- | | 公开仓库 `main` | 框架源码、文档和公开示例 | | 公开仓库 `gh-pages` | 生成的 HTML、CSS、JS 和公开资源 | | 外部私有内容包 | 个人配置、Markdown 原文与草稿 | `main` 的 CI 只检查示例,**不会自动覆盖你的个人网站**。发布个人博客在本机执行,读取本机私有内容,不要求把私有仓库访问令牌交给公开 Actions。 1. 准备公开框架仓库,安装 GitHub CLI 并运行 `gh auth login`。配置 Git 的 `user.name` 与 `user.email`;建议使用 GitHub 的 noreply 邮箱。 2. 设置本地 `.env` 的内容包路径和真实发布地址。 3. 执行: ```bash npm run deploy ``` 4. 首次推送生成 `gh-pages` 分支后,在 GitHub 仓库 **Settings → Pages → Deploy from a branch** 选择 **gh-pages / (root)**。 5. 等待 GitHub 的 Pages 构建成功,再访问网站。以后修改文章仍执行 `npm run deploy`。 发布脚本每次重新构建并校验,只复制 `dist/` 到临时发布仓库。它使用现有 Git/GitHub 登录权限,不创建或打印密钥,不更改仓库可见性,不推送私有内容仓库,不改 `main`,也不强推历史。`gh-pages` 的发布历史包含以前公开过的网页;删除文章不能保证互联网副本或旧提交被删除。 `npm run deploy` 推送成功不等于 Pages 已完成部署,请检查 GitHub Actions/Pages 的状态。首次仓库设置由 GitHub 管理,脚本不会自行购买套餐或修改 DNS。参考 [GitHub 发布源文档](https://docs.github.com/en/pages/getting-started-with-github-pages/configuring-a-publishing-source-for-your-github-pages-site)。 ### 自定义域名 先在 GitHub 账户 Settings → Pages 验证域名,再在仓库 Pages 配置 Custom domain,然后按 [GitHub DNS 文档](https://docs.github.com/en/pages/configuring-a-custom-domain-for-your-github-pages-site/managing-a-custom-domain-for-your-github-pages-site) 修改注册商 DNS。使用分支发布时,在内容包 `public/CNAME` 中放入你的域名一行,避免后续发布覆盖域名设置;同时更新 `SITE_URL` 与 `BASE_PATH=/` 并重新发布。DNS/证书就绪后开启 HTTPS。 ## 验证与安全边界 ```bash npm run build # Astro / TypeScript 检查与静态构建 npm run test:build # 内链、资源、目录锚点、草稿、RSS、sitemap、canonical npm run test:privacy # 输出白名单、草稿标记、疑似凭据、source map、符号链接 npm run format:check npm run preview # 查看最近一次构建 ``` CI 验证根路径与项目子路径。隐私校验拒绝发布 Markdown、TypeScript、JSON 配置、隐藏文件和 source map,并检查常见私钥/令牌格式。它是额外检查,**不能保证识别所有形式的敏感信息**。请只在内容包 `public/` 放明确准备公开的文件;不引用某张图片不会使它变成私有。 没有后端接口或 API 凭据;配置内容只在构建端读取,前端不包含私有磁盘路径。未来需要带密钥的接口时,使用独立服务端代理,敏感值不得放入 `PUBLIC_*`、页面脚本、Markdown 或 `public/`。公开 CI 只有读取权限,官方 Actions 固定提交 SHA,checkout 不保留凭据。 从包含个人内容的旧仓库迁移时,**仅在当前提交删除文章还不够**。请像本项目一样新建无旧历史的框架仓库,旧仓库保持私有;不要直接公开含文章历史的旧仓库。 ## 学习与复用 建议依次阅读:`src/pages/index.astro` 的页面结构 → `src/styles/global.css` 的样式变量 → `PostList.astro` 的浏览器交互 → 内容模型与构建脚本。先调整一个颜色或组件,再运行验证。 框架代码与内置示例采用 [MIT License](LICENSE)。个人博客的文章、头像和其他私有内容不属于框架授权范围;发布网页不自动授予他人转载许可。
看看同类模板
对比同技术栈与用途的模板,找到更适合的视觉与内容结构。

astrowind
⭕️ AstroWind: A free template using Astro v7 and Tailwind CSS v4. Astro starter theme.
Astro · 博客

astro-paper
A minimal, accessible and SEO-friendly Astro blog theme.
Astro · 博客

fuwari
✨A static blog template built with Astro.
Astro · 博客

Firefly
Firefly 是一款基于 Astro 的静态博客主题,由 CuteLeaf 在 saicaca 的 Fuwari 模板基础上二次开发,主打清新美观的视觉风格。
Astro · 博客

astro-theme-cactus
A simple Astro theme. Use it to create your blog or website.
Astro · 作品集

astrofy
Astrofy is a free and open-source template for your Personal Portfolio Website built with Astro and TailwindCS…
Astro · 作品集
