Supports Markdown and MDX writing, with 41 built-in content components, Shiki syntax highlighting, and KaTeX math rendering
astro-solitude — Astro Blog Template
By everfu
Astro Solitude is a static blog theme built on Astro, supporting Markdown/MDX writing, 41 content components, category/tag/series archives, multiple comment systems, and local search. The interface defaults to English and includes Simplified Chinese, Traditional Chinese, and Spanish translations.
Explore the design
Compare the page layouts and mobile experience. Open any screenshot for a closer look.
Actual screenshot captured by the server browser.
All pages & views 3
Screenshots show visual appearance; interactive behavior may differ.
What stands out
A quick read of the recorded project description.
Article management covers categories, tags, series, archives, pagination, pinned posts, drafts, custom URLs, and aliases
Provides pages such as about, friends, equipment, music, guestbook, short posts, recent comments, and 404
Supports local search, Algolia, and DocSearch, and generates RSS and sitemap
Can integrate with Twikoo, Waline, Valine, Artalk, and Giscus comment systems, loaded according to configuration
Interface defaults to English and includes built-in Simplified Chinese, Traditional Chinese, and Spanish translations
Template Details
Astro Solitude is a static blog theme developed by everfu for Astro, licensed under Apache-2.0. It targets personal blog scenarios, generates static pages via Astro, and can be deployed to hosting platforms or self-hosted servers.
For writing, the theme supports Markdown and MDX, with 41 built-in content components, Shiki syntax highlighting, and KaTeX math rendering. Article management provides categories, tags, series, archives, pagination, pinned posts, drafts, custom URLs, and aliases. Beyond regular posts, it includes pages such as about, friends, equipment, music, guestbook, short posts, recent comments, and 404.
For interaction, it offers light/dark mode, image lightbox, keyboard shortcuts, context menu, and a music capsule that continues playing across page navigation. Search supports local search, Algolia, and DocSearch, and generates RSS and sitemap. Comments can integrate with Twikoo, Waline, Valine, Artalk, and Giscus, loaded according to configuration. The interface defaults to English and includes built-in Simplified Chinese, Traditional Chinese, and Spanish translations.
Before use, note: the template includes sample posts and pages; comments, comment aggregation, and online music are disabled by default and require filling in your own service identifiers per the integration guide. Changing the interface language does not translate posts or custom navigation. When hosting the site in a subdirectory, set base. Third-party assets such as sample images, fonts, and icons require separate license verification.
Is it right for your project?
Use Cases
- Building a personal static blog with Astro and deploying to a hosting platform or self-hosted server
- Writing technical articles, notes, and short posts in Markdown or MDX, and organizing content with categories, tags, and series
- Blog sites that need local search, RSS subscription, and sitemap
- Blogs that want to integrate comment services such as Twikoo, Waline, Valine, Artalk, or Giscus
- Sites that need reading interactions such as light/dark mode, image lightbox, keyboard shortcuts, and cross-page music playback
Suitable For
- Developers familiar with Astro or willing to configure site.config.ts according to the documentation
- Personal blog authors who primarily use static deployment and do not need server-side rendering
- Blog sites that need a multilingual interface (English, Simplified Chinese, Traditional Chinese, Spanish)
- Technical bloggers who want to write using MDX components and math formula rendering
Getting started & customization
Use these recorded setup notes alongside the repository instructions for your chosen version.
- 1
Requires Node.js 22.12.0+ and pnpm; the pnpm version is determined by the packageManager field in package.json
- 2
Create an independent repository via GitHub's Use this template, then clone it, run pnpm install --frozen-lockfile and pnpm dev
- 3
Edit src/site.config.ts to set the site URL, title, author, navigation, and theme options; for subdirectory deployment, set base
- 4
The template includes sample posts and pages; replace sample content, images, and site identity information before publishing
- 5
Comments, comment aggregation, and online music are disabled by default; fill in your own service identifiers per the integration guide
License & source material
Usage conditions & limitations
Free to use · keep license noticeThis entry covers the free version in the public repository under the Apache-2.0 license; the free scope is the code of this version and does not imply that external services or third-party assets are free.
Must comply with when using
- Free use, modification, commercial use, and distribution are permitted; when distributing, include the Apache-2.0 license.
- Modified files must prominently indicate changes and retain relevant copyright, patent, trademark, and attribution notices.
- If the original project includes a NOTICE file, retain applicable attribution notices when distributing derivative works.
- The license includes an applicable contributor patent grant; initiating patent litigation as described in the license terminates that patent grant, and no trademark rights are granted.
- The code is provided as-is; warranties and limitations of liability are governed by the original license and applicable law.
Additional costs & items to verify
- Comments, comment aggregation, and online music are disabled by default and require configuring third-party service identifiers (such as Twikoo, Waline, Valine, Artalk, Giscus, etc.) per the integration guide to enable; this may involve external service accounts or fees.
- Before publishing, you must replace the template's sample posts, images, and site identity information; do not launch directly with sample content.
- Switching the interface language only affects built-in interface text and does not translate post content or custom navigation.
- If the site is deployed in a subdirectory, you must additionally set the base configuration item, otherwise paths will be incorrect.
- The runtime requires Node.js 22.12.0 or higher and uses pnpm, and the pnpm version must match the packageManager field specified in package.json.
- When modifying or redistributing the project, retain applicable license and copyright notices.
- Demo images, fonts, icons, and other third-party assets must be checked against their respective licenses; do not judge solely based on the code's Apache-2.0 license.
- External services such as domain, hosting, database, payment, or AI may incur additional charges.
View Original Text Basis
no-charge, royalty-free, irrevocable copyright license
Original License Text
Comments, comment aggregation, and online music are disabled with empty service identifiers. Follow the [integration guide](docs/integrations.md) to connect your own services.
Original README
Replace sample content, images, and site identity before publishing.
Original README
Changing the interface locale does not translate posts or custom navigation.
Original README
For a site hosted under a subdirectory, also set `base`, for example `base: '/blog/'`.
Original README
Install Node.js **22.12.0+** and pnpm. Use the pnpm version specified in the `packageManager` field of [package.json](package.json).
Original README
https://github.com/everfu/astro-solitude/blob/main/LICENSEhttps://github.com/everfu/astro-solitude/blob/main/README.mdRetain the applicable license and copyright notices when modifying or redistributing the project.
Original README
Compiled by DeepSeek based on repository license and README ·2026-10-02. Results only cover the materials read; dependencies, images, fonts, and subsequent term changes are subject to their respective original texts.
Project checks & description sources
Template Information
- Source platforms
- Astro Themes
- Documentation and maintenance reference score
- More documented · 83 / 100
- Technologies
- Astro
- Website type
- Blog
How this score is calculated
Our heuristic uses license records (up to 30), a demo link (12), a preview (10), stars (15), recorded maintenance (15), description completeness (8), feature records (5) and classification data (5). It is not a code, security or performance test, or a Google score. A link does not establish tested functionality.
What to verify for this project
- Repository update recorded
- 2026-09-14
- Screenshot last checked
- 2026-10-02
A demo link is listed. Check it with your own content and viewport sizes; its presence does not confirm that forms, authentication or payments work.
The catalog identifies Astro as the primary stack. Check the actual dependency manifest and lockfile for versions and hosting requirements. These notes use recorded metadata, not a code audit or a deployment test.
Use a selection guide →How this description was prepared
AI-assisted description based on catalog records and repository material. Repository authors are not automatically the reviewers of this description.
Automatically checked against source and license rules; no manual editorial review.
Inspect the recorded source material
SHA-256: 7d9dfc4e1eceb048153aa6616827aaa86af8dd7701459b65da62b777c12adb59
2026-10-02T09:04:22.685Z
Source file / repositoryEnglish 丨 [简体中文](README.zh-CN.md)
<div align="center">
<img src="public/img/logo.png" width="120" height="120" alt="Astro Solitude paper airplane logo" />
# Astro Solitude
A clean, elegant, feature-rich blog theme for Astro.
Build your personal blog with static pages, Markdown / MDX, light and dark modes, and a rich collection of content components.
[](https://astro.build/)
[](package.json)
[](LICENSE)
[](https://github.com/everfu/astro-solitude/actions/workflows/check.yml)
[](https://github.com/everfu/astro-solitude/stargazers)
[Use this template](https://github.com/everfu/astro-solitude/generate) · [Documentation](docs/README.md) · [Quick start](#quick-start) · [Configuration](docs/configuration.md) · [Components](docs/components.md) · [Deployment](docs/deployment.md) · [Report an issue](https://github.com/everfu/astro-solitude/issues)
</div>

## Features
- **Layout and reading**: responsive post cards, recommendations, sidebar, table of contents, related posts, copyright notices, and donation links.
- **Writing**: Markdown / MDX, 41 content components, Shiki syntax highlighting, and KaTeX math rendering.
- **Post management**: categories, tags, series, archives, pagination, pinned posts, drafts, custom URLs, and aliases.
- **Special pages**: About, Links, Equipment, Music, Message Board, short posts, Recent Comments, and 404.
- **Interactions**: light and dark modes, image lightbox, keyboard shortcuts, context menu, and a music capsule that persists across page navigation.
- **Search and feeds**: local search, Algolia, DocSearch, RSS, and sitemap.
- **Comments**: Twikoo, Waline, Valine, Artalk, and Giscus, loaded according to configuration.
- **Interface languages**: English by default, with Simplified Chinese, Traditional Chinese, and Spanish.
- **Static deployment**: generate static files for a hosting platform or your own server.
## Quick start
### 1. Get the project
Install Node.js **22.12.0+** and pnpm. Use the pnpm version specified in the `packageManager` field of [package.json](package.json).
Click [Use this template](https://github.com/everfu/astro-solitude/generate) to create an independent repository, then clone your copy (replace `YOUR_NAME` and `my-blog`):
```sh
git clone https://github.com/YOUR_NAME/my-blog.git
cd my-blog
pnpm install --frozen-lockfile
pnpm dev
```
Open the local URL shown in your terminal to preview the theme and sample content.
### 2. Configure your site
Edit [`src/site.config.ts`](src/site.config.ts) to set your site URL, title, author, navigation, and theme options. Here is a minimal configuration:
```ts
import { defineSolitudeConfig } from './lib/config';
export default defineSolitudeConfig({
site: 'https://example.com',
title: 'My blog',
description: 'Notes, stories, and discoveries.',
locale: 'en',
author: { name: 'Your name' },
});
```
For a site hosted under a subdirectory, also set `base`, for example `base: '/blog/'`. See [Configuration](docs/configuration.md) for all options.
The template includes sample posts and pages with local search enabled. Comments, comment aggregation, and online music are disabled with empty service identifiers. Follow the [integration guide](docs/integrations.md) to connect your own services. Replace sample content, images, and site identity before publishing. Changing the interface locale does not translate posts or custom navigation.
### 3. Start writing
Create a Markdown or MDX file in `src/content/posts/`, such as `hello-world.md`:
```md
---
title: Hello, world
date: 2026-09-11
description: My first post.
tags: [Life]
---
Start your story here.
```
The default URL is `/p/hello-world/`. Use `slug`, `url`, and `aliases` to customize addresses. Set `draft: true` for drafts, or `home: false` to hide a post from homepage areas while keeping it in archives, search, RSS, and direct links.
See [Front matter](docs/writing.md#front-matter) and [MDX components](docs/components.md) for more writing options.
### 4. Build and deploy
```sh
pnpm build
pnpm preview
```
Publish the generated `dist/` directory to your hosting platform. Set the build command to `pnpm build` and the output directory to `dist`. Use `pnpm install --frozen-lockfile` during dependency installation.
See [Deployment](docs/deployment.md) for hosting instructions and path configuration.
## Documentation
The template, sample content, and documentation use English by default. Built-in interface translations are available in Simplified Chinese, Traditional Chinese, and Spanish. Start with the [documentation index](docs/README.md).
| Guide | Contents |
| ------------------------------------------ | --------------------------------------------------------- |
| [Getting started](docs/getting-started.md) | Create a template copy, install, write your first post |
| [Configuration](docs/configuration.md) | Site identity, appearance, navigation, defaults |
| [Writing](docs/writing.md) | Front matter, drafts, categories, URLs, feeds |
| [Pages](docs/pages.md) | About, links, equipment, short updates |
| [Components](docs/components.md) | Usage, parameters, and examples for all 41 MDX components |
| [Integrations](docs/integrations.md) | Comments, music, external search |
| [Deployment](docs/deployment.md) | GitHub Pages, static hosts, subpaths |
| [Hugo import](docs/migration.md) | Preview, export, verify migrated content |
| [FAQ](docs/faq.md) | Troubleshooting and theme updates |
<details>
<summary>More previews: dark mode and mobile reading</summary>


</details>
## Project structure
```text
astro-solitude/
├── public/ # Images, fonts, and other static assets
├── src/
│ ├── components/ # Theme and MDX components
│ ├── content/
│ │ ├── posts/ # Blog posts
│ │ └── pages/ # Custom pages
│ ├── data/ # About, links, equipment, and short-post data
│ ├── layouts/ # Page layouts
│ ├── pages/ # Astro routes
│ ├── styles/custom.css # Custom styles
│ └── site.config.ts # Site configuration
├── docs/ # Documentation
└── astro.config.mjs # Astro configuration
```
## Contributing
Use [Issues](https://github.com/everfu/astro-solitude/issues) for bug reports and suggestions. [Pull requests](https://github.com/everfu/astro-solitude/pulls) improving the theme, documentation, and translations are welcome. Include reproduction steps, your environment, and relevant configuration when reporting a problem.
Run these checks before submitting changes:
```sh
pnpm docs:check
pnpm check
pnpm build
pnpm test
```
For changes to page interactions, also run the browser tests:
```sh
pnpm build:fixture
pnpm exec playwright install chromium
pnpm test:e2e
```
Browser tests use an isolated fixture site. Mocked third-party tests do not establish that live services work. See the [development validation report](docs/parity.md) for test coverage and source comparisons.
## License
[Apache-2.0](LICENSE) License © 2026–present [everfu](https://github.com/everfu). Retain the applicable license and copyright notices when modifying or redistributing the project.
Explore similar templates
Compare previews and descriptions within the same stack and category.

astrowind
AstroWind is a free, open-source Astro starter theme using Astro and Tailwind CSS, released under the MIT license.
Astro · Blog

astro-paper
AstroPaper is a minimal, responsive, accessible, and SEO-friendly Astro blog theme. Articles are stored as Markdown/MDX in src/content/posts/, with subdirectories affecting URLs.
Astro · Blog

fuwari
Fuwari is a static blog template built with Astro and Tailwind CSS for personal blogs. It manages posts as Markdown files in src/content/posts/, with frontmatter for title, date, description, cover, tags, categories, draft status, and language.
Astro · Blog

Firefly
Firefly is a clean personal blog theme forked from Astro and Fuwari, offering four background modes, single/double sidebar and list/grid layouts, Pagefind client-side full-text search, and a six-language UI.
Astro · Blog

astro-theme-cactus
Astro Cactus is an Astro-based blog and portfolio theme that uses Markdown/MDX content collections to manage posts, notes, and tags, with frontmatter type-checked by a schema.
Astro · Portfolio

astrofy
Astrofy is a free and open-source personal portfolio website template built with Astro and TailwindCSS, with built-in blog, CV timeline, project showcase, store, and RSS feed modules.
Astro · Portfolio
