Skip to content

Repository files navigation

Justice's Blog

基于 Astro + Tailwind CSS 的个人技术博客 / 知识花园,定位是算法入门、AI 探索、大一课程和硬件折腾的长期记录站。

功能

  • 首页个人入口:Justice / HITSZ CS · Lab Notes、三组个人状态、精选文章、最近更新、技术方向标签、GitHub / RSS / About
  • Tech / Life 两个内容分区,支持标签页、文章归档、站内搜索、RSS、sitemap、robots.txt
  • Series 页面按主题聚合文章,About 页面提供轻量自介、站点说明和阅读入口
  • 文章页支持目录、阅读进度条、标题锚点、代码块文件名、语言标记、复制按钮、数学公式、上一篇 / 下一篇、相关阅读
  • 文章 frontmatter 支持 stage 标记内容阶段:studypaperdoneevergreenpitfallsnippet
  • Obsidian 友好的 Markdown 写作,支持 callout、数学公式和代码块文件名
  • 明暗主题切换、移动端导航、Open Graph 与结构化数据
  • GitHub Actions 自动构建并部署到 GitHub Pages

本地开发

项目使用 Node.js 24;如果使用 nvm,可先运行 nvm use 读取仓库中的 .nvmrc

npm install
npm run dev

npm run dev 会显示 draft: true 的草稿,适合本地预览。

构建

npm run build

生产构建会自动隐藏 draft: true 的文章;发布前把 frontmatter 改成 draft: false 即可。

发布前建议先跑完整检查:

npm run check
npm test

npm test 会运行 URL、草稿过滤和相关文章排序单元测试,随后执行生产构建,并检查首页、分类页、文章页、搜索、RSS 与 404 静态产物。

写新文章

使用脚本创建文章,slug 只用小写字母、数字和连字符:

npm run new:post -- tech my-algorithm-note
npm run new:post -- algorithm luogu-pxxxx
npm run new:post -- paper my-paper-reading
npm run new:post -- life my-pc-build

脚本会从 templates/ 复制模板到对应目录,并创建同名图片目录:

  • tech -> src/content/tech/*.md
  • algorithm -> src/content/tech/*.md
  • paper -> src/content/tech/*.md
  • life -> src/content/life/*.md
  • 图片目录 -> public/images/posts/<slug>/

常用 frontmatter:

---
title: "文章标题"
date: 2026-05-27
updated: 2026-05-27
tags: ["Algorithm", "C++"]
category: "tech"
description: "一句话说明这篇文章解决什么问题。"
cover: "/images/example.jpg"
featured: false
series: "系列名称"
stage: "study"
draft: true
---
  • draft: true:本地可见,线上不可见
  • featured: true:优先进入首页精选文章
  • series:用于文章页、搜索、相关文章的主题关联
  • stage:文章阶段,取值为 study(学习记录)、paper(论文初读)、done(完成记录)、evergreen(常青速查)、pitfall(踩坑记录)、snippet(片段模板)
  • cover:用于 Open Graph 图片;推荐放在 public/images/posts/<slug>/ 下,并用 /images/posts/<slug>/cover.jpg 这类路径

Obsidian 写作

推荐直接把博客仓库根目录作为 Obsidian Vault:

/Users/justice/workspace/just1cez.github.io

不要把 Vault 只建在 src/content 里;这样 Obsidian 配置、附件路径和 Astro 项目结构更容易分叉。当前 .obsidian/ 已在 .gitignore 中,Obsidian 本地配置不会进入发布仓库。

写作规则:

  • 文章放在 src/content/tech/src/content/life/
  • 图片放在 public/images/posts/<slug>/
  • 正文引用图片用 /images/posts/<slug>/name.jpg
  • 不使用 Obsidian 的 [[wikilink]] 作为发布链接;改用标准 Markdown 链接

npm run check 会检查 frontmatter、本地链接,并对 Obsidian wikilink 和不规范图片路径给出 warning。

路线图

导航里不单独放 Goal 页面,当前路线图直接写在这里:

  • 先把大一课程、算法入门和编程基础学扎实。
  • 持续记录 AI 入门探索,之后逐步开始 Machine Learning、AI Infra、Python 和 Rust。
  • 把硬件折腾、小项目、Bot 和本地服务实验沉淀到 Tech / Life 文章与系列索引里。
  • 文章保持阶段感:速查模板可以直接回头用,论文初读和折腾记录则保留当时的理解边界。

Markdown 写作

技术和论文文章默认使用 .md,方便直接放进 Obsidian 编辑。结构化提示推荐使用 Obsidian callout:

> [!tip] 结论
> 三到五句话写清楚这篇文章最值得记住的东西。

> [!summary] 题目 / 方法名
> 难度:中等
> 复杂度:O(n log n)
>
> 写题意、核心思路、复杂度和坑点。

代码块可以写文件名,文章页会显示在代码块顶部:

```cpp title="solution.cpp"
int main() {}
```

部署

推送到 main 分支即可自动部署到 GitHub Pages。

首次配置

  1. 在仓库 Settings → Pages 中,Source 选择 GitHub Actions
  2. 如需自定义域名,设置 SITE_URL 仓库变量(Settings → Secrets and variables → Variables → SITE_URL
  3. 如果部署到项目页,例如 https://user.github.io/blog/,再设置仓库变量 BASE_PATH=/blog

当前远程仓库是用户站形式时,SITE_URL 可保持默认,BASE_PATH 可保持 /

发布检查

npm run check
npm test
git status -sb
git push origin main:main

如果推送时报 workflow 权限错误,说明当前 Personal Access Token 没有 workflow scope,不能创建或修改 .github/workflows/deploy.yml。这个权限是 GitHub 的保护机制,避免低权限 token 篡改 CI/CD 流程。给 token 增加 workflow 权限,或改用有权限的认证方式后再 push。

About

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages