Skyplume Ships a Next.js 15 Blog Template That Hits Triple 100s on Lighthouse Out of the Box
TL;DR
- Skyplume is a Next.js 15 blog template extracted from a real production personal blog.
- It comes with MDX writing, SEO, RSS, sitemap, local search, tags, dark mode, Giscus comments, and static export built in.
- The base template is tuned for Lighthouse scores of 100 in Performance, Best Practices, and SEO.
- The project is open source and supports one-click deployment to Vercel.
Recently, I organized my personal blog system into an open-source template called Skyplume Blog Template.
It's not a hastily assembled demo but was extracted from my own production blog 0x1ai.com. The template's goal is clear: to give people who want to write seriously, document projects, and publish engineering notes a clean, fast, maintainable Next.js blog starting point with solid SEO fundamentals.
Project links:
- GitHub: https://github.com/ruoduan-hub/next-blog-skyplume-template
- Production reference site: https://www.0x1ai.com/
- One-click deploy to Vercel: 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
If you're looking for a personal blog template you can maintain long-term, rather than just a landing page for screenshots, Skyplume might be a good fit.
Why create another blog template?
There's no shortage of blog templates, but many share a common problem: they look great at first glance, but after writing a few articles, you find the maintenance cost is very high.
Some templates prioritize visuals, making the article page uncomfortable to read; some have many features, but customization entry points are deeply hidden; some require you to add SEO, RSS, sitemap, Open Graph, and article structured data yourself. For someone whose main goal is writing, these things constantly interrupt the publishing rhythm.
Skyplume's approach is relatively restrained: make the content readable first, then talk about decoration.
Its interface uses clear typography, quiet borders, lightweight animations, and a stable dark mode. You can treat it as a personal publishing system with infrastructure already set up, then refocus your energy on articles, projects, and long-term accumulation.
What does it look like?
The image below is a screenshot of the template's homepage. The overall style prioritizes content, avoids excessive decoration, but retains enough detail: clear navigation, prominent hero text, lightweight stat cards, article lists, tags, and a stable rhythm of whitespace.
I hope it doesn't look like a "freshly initialized template," but rather something closer to a personal site ready for long-term writing.
What features are built in?
Skyplume is built on Next.js 15 App Router, React 19, TypeScript, Tailwind CSS 4, and Contentlayer, with MDX as the core writing method.
Currently built-in capabilities include:
- MDX article publishing, supporting front matter, reading time, table of contents, and custom components.
- Code highlighting, math formulas, quotes, callout blocks, images, iframes.
- Tags, pagination, author info, projects page, about page.
- RSS, sitemap, robots, local search index.
- SEO metadata, Open Graph, Twitter Cards, canonical URL.
- Generation of
BlogPostingJSON-LD based on article front matter. - Dark mode, supporting system preference following.
- Optional Giscus comments.
- Lightweight animations: route transitions, homepage fade-in, article list appearance, top progress bar.
- Security-related headers, static asset caching, and static export support.
I tried to include in advance "things a seriously maintained personal blog will eventually need," but without introducing a large CMS or complex backend. Most configurations are concentrated in ordinary data files, MDX files, and small React components.
Lighthouse Performance
The base template has been tuned for Lighthouse, achieving scores of 100 in Performance, Best Practices, and SEO. Actual scores after deployment will still be affected by images, analytics scripts, comment systems, and third-party resources, but the template itself won't be a drag from the start.
I care about this quite a bit. A blog isn't just for the author, nor just for search engines. It should open quickly on mobile, have a clear article structure, display the correct card when shared, and have feeds and sitemaps available by default.
Who is it for?
Skyplume is more suitable for these scenarios:
- Wanting to set up a long-term maintained personal tech blog.
- Wanting to write engineering notes, project logs, open-source records, or long-form articles.
- Preferring Markdown/MDX writing and not wanting to integrate a complex CMS.
- Hoping the site has SEO, RSS, sitemap, and local search by default.
- Wanting to deploy to Vercel, while also retaining the possibility of static export.
- Wanting to start from a template with a high degree of design completion, rather than slowly filling in from a blank page.
It's less suitable for these scenarios:
- You need multi-user backend, permission management, an online editor, and a full CMS workflow.
- You want a visually striking portfolio homepage, not a content-first blog.
- You want to customize all pages with zero code.
Quick Start
If you want to run it locally, just:
yarn install
yarn dev
Then open:
http://localhost:3000
If you want to deploy directly, you can click this button:
When customizing for the first time, it's recommended to prioritize modifying these files:
data/siteMetadata.js: Site title, URL, author, GitHub, SEO default configuration.data/profile.ts: About page info, links, and skill display.data/authors/default.mdx: Default author information.data/headerNavLinks.ts: Top navigation.data/projectsData.ts: Projects page content.public/static/images/skyplume-card.svg: Social sharing image.public/static/favicons/favicon.svg: Favicon.
What's the writing experience like?
Articles are placed in the data/blog directory, written in 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.
Article images are recommended to be placed in:
public/static/blog/<post-slug>
Then referenced in MDX like this:

This workflow is quite close to my own blogging habits: the file structure is clear, articles are articles, images are images, and site configurations can all be tracked in the repository.
How is it different from a regular starter?
When making Skyplume, I didn't just want to make a starter that "runs," but a template that allows for "long-term writing."
| Dimension | Common starter | Skyplume |
|---|---|---|
| Writing | Markdown or simple MDX | MDX + front matter + custom components |
| SEO | Usually needs manual addition | metadata, OG, canonical, JSON-LD, sitemap, robots, RSS included |
| Discovery | Mostly just a list page | Tags, pagination, local search, RSS |
| Design | Large visual differences | Content-first, restrained typography, stable dark mode |
| Deployment | Usually deployable | Supports Vercel one-click deploy, also supports static export |
| Maintainability | Depends on specific template implementation | Configuration concentrated in data files and small components |
Of course, it's not perfect. I plan to continue optimizing the template documentation, add more screenshots, organize a theming guide, and collect real websites built by users based on Skyplume.
Open Source Info
Skyplume is open-sourced under the MIT License.
If you find this template helpful, you are welcome to:
- Star the project.
- Fork it and turn it into your own blog.
- Open issues with suggestions.
- Share the site you built with Skyplume.
- Help recommend it to Vercel Templates or other open-source template collections.
Here's the project link again:
https://github.com/ruoduan-hub/next-blog-skyplume-template
You're also welcome to directly experience the production reference site:
Conclusion
I've always felt that the most important thing about a personal blog isn't "looking like a product homepage," but whether it allows someone to keep writing.
Skyplume's goal is the same: it doesn't try to decide your content for you, nor does it hide site configuration in complex systems. It just lays the infrastructure a modern personal blog needs in advance, so you can start writing faster, maintain more stably, and accumulate your content assets more naturally.
If you're preparing to rebuild your blog, or want to find a clean publishing entry for projects, engineering notes, and open-source records, you can give Skyplume a try.
When publishing to Chinese communities, if the platform doesn't display GitHub raw images, you can manually upload these images:
public/static/images/skyplume-card.svgintro/demo-blog.pngintro/lighthouse.png