基于 Next.js 15 App Router、React 19、TypeScript、Tailwind CSS 4 和 Contentlayer 2 构建
next-blog-skyplume-template — Next.js 博客模板
作者 ruoduan-hub
Skyplume 是一个基于 Next.js 15 App Router、React 19、TypeScript、Tailwind CSS 4 与 Contentlayer 2 的 MDX 博客模板,从 0x1ai.com 个人博客提取,面向个人发布、工程笔记与长文写作。
看看你的网站会是什么样
浏览真实页面截图,比较内容排版与手机效果。点击下方缩略图切换,放大查看整页细节。
全部页面与视图 3
截图用于了解视觉与布局,交互效果请以实际项目为准。
值得关注的模板亮点
从已有项目资料中,快速了解它的特点。
MDX 写作支持 front matter、阅读时间、目录、KaTeX 数学公式、引用、代码标题与高亮、标题锚点和 GitHub alerts
SEO 包含 Open Graph、Twitter cards、JSON-LD BlogPosting、canonical URL、sitemap、robots.txt 和 RSS
内容发现提供构建时本地搜索索引、标签页、结构化归档和 RSS feed
阅读体验包含暗色模式、响应式布局、阅读时间、目录和上一篇/下一篇导航
配置集中在 data 目录下的普通数据文件与 MDX,评论使用 Giscus 且可关闭
模板详细介绍
Skyplume 是一个内容优先的 Next.js 博客模板,README 说明其从 Ruoduan 的个人博客 0x1ai.com 提取而来,用于个人发布、工程笔记、项目日志和长文 MDX 写作。模板以 MDX 为写作格式,支持 front matter、阅读时间、目录、数学公式、引用、代码高亮和自定义组件;同时提供 Open Graph、Twitter cards、JSON-LD BlogPosting、canonical URL、sitemap、robots.txt 和 RSS 等 SEO 能力。
阅读体验方面,README 提到克制的排版、低饱和配色、暗色模式、响应式布局、阅读时间、目录和上一篇/下一篇导航;动效包括路由过渡、首屏交错动画、滚动显现、信息流动画和进度条。发现内容的方式包括构建时本地搜索索引、标签页、结构化归档和 RSS。
配置集中在 data 目录下的普通数据文件和 MDX 中,README 列出了站点元数据、关于页、作者、导航、项目、社交分享卡片和 favicon 等文件。评论使用 Giscus,可通过环境变量配置,也可在 siteMetadata 中将 comments.provider 设为空字符串来关闭。部署方面提供 Vercel 部署按钮,并说明模板在没有 newsletter、analytics 或评论凭据时也能启动。README 还提到静态导出方式(EXPORT=true UNOPTIMIZED=true yarn build)以及子路径部署时设置 BASE_PATH。
README 未提供模板的版本发布记录、浏览器兼容范围、内容迁移工具或非 Vercel 平台的详细部署步骤。
适合你的项目吗?
适用场景
- 个人博客与个人网站发布
- 工程笔记、技术文章与项目日志
- 使用 MDX 撰写长文并需要目录、数学公式和代码高亮
- 需要 RSS、sitemap、JSON-LD 和 Open Graph 等 SEO 输出的静态博客
- 希望通过 data 目录下的数据文件直接维护站点信息与导航
适合人群
- 熟悉 Next.js、React 和 TypeScript 的开发者
- 偏好 MDX 与本地数据文件、不希望依赖 CMS 的个人写作者
- 需要暗色模式、本地搜索和 RSS 的博客项目
- 计划使用 Vercel 部署或进行静态导出的站点
上手与定制指南
结合仓库当前版本的说明,按下面的资料检查内容、配置与运行要求。
- 1
使用 yarn install 安装依赖,yarn dev 启动开发服务器,默认访问 http://localhost:3000
- 2
先编辑 data/siteMetadata.js、data/profile.ts、data/authors/default.mdx、data/headerNavLinks.ts、data/projectsData.ts 以及 public/static 下的分享卡片和 favicon
- 3
评论使用 Giscus:复制 .env.example 为 .env.local 并填入 Giscus 值;如需关闭评论,在 data/siteMetadata.js 中将 comments.provider 设为 ""
- 4
在 data/blog 下创建 MDX 文件撰写文章,图片放在 public/static/blog/<post-slug> 下引用,示例文章为 data/blog/term-proxy.mdx
- 5
静态导出使用 EXPORT=true UNOPTIMIZED=true yarn build,子路径部署时设置 BASE_PATH;也可通过 README 中的 Vercel 按钮部署
授权与来源资料
使用条件与限制
免费使用 · 保留许可声明本次收录的是公开仓库中采用 MIT 许可的免费版本;免费范围为该版本代码,不代表外部服务或第三方素材免费。
使用时需要遵守
- 允许免费使用、修改、商用和分发该版本代码。
- 分发代码副本或实质性部分时,保留原作者版权声明和完整 MIT 许可声明。
- 代码按现状提供;担保与责任限制以原许可证及适用法律为准。
额外费用与待核对事项
- 演示图片、字体、图标及其他第三方素材需按各自许可核对,不能仅凭代码的 MIT 许可判断。
- 域名、托管、数据库、支付或 AI 等外部服务可能另外收费。
- 评论功能使用 Giscus,需要复制 .env.example 为 .env.local 并填入 Giscus 配置值;如不需要评论,可在 data/siteMetadata.js 中将 comments.provider 设为空字符串关闭。
- 部署到 Vercel 时模板可在没有 newsletter、analytics 或评论凭据的情况下启动,这些集成均为可选。
- 部署到子路径时需设置 BASE_PATH 环境变量。
- 静态导出需使用 EXPORT=true UNOPTIMIZED=true yarn build 命令。
查看原文依据
Permission is hereby granted, free of charge
许可证原文
Copy `.env.example` to `.env.local` and fill in your Giscus values. To disable comments entirely, set `comments.provider` to `""` in `data/siteMetadata.js`.
README 原文
Click the deploy button above. The template boots without newsletter, analytics, or comment credentials — everything is optional.
README 原文
Set `BASE_PATH` when deploying under a subpath.
README 原文
https://github.com/ruoduan-hub/next-blog-skyplume-template/blob/master/LICENSEhttps://github.com/ruoduan-hub/next-blog-skyplume-template/blob/master/README.mdEXPORT=true UNOPTIMIZED=true yarn build
README 原文
DeepSeek 根据仓库许可证和 README 整理 ·2026-10-14。结果仅覆盖已读取资料,依赖、图片、字体及后续条款变更以各自原文为准。
项目核对记录与介绍依据
模板资料
- 来源平台
- GitHub
- 资料与维护参考分
- 资料较完整 · 83 / 100
- 技术栈
- Next.js · React
- 网站类型
- 博客
这个分数如何计算
本站按许可资料(最高30分)、演示链接(12分)、预览图(10分)、Star数(15分)、记录的维护时间(15分)、描述完整度(8分)、功能记录(5分)和分类资料(5分)计算。它不是代码、安全或性能测试,也不是 Google 评分;有链接不代表已实测可用。
这个项目需要核对什么
- 记录的仓库更新时间
- 2026-07-02
- 截图检查日期
- 2026-10-14
已收录演示链接。请用你的内容与屏幕尺寸检查;有演示不代表表单、认证或支付已经可用。
目录记录的主要技术栈是 Next.js。请通过依赖清单和锁文件核对实际版本与托管要求。这些说明基于收录资料,不代表代码审计或部署实测。
查看具体选型方法 →介绍的制作与核对状态
介绍由 AI 辅助整理目录与仓库资料。仓库作者不等于这篇介绍的审核者。
审核声明: codex-user-requested-batch-review-20261015 · 2026-10-15
查看当时使用的来源资料
SHA-256: 3a89d674d75b2bba962d9071f23bc0e7c8b7e4c7686090875cb1a9e2c8851959
2026-10-14T20:55:29.959Z
来源文件 / 仓库<p align="center">
<picture>
<source media="(prefers-color-scheme: dark)" srcset="public/static/images/logo-dark.svg">
<img alt="Skyplume" src="public/static/images/skyplume-card.svg" width="480">
</picture>
</p>
<p align="center">
A refined, content-first Next.js blog template for personal publishing,<br/>engineering notes, project journals, and long-form MDX writing.
</p>
<p align="center">
<a href="https://github.com/ruoduan-hub/next-blog-skyplume-template/stargazers">
<img alt="GitHub Repo stars" src="https://img.shields.io/github/stars/ruoduan-hub/next-blog-skyplume-template?style=flat&color=%2317897e">
</a>
<a href="./LICENSE">
<img alt="License" src="https://img.shields.io/badge/license-MIT-17897e?style=flat">
</a>
<a href="https://github.com/ruoduan-hub/next-blog-skyplume-template">
<img alt="GitHub repo size" src="https://img.shields.io/github/repo-size/ruoduan-hub/next-blog-skyplume-template?color=17897e&style=flat">
</a>
<br/>
<img alt="Next.js" src="https://img.shields.io/badge/Next.js-15-black?style=flat&logo=next.js">
<img alt="React" src="https://img.shields.io/badge/React-19-087ea4?style=flat&logo=react">
<img alt="TypeScript" src="https://img.shields.io/badge/TypeScript-5.7-3178c6?style=flat&logo=typescript">
<img alt="Tailwind CSS" src="https://img.shields.io/badge/Tailwind_CSS-4-38bdf8?style=flat&logo=tailwindcss">
<img alt="Contentlayer" src="https://img.shields.io/badge/Contentlayer-2-000?style=flat">
<img alt="MDX" src="https://img.shields.io/badge/MDX-1b1f24?style=flat&logo=mdx">
<a href="https://www.0x1ai.com/">
<img alt="Production" src="https://img.shields.io/badge/production-0x1ai.com-17897e?style=flat">
</a>
</p>
<p align="center">
<a href="https://vercel.com/new/clone?repository-url=https%3A%2F%2Fgithub.com%2Fruoduan-hub%2Fnext-blog-skyplume-template&project-name=skyplume-blog&repository-name=skyplume-blog">
<img src="https://vercel.com/button" alt="Deploy with Vercel">
</a>
<a href="https://github.com/ruoduan-hub/next-blog-skyplume-template/generate">
<img alt="Use this template" src="https://img.shields.io/badge/Use_this_template-238636?style=flat&logo=github">
</a>
</p>
<p align="center">
<a href="#quick-start">Quick Start</a> ·
<a href="#highlights">Highlights</a> ·
<a href="#configure-your-site">Configure</a> ·
<a href="#write-posts">Write</a> ·
<a href="#deploy-to-vercel">Deploy</a> ·
<a href="./README.zh-CN.md">简体中文</a>
</p>
---

