Configuration and extensions: make it yours

Adjust appearance, copy, navigation, sharing and statistics, and add your own styles and scripts.

Use blog.config.ts to adjust the site’s appearance, content and interactions. Manage friend links in friends.config.ts, and add custom styles or scripts through the files in custom/.

Site and descriptive copy

site sets the name, production address, languages and timezone; author sets the name, biography, avatar and social links. Homepage headings, search prompts and footer copy live in text.

Display copy accepts plain strings or localized maps:

author: {
name: { zh: '站点作者', en: 'Site author' },
bio: {
zh: '记录日常与想法。',
en: 'Notes from everyday life.',
},
}

Choose content languages through site.locales; missing interface translations fall back automatically. Contributors add translations under src/i18n/, register them in that directory’s i18n.config.ts, and contribute both to the repository.

Appearance

blog.config.ts
appearance: {
defaultTheme: 'system',
pageTransition: 'fade',
codeThemes: { light: 'github-light', dark: 'github-dark' },
showCodeLineNumbers: false,
categoryCoverStyle: 'thumbnail',
}

Choose light, dark or system appearance, content transitions and code themes. Category cards support thumbnail, right-fading and full-background covers. Adjust individual categories with coverStyle.

sidebar.items sets sidebar navigation, and sidebar.menu sets the top-left site-name menu. Entries open builtin pages, standalone pages or external links. Binding a builtin page with page uses the corresponding pages entry for its title, description and introduction.

footer sets the start date, copyright author, content license and theme attribution. Friend links support groups, avatars, descriptions and search.

Sharing and statistics

sharing.copyFormat sets the copied sharing message; sharing.platforms sets platform names, icons and links. Use placeholders such as {title}, {description}, {author}, {blog} and {url}.

article.shareCover sets the dimensions, colors and font for automatic Satori share covers. statistics controls individual metrics, the publication heatmap and article-length bars.

Global extensions

FilePurpose
custom/head.htmlAdd content to head
custom/body-start.htmlAdd content at the start of body
custom/body-end.htmlAdd content at the end of body
custom/styles.cssCustom styles
custom/client.tsRun scripts on page load and handle cleanup
custom/components/MDX components shared by multiple articles

See the theme documentation for all fields, defaults and examples.

AstroReading experienceLast updated

Search articles

Recent articles

Meet BlogGPTBrowsing and search: discover articles through conversationContent organization: files, languages and assetsMarkdown typography: text, tables and codeArticle enhancements: callouts, math, diagrams and lightboxesEnhancement switches: defaults and per-entry overrides

Keyboard shortcuts

Search articles
Ctrl+K
Toggle sidebar
Ctrl+Shift+S
Home
Ctrl+Shift+O
Focus search input
Shift+Esc
Keyboard shortcuts
Ctrl+/

Blog statistics

Articles
10
Characters
13,276
Days online
1021
Language
zh / en
First publication
Jul 22, 2025
Latest update
Oct 16, 2026
Average length
1,328
Average interval
50.1 days / article

Publishing in the past year

MWFNovDecJanFebMarAprMayJunJulAugSepOct

Public articles in the site timezone. Darker cells mean more posts.

Recent article lengths