---
## Why Skyplume
Skyplume is extracted from [Ruoduan](https://www.0x1ai.com/)'s personal blog at [0x1ai.com](https://www.0x1ai.com/) — a production site written, maintained, and tuned over years of real-world use. It keeps what matters for serious personal publishing:
- **Writing experience.** MDX-first with front matter, reading time, table of contents, math, citations, code highlighting, and custom components.
- **Search visibility.** Complete SEO stack — metadata, Open Graph, Twitter cards, JSON-LD, sitemap, robots.txt, RSS.
- **Reading comfort.** Restrained typography, quiet color palette, dark mode, fast page transitions.
- **Developer ownership.** Plain data files and small React components. No CMS lock-in. No hidden configuration layers.
---
## Highlights
| | |
| --- | --- |
| **Framework** | Next.js 15 App Router, React 19, TypeScript, Tailwind CSS 4, Contentlayer 2 |
| **Authoring** | MDX, KaTeX math, citations, code titles + highlighting, heading anchors, GitHub alerts |
| **SEO** | Open Graph, Twitter cards, JSON-LD `BlogPosting`, canonical URLs, sitemap, robots.txt, RSS |
| **Discovery** | Build-time local search index, tag pages, structured archives, RSS feed |
| **Reading** | Dark mode, responsive layout, reading time, table of contents, previous/next navigation |
| **Motion** | Route transitions, staggered hero, scroll reveal, feed animations, progress bar |
| **Performance** | Static generation, optimized font loading, long-term asset caching, static export support |
| **Security** | CSP, referrer policy, HSTS, frame protection, content-type headers |
| **Lighthouse** | Baseline template tuned to **100 Performance / 100 Best Practices / 100 SEO** |

---
## Design Principles
Skyplume is designed for **reading before decoration**. The interface uses restrained spacing, sharp typography, and quiet borders so writing stays front and center. Motion is intentionally short and lightweight — polish without distraction.
**Mineral Teal palette.** A low-chroma, lab-grade teal paired with teal-tinted neutrals. Grays carry body text and metadata without visual noise. The primary color is reserved for links, focus states, and interactive cues. In dark mode, deep teal-gray backgrounds keep long-form reading stable.
The template is meant to be **owned**, not just used. Most customization starts in plain data files and MDX — not a hidden admin panel.
---
## Quick Start
```bash
yarn install
yarn dev
```
Open [http://localhost:3000](http://localhost:3000).
### Available Scripts
```bash
yarn dev # Start development server
yarn build # Production build + RSS generation
yarn serve # Serve production build locally
yarn analyze # Bundle analyzer
yarn lint # Lint app, components, layouts, and scripts
```
### Static Export
```bash
EXPORT=true UNOPTIMIZED=true yarn build
```
Set `BASE_PATH` when deploying under a subpath.
---
## Configure Your Site
Edit these files first — everything is self-documenting:
| File | Purpose |
| --- | --- |
| `data/siteMetadata.js` | Title, URL, author, SEO defaults, search, comments |
| `data/profile.ts` | About page: bio, links, skills |
| `data/authors/default.mdx` | Default author metadata |
| `data/headerNavLinks.ts` | Top navigation links |
| `data/projectsData.ts` | Projects page content |
| `public/static/images/skyplume-card.svg` | Social sharing card |
| `public/static/favicons/favicon.svg` | Browser favicon |
### Comments (Giscus)
Copy `.env.example` to `.env.local` and fill in your Giscus values. To disable comments entirely, set `comments.provider` to `""` in `data/siteMetadata.js`.
---
## Write Posts
Create MDX files in `data/blog`:
```mdx
---
title: My First Post
date: '2026-01-01'
tags:
- nextjs
- writing
categories:
- notes
draft: false
summary: A short description for feeds, cards, and SEO.
authors:
- default
---
Write your post in MDX.
```
Place images under `public/static/blog/<post-slug>` and reference them:
```mdx

```
A sample post is included at `data/blog/term-proxy.mdx`.
---
## Deploy to Vercel
Click the deploy button above. The template boots without newsletter, analytics, or comment credentials — everything is optional.
---
## Project Structure
```
app/ App Router pages, metadata, sitemap, robots
components/ Shared UI, MDX components, search, theme, motion
data/ Site metadata, authors, profile, projects, blog posts
layouts/ Blog post and list page layouts
public/static/ Images, favicons, post assets
scripts/ RSS and post-build utilities
css/ Tailwind, syntax highlighting, animations
```
---
## Recommend to Vercel
Skyplume fits the Vercel template community:
- **Category:** Blog, Next.js, Tailwind CSS, MDX
- **Repository:** [ruoduan-hub/next-blog-skyplume-template](https://github.com/ruoduan-hub/next-blog-skyplume-template)
- **Production reference:** [0x1ai.com](https://www.0x1ai.com/)
> Skyplume is a refined Next.js 15 blog template extracted from a production personal site. It ships with MDX publishing, Contentlayer, Tailwind CSS 4, local search, RSS, sitemap, JSON-LD, Open Graph defaults, dark mode, Giscus comments, static export support, security headers, and a baseline Lighthouse 100/100/100 setup for Performance, Best Practices, and SEO.
---
## Credits
Derived from the blog system powering [0x1ai.com](https://www.0x1ai.com/), built and maintained by [Ruoduan](https://www.0x1ai.com/).
## License
MIT — use, modify, and ship it.
看看同类模板
对比同技术栈与用途的模板,找到更适合的视觉与内容结构。

tailwind-nextjs-starter-blog
tailwind-nextjs-starter-blog 是一个面向个人技术博客的 Next.js 与 Tailwind CSS 启动模板,其 v2 版本基于 App Router 与 React Server Comp…
Next.js · 博客

Nextjs-tailwindcss-blog-template
使用 Tailwind CSS 的 Next.js 博客。当前分支通过 Velite 处理 Markdown,早期 Contentlayer 实现保留在单独的历史分支中。
Next.js · 博客

Next-js-Blog-Boilerplate
Next-js-Blog-Boilerplate 是一套面向个人与技术博客的启动代码,基于 Next.js 12 与 Tailwind CSS 3 构建,同时集成了 TypeScript、ESLint、Prettier …
Next.js · 博客

nextjs-blog-theme
nextjs-blog-theme 是 Netlify 团队维护的一个博客启动模板,基于 Next.js 15(Pages Router)和 Tailwind CSS 4.x 构建,设计由 Bejamas 机构完成。
Next.js · 博客

blog
🚀 My personal blog made with Tailwind CSS and NextJS. Template from Timlrx. Feel free to fork, follow and use…
Next.js · 博客

tailnext
Tailnext 是一个基于 Next.js 14 App Router 和 Tailwind CSS 的免费开源模板,由 onWidget 团队创建并维护。
Next.js · 博客
