<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Your Site Name</title><description>Your site description</description><link>https://yourdomain.com/</link><language>zh-CN</language><item><title>Astro Shibui 模板完全指南：从零开始搭建您的博客</title><link>https://yourdomain.com/blog/complete-guide/</link><guid isPermaLink="true">https://yourdomain.com/blog/complete-guide/</guid><description>详细介绍如何使用 Astro Shibui 模板搭建博客，包括环境配置、功能启用、内容管理等全流程</description><pubDate>Fri, 13 Mar 2026 00:00:00 GMT</pubDate><content:encoded>&lt;img src=&quot;https://images.unsplash.com/photo-1770983438675-b188d9276ba0?auto=format&amp;fit=crop&amp;w=1200&amp;h=630&amp;q=80&amp;fm=jpg&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&amp;v=989471eb6bd3&quot; alt=&quot;Astro Shibui 模板完全指南：从零开始搭建您的博客&quot; /&gt;&lt;br/&gt;&lt;p&gt;欢迎来到 Astro Shibui 模板！这是一个优雅、极简的 Astro 博客模板，支持多语言、播客、搜索等功能。本文将详细介绍如何从零开始使用这个模板搭建您的博客。&lt;/p&gt;
&lt;h2&gt;快速开始&lt;/h2&gt;
&lt;h3&gt;前置要求&lt;/h3&gt;
&lt;p&gt;在开始之前，请确保您已经安装了：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Node.js&lt;/strong&gt; &amp;gt;= 18.x&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;pnpm&lt;/strong&gt; &amp;gt;= 8.x（推荐使用 pnpm，也支持 npm/yarn）&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;安装项目&lt;/h3&gt;
&lt;p&gt;如果您是通过 GitHub Template 创建的项目：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;# 克隆或下载项目
cd astro-shibui-template

# 安装依赖
pnpm install
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;配置环境变量&lt;/h3&gt;
&lt;p&gt;复制环境变量模板：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;cp .env.example .env
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;编辑 &lt;code&gt;.env&lt;/code&gt; 文件，设置基本配置：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;# 站点基本信息
PUBLIC_SITE_URL=http://localhost:4321  # 开发环境用这个
PUBLIC_SITE_NAME=&quot;我的博客&quot;
PUBLIC_SITE_DESCRIPTION=&quot;我的个人博客&quot;

# Algolia 搜索（可选，稍后配置）
# ALGOLIA_APP_ID=your_app_id
# ALGOLIA_SEARCH_KEY=your_search_key
# ALGOLIA_INDEX_NAME=your_index_name

# 播客功能（可选，稍后配置）
# PUBLIC_PODCAST_ENABLED=false
# PUBLIC_PODCAST_AUDIO_BASE_URL=https://your-cdn.com/
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;启动开发服务器&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;pnpm dev
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;访问 http://localhost:4321/ 查看您的博客！&lt;/p&gt;
&lt;h2&gt;项目结构&lt;/h2&gt;
&lt;p&gt;了解项目结构有助于您更好地定制模板：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;astro-shibui-template/
├── src/
│   ├── lib/
│   │   └── config.ts          # 核心配置文件 ⭐
│   ├── content/
│   │   ├── blog-zh/           # 中文文章
│   │   └── blog-en/           # 英文文章
│   ├── layouts/
│   │   ├── BaseLayout.astro    # 基础布局
│   │   └── CoverLayout.astro   # 封面布局
│   ├── components/
│   │   ├── Search.astro       # 搜索组件
│   │   ├── PodcastPlayer.tsx  # 播客播放器
│   │   └── ...
│   ├── pages/
│   │   ├── index.astro        # 首页
│   │   ├── blog/              # 博客相关页面
│   │   └── ...
│   └── styles/
│       ├── global.css         # 全局样式
│       └── podcast-player.css # 播客样式
├── public/
│   └── images/               # 静态图片资源
├── .env.example              # 环境变量模板
└── astro.config.mjs          # Astro 配置
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;核心配置&lt;/h2&gt;
&lt;h3&gt;站点基本信息&lt;/h3&gt;
&lt;p&gt;编辑 &lt;code&gt;src/lib/config.ts&lt;/code&gt; 设置您的博客信息：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;export const siteConfig = {
  // 基本信息
  name: &quot;我的博客&quot;,
  description: &quot;记录我的学习和思考&quot;,
  author: &quot;您的名字&quot;,
  url: &quot;http://localhost:4321&quot;,  // 生产环境改为您的域名

  // 多语言配置
  locales: {
    default: &quot;zh-cn&quot;,
    available: [&quot;zh-cn&quot;, &quot;en&quot;],
  },

  // 功能开关
  features: {
    podcast: {
      enabled: false,  // 是否启用播客
      audioBaseUrl: &quot;&quot;,
    },
    search: {
      enabled: true,   // 是否启用搜索
      provider: &quot;algolia&quot;,
    },
  },
};
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;多语言配置&lt;/h3&gt;
&lt;p&gt;模板支持中英双语：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;中文文章&lt;/strong&gt;：放在 &lt;code&gt;src/content/blog-zh/&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;英文文章&lt;/strong&gt;：放在 &lt;code&gt;src/content/blog-en/&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;语言切换会自动根据 URL 路由工作：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;中文：&lt;code&gt;http://localhost:4321/blog/&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;英文：&lt;code&gt;http://localhost:4321/en/blog/&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;内容管理&lt;/h2&gt;
&lt;h3&gt;创建文章&lt;/h3&gt;
&lt;p&gt;在 &lt;code&gt;src/content/blog-zh/&lt;/code&gt; 创建新的 Markdown 文件：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;---
title: &quot;文章标题&quot;
description: &quot;文章描述&quot;
date: 2026-03-13
tags: [&quot;标签1&quot;, &quot;标签2&quot;]
toc: true  # 是否显示目录
images: [&quot;/images/cover.jpg&quot;]  # 封面图片（可选）
draft: false  # 是否为草稿
categories: [&quot;技术&quot;]
related: &quot;another-post&quot;  # 相关文章 slug（可选）
---
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;Frontmatter 字段说明&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;字段&lt;/th&gt;
&lt;th&gt;类型&lt;/th&gt;
&lt;th&gt;必需&lt;/th&gt;
&lt;th&gt;说明&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;title&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;string&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;文章标题&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;description&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;string&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;文章描述&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;date&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Date&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;发布日期&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;tags&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;array&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;标签列表&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;toc&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;boolean&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;是否显示目录（默认 false）&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;images&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;array&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;封面图片列表&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;draft&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;boolean&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;是否为草稿（草稿不会发布）&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;categories&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;array&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;分类列表&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;podcast&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;boolean&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;是否有播客（需启用播客功能）&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;related&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;string&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;相关文章 ID&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;featured_layout&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;boolean&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;特殊布局（首页封面）&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3&gt;目录生成（TOC）&lt;/h3&gt;
&lt;p&gt;启用目录后，系统会自动为文章内的二级、三级等标题添加序号（如 1.1、1.2、2.1），同时生成可点击的目录。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;自动生成&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;✅ 从 H2-H6 标题生成目录&lt;/li&gt;
&lt;li&gt;✅ 标题自动添加序号&lt;/li&gt;
&lt;li&gt;✅ 自动添加锚点链接&lt;/li&gt;
&lt;li&gt;✅ 点击目录滚动到对应位置&lt;/li&gt;
&lt;li&gt;✅ 自动高亮当前阅读位置&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;显示位置&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;📄 文章详情页侧边栏（桌面端）&lt;/li&gt;
&lt;li&gt;📱 文章详情页元数据下方（移动端）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;使用方法&lt;/strong&gt;：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;---
title: &quot;长篇文章&quot;
toc: true  # 启用目录
---

# 文章标题

## 第一章节

这是第一章的内容...

### 子节

子章节的内容...

## 第二章节

这是第二章的内容...
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;目录样式定制&lt;/strong&gt;：&lt;/p&gt;
&lt;p&gt;目录样式由 &lt;code&gt;src/styles/global.css&lt;/code&gt; 控制：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;.toc {
  position: sticky;
  top: 2rem;
  max-height: calc(100vh - 4rem);
  overflow-y: auto;
}

.toc-title {
  font-weight: bold;
  margin-bottom: 1rem;
}

.toc-list {
  list-style: none;
  padding: 0;
}

.toc-list li {
  margin-bottom: 0.5rem;
}

.toc-list a {
  color: var(--color-text-primary);
  text-decoration: none;
  display: block;
  padding: 0.25rem 0;
  border-left: 2px solid transparent;
  padding-left: 0.75rem;
}

.toc-list a:hover {
  border-left-color: var(--color-border);
  background: var(--color-bg-secondary);
}
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;相关文章推荐&lt;/h3&gt;
&lt;p&gt;模板会自动显示相关文章推荐：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;推荐规则&lt;/strong&gt;：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;优先使用 &lt;code&gt;related&lt;/code&gt; 字段&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;如果在 frontmatter 中指定了 &lt;code&gt;related&lt;/code&gt; 字段&lt;/li&gt;
&lt;li&gt;系统会直接推荐该文章&lt;/li&gt;
&lt;li&gt;无需匹配标签&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;回退到标签匹配&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;如果未指定 &lt;code&gt;related&lt;/code&gt; 字段&lt;/li&gt;
&lt;li&gt;系统使用文章的第一个标签&lt;/li&gt;
&lt;li&gt;推荐该标签下最新的文章&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;使用方法&lt;/strong&gt;：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;方法 1：明确指定相关文章&lt;/strong&gt;：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;---
title: &quot;React 入门&quot;
tags: [&quot;前端&quot;, &quot;React&quot;]
related: &quot;react-best-practices&quot;  # 推荐 slug
toc: true
---
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;方法 2：基于标签推荐&lt;/strong&gt;：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;---
title: &quot;React 入门&quot;
tags: [&quot;前端&quot;, &quot;React&quot;]
toc: true
---
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;系统会自动推荐标签为 &quot;前端&quot; 的最新文章。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;显示内容&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;📰 文章标题&lt;/li&gt;
&lt;li&gt;📅 发布日期&lt;/li&gt;
&lt;li&gt;📝 文章摘要（自动提取）&lt;/li&gt;
&lt;li&gt;⏱️ 阅读时间（自动估算）&lt;/li&gt;
&lt;li&gt;🎙️ 播客提示（如果有）&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;字数统计和阅读时间&lt;/h3&gt;
&lt;p&gt;模板会自动计算并显示：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;统计信息&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;📊 文章字数（按语言规则）&lt;/li&gt;
&lt;li&gt;⏱️ 预估阅读时间&lt;/li&gt;
&lt;li&gt;📅 发布日期&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;显示位置&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;📄 文章详情页：侧边栏&lt;/li&gt;
&lt;li&gt;🏠 首页：文章卡片（可选）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;字数统计规则&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;中文&lt;/strong&gt;：每个汉字计为 1 个字&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;不计算标点符号&lt;/li&gt;
&lt;li&gt;不计算空格&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;英文&lt;/strong&gt;：每个单词计为 1 个词&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;以空格分隔&lt;/li&gt;
&lt;li&gt;不计算标点符号&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;阅读时间估算&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;中文&lt;/strong&gt;：字数 / 380（每分钟）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;英文&lt;/strong&gt;：单词数 / 220（每分钟）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;例如：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;中文 1900 字 ≈ 5 分钟&lt;/li&gt;
&lt;li&gt;英文 1100 词 ≈ 5 分钟&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;自定义计算&lt;/strong&gt;：&lt;/p&gt;
&lt;p&gt;编辑 &lt;code&gt;src/lib/word-count.ts&lt;/code&gt;：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;export function countWords(content: string, lang: string): number {
  // 自定义字数统计逻辑
  if (lang === &quot;zh-cn&quot;) {
    // 中文统计
    return content.replace(/[^\u4e00-\u9fa5]/g, &quot;&quot;).length;
  } else {
    // 英文统计
    return content.split(/\s+/).length;
  }
}

export function formatWordCount(count: number, lang: string): string {
  // 自定义格式化
  if (lang === &quot;zh-cn&quot;) {
    return `${count} 字`;
  } else {
    return `${count.toLocaleString()} words`;
  }
}
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;文章发布日期&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;日期格式&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;✅ 支持 ISO 8601 格式：&lt;code&gt;2026-03-13&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;✅ 支持各种日期格式（Astro 自动解析）&lt;/li&gt;
&lt;li&gt;✅ 自动转换为显示格式&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;使用方法&lt;/strong&gt;：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;---
date: 2026-03-13  # ISO 格式
# 或
date: &quot;2026-03-13T12:00:00+08:00&quot;  # 带时间
# 或
date: &quot;2026/03/13&quot;  # 其他格式
---
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;显示格式&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;📄 文章详情页：&lt;code&gt;2026-03-13&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;📅 RSS：&lt;code&gt;Wed, 13 Mar 2026 00:00:00 GMT&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;草稿功能&lt;/h3&gt;
&lt;p&gt;草稿文章不会发布到生产环境：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;使用方法&lt;/strong&gt;：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;---
draft: true  # 标记为草稿
---

这是草稿内容...
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;草稿规则&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;🚫 草稿不会出现在列表页&lt;/li&gt;
&lt;li&gt;🚫 草稿不会出现在 RSS 订阅&lt;/li&gt;
&lt;li&gt;🚫 草稿不会被搜索索引&lt;/li&gt;
&lt;li&gt;✅ 开发环境可以预览草稿&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;文章分类&lt;/h3&gt;
&lt;p&gt;使用分类组织文章：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;---
categories: [&quot;技术&quot;, &quot;前端&quot;, &quot;React&quot;]
---
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;分类页面&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;按分类查看文章：&lt;code&gt;/categories/技术/&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;分类 RSS 订阅：&lt;code&gt;/categories/技术/feed.xml&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;分类与标签的区别&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;分类&lt;/strong&gt;：层级结构，更正式&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;标签&lt;/strong&gt;：扁平结构，更灵活&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;图片管理&lt;/h3&gt;
&lt;p&gt;Astro Shibui 模板提供了完整的图片处理功能，包括封面图、文章内图片、社交分享图片等。&lt;/p&gt;
&lt;h4&gt;图片目录结构&lt;/h4&gt;
&lt;p&gt;将图片放在 &lt;code&gt;public/images/&lt;/code&gt; 目录下：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;public/images/
├── cover.jpg           # 文章封面图
├── photo.jpg           # 文章内图片
├── icons/             # 网站图标
│   ├── favicon.ico
│   ├── apple-touch-icon.png
│   └── ...
├── generated/         # 自动生成的社交图片
│   └── social/        # 社交分享图片（自动生成）
└── terms/            # 标签封面图
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;封面图片&lt;/h4&gt;
&lt;p&gt;在文章 frontmatter 中设置封面图：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;---
title: &quot;文章标题&quot;
images: [&quot;/images/cover.jpg&quot;]  # 封面图列表
---
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;封面图会显示在：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;📱 首页文章卡片&lt;/li&gt;
&lt;li&gt;📄 文章详情页顶部（如果设置了）&lt;/li&gt;
&lt;li&gt;🌐 社交媒体分享卡片&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;标签封面&lt;/h4&gt;
&lt;p&gt;标签页面支持自定义封面图。将图片放在 &lt;code&gt;public/images/terms/&lt;/code&gt; 目录下：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;public/images/terms/
├── 技术.jpg
├── 哲学.png
└── 生活.webp
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;规则&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;文件名为标签名称 + 扩展名（如 &lt;code&gt;技术.jpg&lt;/code&gt;）&lt;/li&gt;
&lt;li&gt;支持格式：&lt;code&gt;.jpg&lt;/code&gt;、&lt;code&gt;.jpeg&lt;/code&gt;、&lt;code&gt;.png&lt;/code&gt;、&lt;code&gt;.webp&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;系统会自动查找并显示对应标签的封面图&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;文章内图片&lt;/h4&gt;
&lt;p&gt;在 Markdown 中直接引用：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;![图片描述](/images/photo.jpg)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;自动功能&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;✅ &lt;strong&gt;自动生成 Figure 标签&lt;/strong&gt;：&lt;code&gt;&amp;lt;img&amp;gt;&lt;/code&gt; 标签会自动包装在 &lt;code&gt;&amp;lt;figure&amp;gt;&lt;/code&gt; 中&lt;/li&gt;
&lt;li&gt;✅ &lt;strong&gt;自动生成 Figcaption&lt;/strong&gt;：使用 &lt;code&gt;alt&lt;/code&gt; 文本作为图片说明&lt;/li&gt;
&lt;li&gt;✅ &lt;strong&gt;智能处理&lt;/strong&gt;：图片在段落中单独存在时，会自动扩展为完整的 figure 结构&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;例如：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;![美丽的风景](/images/landscape.jpg &quot;夕阳下的山丘&quot;)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;会自动转换为：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;figure&amp;gt;
  &amp;lt;img src=&quot;/images/landscape.jpg&quot; alt=&quot;美丽的风景&quot; title=&quot;夕阳下的山丘&quot;&amp;gt;
  &amp;lt;figcaption&amp;gt;美丽的风景&amp;lt;/figcaption&amp;gt;
&amp;lt;/figure&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;社交分享图片&lt;/h4&gt;
&lt;p&gt;模板会自动生成社交媒体分享图片（1200x630）：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;自动处理流程&lt;/strong&gt;：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;📸 从 frontmatter 的 &lt;code&gt;images&lt;/code&gt; 字段读取封面图&lt;/li&gt;
&lt;li&gt;✂️ 使用 Sharp 自动裁剪和优化&lt;/li&gt;
&lt;li&gt;💾 保存到 &lt;code&gt;public/generated/social/&lt;/code&gt; 目录&lt;/li&gt;
&lt;li&gt;🌐 在 OG/Twitter Card 中使用&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;生成规则&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;格式：JPEG（quality: 82）&lt;/li&gt;
&lt;li&gt;尺寸：1200x630&lt;/li&gt;
&lt;li&gt;裁剪方式：cover + attention&lt;/li&gt;
&lt;li&gt;文件名：基于图片路径的 SHA1 哈希&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;支持类型&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;本地图片：&lt;code&gt;.jpg&lt;/code&gt;, &lt;code&gt;.jpeg&lt;/code&gt;, &lt;code&gt;.png&lt;/code&gt;, &lt;code&gt;.webp&lt;/code&gt;, &lt;code&gt;.avif&lt;/code&gt;, &lt;code&gt;.svg&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;外部 URL：Unsplash 等图片会自动添加裁剪参数&lt;/li&gt;
&lt;li&gt;自动缓存：未修改的图片不会重复生成&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;图片路径处理&lt;/h4&gt;
&lt;p&gt;模板提供了智能的图片路径处理：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;自动归一化&lt;/strong&gt;：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;// 自动添加开头的 &quot;/&quot;
images/photo.jpg → /images/photo.jpg
// 保持绝对路径不变
https://example.com/image.jpg → https://example.com/image.jpg
// 保持数据 URL 不变
data:image/png;base64,... → data:image/png;base64,...
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;从 Markdown 提取图片&lt;/strong&gt;：
如果未设置封面图，系统会自动从文章内容中提取第一张图片：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;这是一段文字...
![这是第一张图](/images/first.jpg)
这是另一段文字...
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;系统会自动识别并使用 &lt;code&gt;/images/first.jpg&lt;/code&gt; 作为封面图。&lt;/p&gt;
&lt;h4&gt;使用外部图片作为封面图&lt;/h4&gt;
&lt;p&gt;直接在 frontmatter 中使用外部 URL，无需下载图片到本地。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;---
title: &quot;我的文章&quot;
images: [&quot;https://images.unsplash.com/photo-1517694712202-14dd9538aa97?auto=format&amp;amp;fit=crop&amp;amp;w=1200&amp;amp;h=630&amp;amp;q=80&quot;]
---
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;支持的图库&lt;/strong&gt;：Unsplash、Pexels、Pixabay、Burst 等任何图片 URL。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;获取 Unsplash 直接图片链接&lt;/strong&gt;：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;在 Unsplash 网站找到喜欢的照片&lt;/li&gt;
&lt;li&gt;右键点击照片 → &quot;在新标签页中打开图片&quot;&lt;/li&gt;
&lt;li&gt;如果打开的是照片详情页，重复右键 → &quot;在新标签页中打开图片&quot;&lt;/li&gt;
&lt;li&gt;直到浏览器显示的是纯图片（无任何网页元素，类似本地图片）&lt;/li&gt;
&lt;li&gt;复制浏览器地址栏的 URL，格式类似：&lt;pre&gt;&lt;code&gt;https://images.unsplash.com/photo-xxxxx?auto=format&amp;amp;fit=crop&amp;amp;w=1200&amp;amp;q=80
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;封面图会显示在&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;📱 首页文章卡片&lt;/li&gt;
&lt;li&gt;📄 文章详情页顶部&lt;/li&gt;
&lt;li&gt;🌐 社交媒体分享卡片（自动裁剪为 1200x630）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;使用示例&lt;/strong&gt;：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;---
title: &quot;使用 Unsplash&quot;
images: [&quot;https://images.unsplash.com/photo-1517694712202-14dd9538aa97?auto=format&amp;amp;fit=crop&amp;amp;w=1200&amp;amp;h=630&amp;amp;q=80&quot;]
---

# 文章内容...
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;---
title: &quot;使用 Pexels&quot;
images: [&quot;https://images.pexels.com/photos/268533/pexels-photo-268533.jpeg?w=1200&amp;amp;h=630&quot;]
---

# 文章内容...
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;---
title: &quot;使用任何外部 URL&quot;
images: [&quot;https://example.com/image.jpg&quot;]
---

# 文章内容...
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;注意事项&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;外部图片依赖网络，图库服务中断时可能无法加载&lt;/li&gt;
&lt;li&gt;大部分免费图库可商用，使用时注意查看许可协议&lt;/li&gt;
&lt;li&gt;建议在文章末尾添加图片来源声明&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;图片最佳实践&lt;/h4&gt;
&lt;p&gt;&lt;strong&gt;图片优化&lt;/strong&gt;：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;压缩图片：使用 &lt;a href=&quot;https://tinypng.com/&quot;&gt;TinyPNG&lt;/a&gt; 或 &lt;a href=&quot;https://squoosh.app/&quot;&gt;Squoosh&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;使用现代格式：WebP &amp;gt; JPEG &amp;gt; PNG&lt;/li&gt;
&lt;li&gt;提供合适的 alt 文本：利于 SEO 和无障碍访问&lt;/li&gt;
&lt;li&gt;使用响应式图片：不同设备加载不同尺寸&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;示例&lt;/strong&gt;：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;---
title: &quot;我的旅行日记&quot;
description: &quot;记录我在欧洲的旅行经历&quot;
date: 2026-03-13
images: [
  &quot;/images/travel/cover.webp&quot;,  # 主封面图
  &quot;/images/travel/photo1.jpg&quot;,  # 其他图片
]
toc: true
---

# 我的欧洲之旅

![埃菲尔铁塔的日落](/images/travel/eiffel.webp &quot;巴黎的埃菲尔铁塔&quot;)

这是我旅行中最难忘的瞬间...
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;自动生成社交图片&lt;/h4&gt;
&lt;p&gt;在构建时会自动执行（&lt;code&gt;pnpm build&lt;/code&gt;）：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;# 预构建脚本会：
pnpm run prebuild  # → scripts/generate-social-images.ts
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;生成结果示例&lt;/strong&gt;：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;[social-image] local images: 5, generated: 2, skipped: 3
&lt;/code&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;local images&lt;/code&gt;: 找到的本地图片总数&lt;/li&gt;
&lt;li&gt;&lt;code&gt;generated&lt;/code&gt;: 新生成的社交图片数&lt;/li&gt;
&lt;li&gt;&lt;code&gt;skipped&lt;/code&gt;: 已存在且未修改的图片数&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;外部图片支持&lt;/h4&gt;
&lt;p&gt;支持使用 Unsplash 等外部图片服务：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;---
images: [
  &quot;https://images.unsplash.com/photo-1234567890&quot;
]
---
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;系统会自动添加裁剪参数：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;?auto=format&amp;amp;fit=crop&amp;amp;w=1200&amp;amp;h=630&amp;amp;q=80&amp;amp;fm=jpg
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;图片版本控制&lt;/h4&gt;
&lt;p&gt;社交分享图片支持版本控制，避免缓存问题：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;环境变量&lt;/strong&gt;：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;PUBLIC_SOCIAL_IMAGE_VERSION=auto  # 自动生成
# 或
PUBLIC_SOCIAL_IMAGE_VERSION=v1.0  # 手动指定版本
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;自动版本&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Vercel: &lt;code&gt;VERCEL_GIT_COMMIT_SHA&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Cloudflare Pages: &lt;code&gt;CF_PAGES_COMMIT_SHA&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;构建时间：&lt;code&gt;BUILD_TIME&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;常见问题&lt;/h4&gt;
&lt;p&gt;&lt;strong&gt;Q: 图片不显示？&lt;/strong&gt;
A: 检查以下几点：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;图片路径是否正确（必须以 &lt;code&gt;/&lt;/code&gt; 开头）&lt;/li&gt;
&lt;li&gt;图片文件是否存在于 &lt;code&gt;public/&lt;/code&gt; 目录&lt;/li&gt;
&lt;li&gt;图片文件名是否区分大小写&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;Q: 社交图片不生成？&lt;/strong&gt;
A: 确认：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;文章 frontmatter 中有 &lt;code&gt;images&lt;/code&gt; 字段&lt;/li&gt;
&lt;li&gt;图片路径指向本地图片（外部图片不会生成）&lt;/li&gt;
&lt;li&gt;图片格式受支持（见 4.3.5 节）&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;Q: 如何禁用自动 figure 生成？&lt;/strong&gt;
A: 在 &lt;code&gt;src/lib/rehype-image-figure.ts&lt;/code&gt; 中修改配置，或移除该插件。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Q: 如何自定义图片样式？&lt;/strong&gt;
A: 在 &lt;code&gt;src/styles/global.css&lt;/code&gt; 中添加：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;img {
  max-width: 100%;
  height: auto;
  border-radius: 8px;
  box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
}

figure {
  margin: 2rem 0;
}

figcaption {
  text-align: center;
  color: var(--color-text-muted);
  font-size: 0.9rem;
  margin-top: 0.5rem;
}
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;高级图片处理&lt;/h4&gt;
&lt;p&gt;&lt;strong&gt;使用 Astro Image 组件&lt;/strong&gt;（可选）：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;---
import { Image } from &apos;astro:assets&apos;;
---

&amp;lt;Image 
  src=&quot;/images/photo.jpg&quot; 
  alt=&quot;描述&quot;
  width={1200}
  height={630}
  format=&quot;webp&quot;
  quality={80}
/&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;创建图片集&lt;/strong&gt;：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;---
import { Image } from &apos;astro:assets&apos;;
const image = {
  src: &quot;/images/hero.jpg&quot;,
  alt: &quot;Hero Image&quot;,
};
const sizes = [400, 800, 1200];
---

&amp;lt;picture&amp;gt;
  {sizes.map(size =&amp;gt; (
    &amp;lt;source 
      media={`(max-width: ${size}px)`} 
      srcset={image.src.replace(&apos;.jpg&apos;, `-${size}.webp`)} 
    /&amp;gt;
  ))}
  &amp;lt;Image {...image} /&amp;gt;
&amp;lt;/picture&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;功能配置&lt;/h2&gt;
&lt;h3&gt;启用搜索功能&lt;/h3&gt;
&lt;p&gt;Astro Shibui 模板集成了 Algolia 全文搜索，支持实时搜索、中文输入法、键盘导航等功能。&lt;/p&gt;
&lt;h4&gt;功能特性&lt;/h4&gt;
&lt;p&gt;&lt;strong&gt;核心功能&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;🔍 实时搜索（防抖 300ms）&lt;/li&gt;
&lt;li&gt;🌏 中英文双语搜索&lt;/li&gt;
&lt;li&gt;⌨️ 中文输入法支持（IME 兼容）&lt;/li&gt;
&lt;li&gt;⬆️⬇️ 键盘上下键选择结果&lt;/li&gt;
&lt;li&gt;⏎ Enter 键打开结果&lt;/li&gt;
&lt;li&gt;⎹ Esc 键关闭搜索&lt;/li&gt;
&lt;li&gt;🔗 快捷键 &lt;code&gt;Cmd/Ctrl + K&lt;/code&gt; 快速聚焦&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;搜索结果&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;标题高亮显示&lt;/li&gt;
&lt;li&gt;内容片段预览&lt;/li&gt;
&lt;li&gt;搜索去重（基于 objectID）&lt;/li&gt;
&lt;li&gt;每次显示 10 条结果&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;搜索体验&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;📱 响应式设计&lt;/li&gt;
&lt;li&gt;🎯 搜索状态持久化（跨页面恢复）&lt;/li&gt;
&lt;li&gt;🔄 返回时自动恢复搜索状态&lt;/li&gt;
&lt;li&gt;🖱️ 点击外部关闭搜索&lt;/li&gt;
&lt;li&gt;📜 滚动锁定（搜索时锁定页面滚动）&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;步骤1：注册 Algolia&lt;/h4&gt;
&lt;ol&gt;
&lt;li&gt;访问 &lt;a href=&quot;https://www.algolia.com/&quot;&gt;Algolia&lt;/a&gt; 注册账号&lt;/li&gt;
&lt;li&gt;创建新的 Application&lt;/li&gt;
&lt;li&gt;创建 Index（索引）&lt;/li&gt;
&lt;li&gt;配置可搜索属性：
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;title&lt;/code&gt; - 文章标题&lt;/li&gt;
&lt;li&gt;&lt;code&gt;content&lt;/code&gt; - 文章内容&lt;/li&gt;
&lt;li&gt;&lt;code&gt;url&lt;/code&gt; - 文章链接&lt;/li&gt;
&lt;li&gt;&lt;code&gt;language&lt;/code&gt; - 语言标记&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;获取 API Keys&lt;/li&gt;
&lt;/ol&gt;
&lt;h4&gt;步骤2：配置环境变量&lt;/h4&gt;
&lt;p&gt;在 &lt;code&gt;.env&lt;/code&gt; 中添加：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;# Algolia 应用 ID
ALGOLIA_APP_ID=your_app_id

# Algolia 搜索密钥（前端使用）
ALGOLIA_SEARCH_KEY=your_search_key

# Algolia 索引名称
ALGOLIA_INDEX_NAME=blog_posts

# Algolia 管理员 API 密钥（仅用于上传索引）
ALGOLIA_ADMIN_KEY=your_admin_key
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;步骤3：生成并上传索引&lt;/h4&gt;
&lt;p&gt;&lt;strong&gt;生成搜索索引&lt;/strong&gt;：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;# 生成索引
pnpm build-index
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;这个脚本会：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;扫描所有博客文章（中英文）&lt;/li&gt;
&lt;li&gt;提取标题、内容、URL 等信息&lt;/li&gt;
&lt;li&gt;生成 Algolia 索引文件&lt;/li&gt;
&lt;li&gt;按语言标记文章（&lt;code&gt;language: &quot;zh-cn&quot;&lt;/code&gt; 或 &lt;code&gt;language: &quot;en&quot;&lt;/code&gt;）&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;上传索引到 Algolia&lt;/strong&gt;：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;# 上传到 Algolia
pnpm upload-index
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;一次性完成&lt;/strong&gt;：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;# 生成并上传
pnpm algolia
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;步骤4：搜索位置&lt;/h4&gt;
&lt;p&gt;搜索框会自动出现在：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;📄 博客归档页面（&lt;code&gt;/blog/&lt;/code&gt; 和 &lt;code&gt;/en/blog/&lt;/code&gt;）&lt;/li&gt;
&lt;li&gt;🔍 独立搜索页面（&lt;code&gt;/search/&lt;/code&gt; 和 &lt;code&gt;/en/search/&lt;/code&gt;）&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;高级配置&lt;/h4&gt;
&lt;p&gt;&lt;strong&gt;自定义搜索字段&lt;/strong&gt;：&lt;/p&gt;
&lt;p&gt;编辑 &lt;code&gt;scripts/build-search-index.ts&lt;/code&gt;：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;// 可搜索的字段
const searchableAttributes = [
  &apos;title&apos;,    // 标题
  &apos;content&apos;,  // 内容
];

// 返回的字段
const attributesToRetrieve = [
  &apos;title&apos;,
  &apos;url&apos;,
  &apos;language&apos;,
];
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;自定义搜索高亮&lt;/strong&gt;：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;attributesToHighlight: [
  &apos;title&apos;,
  &apos;content&apos;,
],
highlightPreTag: &apos;&amp;lt;em class=&quot;highlight&quot;&amp;gt;&apos;,
highlightPostTag: &apos;&amp;lt;/em&amp;gt;&apos;,
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;自定义内容片段&lt;/strong&gt;：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;attributesToSnippet: [
  &apos;content:30&apos;,  // 30 个字符的片段
],
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;搜索快捷键&lt;/h4&gt;
&lt;p&gt;&lt;strong&gt;快速聚焦搜索&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;快捷键：&lt;code&gt;Cmd/Ctrl + K&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;效果：
&lt;ul&gt;
&lt;li&gt;在搜索页：聚焦搜索框&lt;/li&gt;
&lt;li&gt;在其他页：跳转到搜索页并聚焦搜索框&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;键盘导航&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;↑&lt;/code&gt; 上移到上一条结果&lt;/li&gt;
&lt;li&gt;&lt;code&gt;↓&lt;/code&gt; 下移到下一条结果&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Enter&lt;/code&gt; 打开当前高亮的结果&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Esc&lt;/code&gt; 关闭搜索框&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;搜索状态持久化&lt;/h4&gt;
&lt;p&gt;&lt;strong&gt;自动保存&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;搜索关键词&lt;/li&gt;
&lt;li&gt;选中的结果索引&lt;/li&gt;
&lt;li&gt;搜索框的滚动位置&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;自动恢复&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;从搜索结果页返回时，自动恢复之前的搜索状态&lt;/li&gt;
&lt;li&gt;有效期：2 小时&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;搜索样式定制&lt;/h4&gt;
&lt;p&gt;编辑 &lt;code&gt;src/components/SearchWidget.module.css&lt;/code&gt;：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;/* 修改搜索框样式 */
.searchWidget {
  /* ... */
}

/* 修改搜索结果样式 */
.searchResults {
  /* ... */
}

/* 修改高亮样式 */
.highlight {
  background-color: yellow;
  font-weight: bold;
}
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;禁用搜索功能&lt;/h4&gt;
&lt;p&gt;如果不需要搜索功能，可以在 &lt;code&gt;src/lib/config.ts&lt;/code&gt; 中禁用：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;features: {
  search: {
    enabled: false,  // 禁用搜索
  },
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;或在 &lt;code&gt;.env&lt;/code&gt; 中不配置 Algolia 凭证。&lt;/p&gt;
&lt;h4&gt;常见问题&lt;/h4&gt;
&lt;p&gt;&lt;strong&gt;Q: 搜索不显示结果？&lt;/strong&gt;
A: 检查：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;已生成并上传索引（&lt;code&gt;pnpm algolia&lt;/code&gt;）&lt;/li&gt;
&lt;li&gt;Algolia 索引名称正确&lt;/li&gt;
&lt;li&gt;环境变量配置正确&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;Q: 中文搜索不工作？&lt;/strong&gt;
A: 确保：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;中文文章设置了 &lt;code&gt;language: &quot;zh-cn&quot;&lt;/code&gt; 标记&lt;/li&gt;
&lt;li&gt;Algolia 索引配置了中文分词&lt;/li&gt;
&lt;li&gt;浏览器编码正确（UTF-8）&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;Q: 搜索时输入法不兼容？&lt;/strong&gt;
A: 模板已支持 IME，如果仍有问题：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;检查浏览器是否支持&lt;/li&gt;
&lt;li&gt;清除浏览器缓存&lt;/li&gt;
&lt;li&gt;查看浏览器控制台错误&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;Q: 如何更新搜索索引？&lt;/strong&gt;
A: 重新生成并上传：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;pnpm algolia
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;搜索性能优化&lt;/h4&gt;
&lt;p&gt;&lt;strong&gt;索引优化&lt;/strong&gt;：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;限制返回结果数量：&lt;code&gt;hitsPerPage: 10&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;只搜索需要的字段&lt;/li&gt;
&lt;li&gt;使用 Algolia 的缓存功能&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;前端优化&lt;/strong&gt;：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;防抖搜索（300ms）&lt;/li&gt;
&lt;li&gt;使用 &lt;code&gt;lite&lt;/code&gt; 客户端（&lt;code&gt;algoliasearch/lite&lt;/code&gt;）&lt;/li&gt;
&lt;li&gt;延迟加载非关键组件&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;启用播客功能&lt;/h3&gt;
&lt;p&gt;播客功能为文章提供 AI 朗读功能，支持跨页面连续播放、进度保存等。&lt;/p&gt;
&lt;h4&gt;功能特性&lt;/h4&gt;
&lt;p&gt;&lt;strong&gt;核心功能&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;▶️ 播放/暂停控制&lt;/li&gt;
&lt;li&gt;⏪ 进度条拖动&lt;/li&gt;
&lt;li&gt;🔊 倍速播放（0.5x, 0.75x, 1x, 1.25x, 1.5x, 1.75x, 2x）&lt;/li&gt;
&lt;li&gt;📋 播放列表（按语言过滤）&lt;/li&gt;
&lt;li&gt;🔄 跨页面连续播放&lt;/li&gt;
&lt;li&gt;💾 播放进度自动保存（7 天）&lt;/li&gt;
&lt;li&gt;🎵 系统媒体控制（通知中心、锁屏）&lt;/li&gt;
&lt;li&gt;📱 响应式播放器（最小化/展开）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;播客封面图&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;自动使用文章封面图&lt;/li&gt;
&lt;li&gt;如果无封面图，使用默认封面&lt;/li&gt;
&lt;li&gt;支持中英文不同封面&lt;/li&gt;
&lt;li&gt;自动优化为系统媒体格式&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;步骤1：配置音频存储（Cloudflare R2）&lt;/h4&gt;
&lt;p&gt;推荐使用 Cloudflare R2 存储播客音频文件，特点是无带宽费用。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;创建 R2 存储桶&lt;/strong&gt;：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;登录 &lt;a href=&quot;https://dash.cloudflare.com/&quot;&gt;Cloudflare Dashboard&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;进入 R2 → 创建存储桶，名称如 &lt;code&gt;podcasts&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;添加自定义域名（如 &lt;code&gt;r2.yourdomain.com&lt;/code&gt;），需已完成域名接入 Cloudflare&lt;/li&gt;
&lt;li&gt;上传音频文件&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;音频文件命名规则&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;中文文章：文章 slug + &lt;code&gt;.m4a&lt;/code&gt;（如 &lt;code&gt;my-article.m4a&lt;/code&gt;）&lt;/li&gt;
&lt;li&gt;英文文章：文章 slug + &lt;code&gt;.en.m4a&lt;/code&gt;（如 &lt;code&gt;my-article.en.m4a&lt;/code&gt;）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;音频 URL 格式&lt;/strong&gt;：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;https://r2.yourdomain.com/my-article.m4a
https://r2.yourdomain.com/my-article.en.m4a
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;步骤2：启用功能开关&lt;/h4&gt;
&lt;p&gt;在 &lt;code&gt;src/lib/config.ts&lt;/code&gt; 中启用播客功能：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;features: {
  podcast: {
    enabled: true,
  },
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;在 &lt;code&gt;.env&lt;/code&gt; 中添加音频存储 URL：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;# 播客音频存储 URL
PUBLIC_PODCAST_AUDIO_BASE_URL=https://r2.yourdomain.com/
&lt;/code&gt;&lt;/pre&gt;
&lt;blockquote&gt;
&lt;p&gt;注意：&lt;code&gt;PUBLIC_PODCAST_AUDIO_BASE_URL&lt;/code&gt; 应以斜杠结尾。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h4&gt;步骤3：为文章添加播客&lt;/h4&gt;
&lt;p&gt;在文章 Frontmatter 中添加：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;---
title: &quot;文章标题&quot;
description: &quot;文章描述&quot;
images: [&quot;/images/cover.jpg&quot;]  # 封面图（用作播客封面）
podcast: true  # 启用播客
---
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;播客封面图规则&lt;/strong&gt;：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;优先使用 &lt;code&gt;images&lt;/code&gt; 字段的第一张图片&lt;/li&gt;
&lt;li&gt;如果未设置 &lt;code&gt;images&lt;/code&gt;，使用默认封面 &lt;code&gt;/podcast-default-cover.png&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;封面图会自动优化为系统媒体格式（Android 等设备）&lt;/li&gt;
&lt;/ol&gt;
&lt;h4&gt;步骤4：上传音频文件&lt;/h4&gt;
&lt;p&gt;&lt;strong&gt;音频文件命名规则&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;中文：&lt;code&gt;{文章slug}.m4a&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;英文：&lt;code&gt;{文章slug}.en.m4a&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;示例&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;文章：&lt;code&gt;src/content/blog-zh/my-post.md&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;音频：&lt;code&gt;https://your-cdn.com/podcasts/my-post.m4a&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;文章：&lt;code&gt;src/content/blog-en/my-post.md&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;音频：&lt;code&gt;https://your-cdn.com/podcasts/my-post.en.m4a&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;注意：英文文章只需放在 &lt;code&gt;blog-en&lt;/code&gt; 目录，文件名不需要加 &lt;code&gt;-en&lt;/code&gt; 后缀。与中文文章使用相同的文件名，它们会自动配对。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;音频要求&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;格式：M4A（AAC 编码）&lt;/li&gt;
&lt;li&gt;质量：建议 128kbps 或更高&lt;/li&gt;
&lt;li&gt;时长：建议不超过 2 小时&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;播放器使用&lt;/h4&gt;
&lt;p&gt;&lt;strong&gt;文章内播放按钮&lt;/strong&gt;：
播客启用的文章会在标题旁显示播放按钮，点击即可播放。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;全局播放器&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;固定在页面底部&lt;/li&gt;
&lt;li&gt;支持最小化（显示小播放器）&lt;/li&gt;
&lt;li&gt;支持展开（显示完整播放器和列表）&lt;/li&gt;
&lt;li&gt;使用 View Transitions 实现跨页面持续播放&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;播放列表&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;显示当前语言的所有播客文章&lt;/li&gt;
&lt;li&gt;按日期降序排列&lt;/li&gt;
&lt;li&gt;显示每集的播放进度&lt;/li&gt;
&lt;li&gt;点击直接跳转到文章&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;快捷键&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;播放/暂停：点击播放按钮&lt;/li&gt;
&lt;li&gt;倍速切换：点击倍速显示&lt;/li&gt;
&lt;li&gt;进度控制：拖动进度条&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;播放进度管理&lt;/h4&gt;
&lt;p&gt;&lt;strong&gt;自动保存&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;每集的播放进度自动保存到本地存储&lt;/li&gt;
&lt;li&gt;保存时长：7 天&lt;/li&gt;
&lt;li&gt;保存信息：当前时间、总时长&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;自动恢复&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;打开文章时自动恢复上次播放位置&lt;/li&gt;
&lt;li&gt;切换集时自动恢复该集的进度&lt;/li&gt;
&lt;li&gt;页面刷新后自动继续播放（如果之前在播放）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;系统媒体控制&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;🎧 通知中心播放/暂停&lt;/li&gt;
&lt;li&gt;🔒 锁屏界面控制&lt;/li&gt;
&lt;li&gt;⏭️ 前进/后退 15 秒&lt;/li&gt;
&lt;li&gt;📱 显示专辑、标题、封面&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;高级配置&lt;/h4&gt;
&lt;p&gt;&lt;strong&gt;自定义播放器样式&lt;/strong&gt;：&lt;/p&gt;
&lt;p&gt;编辑 &lt;code&gt;src/styles/podcast-player.css&lt;/code&gt;：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;/* 修改播放器主题色 */
:root {
  --podcast-primary: #4a90e2;
  --podcast-secondary: #f5f5f5;
  --podcast-text: #333;
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;禁用播客封面图&lt;/strong&gt;：&lt;/p&gt;
&lt;p&gt;如果不想使用文章封面图作为播客封面，可以在文章中不设置 &lt;code&gt;images&lt;/code&gt; 字段，系统会使用默认封面。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;播客 RSS 订阅&lt;/strong&gt;：&lt;/p&gt;
&lt;p&gt;虽然模板主要关注音频播放，但您可以手动创建 RSS 订阅：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&amp;gt;
&amp;lt;rss version=&quot;2.0&quot;&amp;gt;
  &amp;lt;channel&amp;gt;
    &amp;lt;title&amp;gt;您的播客&amp;lt;/title&amp;gt;
    &amp;lt;description&amp;gt;播客描述&amp;lt;/description&amp;gt;
    &amp;lt;item&amp;gt;
      &amp;lt;title&amp;gt;文章标题&amp;lt;/title&amp;gt;
      &amp;lt;description&amp;gt;文章描述&amp;lt;/description&amp;gt;
      &amp;lt;enclosure url=&quot;https://your-cdn.com/podcasts/slug.m4a&quot; 
                 type=&quot;audio/x-m4a&quot; 
                 length=&quot;0&quot; /&amp;gt;
    &amp;lt;/item&amp;gt;
  &amp;lt;/channel&amp;gt;
&amp;lt;/rss&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;常见问题&lt;/h4&gt;
&lt;p&gt;&lt;strong&gt;Q: 播客播放器不显示？&lt;/strong&gt;
A: 检查：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;在 &lt;code&gt;config.ts&lt;/code&gt; 中启用了播客功能：&lt;code&gt;features.podcast.enabled = true&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;至少有一篇文章设置了 &lt;code&gt;podcast: true&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;音频文件已上传并可访问&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;Q: 播放进度不保存？&lt;/strong&gt;
A: 确保：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;浏览器允许本地存储&lt;/li&gt;
&lt;li&gt;不在隐私浏览模式&lt;/li&gt;
&lt;li&gt;检查浏览器控制台是否有错误&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;Q: 跨页面播放中断？&lt;/strong&gt;
A: 确保在 &lt;code&gt;astro.config.mjs&lt;/code&gt; 中启用了 View Transitions：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;export default defineConfig({
  // ...
});
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Q: 如何生成音频文件？&lt;/strong&gt;
A: 可以使用：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;AI TTS 服务：如 &lt;a href=&quot;https://elevenlabs.io/&quot;&gt;ElevenLabs&lt;/a&gt;、&lt;a href=&quot;https://openai.com/&quot;&gt;OpenAI TTS&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;本地 TTS：如 &lt;a href=&quot;https://azure.microsoft.com/&quot;&gt;Azure TTS&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;人工录音&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;启用评论系统&lt;/h3&gt;
&lt;p&gt;Astro Shibui 模板支持 Giscus 评论系统，基于 GitHub Discussions，无需数据库。&lt;/p&gt;
&lt;h4&gt;功能特性&lt;/h4&gt;
&lt;p&gt;&lt;strong&gt;核心功能&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;💬 基于 GitHub Discussions 的评论&lt;/li&gt;
&lt;li&gt;🔐 无需数据库，使用 GitHub 仓库&lt;/li&gt;
&lt;li&gt;🎨 主题支持（亮色/暗色/自动）&lt;/li&gt;
&lt;li&gt;🌍 多语言支持&lt;/li&gt;
&lt;li&gt;📱 响应式设计&lt;/li&gt;
&lt;li&gt;📧 评论通知（通过 GitHub）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;支持的操作&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;✅ 发表评论&lt;/li&gt;
&lt;li&gt;✅ 回复评论&lt;/li&gt;
&lt;li&gt;✅ 点赞评论&lt;/li&gt;
&lt;li&gt;✅ Markdown 支持&lt;/li&gt;
&lt;li&gt;✅ 语法高亮&lt;/li&gt;
&lt;li&gt;✅ 表情符号&lt;/li&gt;
&lt;li&gt;✅ @ 提及其他用户&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;步骤1：准备 GitHub 仓库&lt;/h4&gt;
&lt;ol&gt;
&lt;li&gt;确保您的博客是公开的 GitHub 仓库&lt;/li&gt;
&lt;li&gt;在仓库设置中启用 &lt;strong&gt;Discussions&lt;/strong&gt;：
&lt;ul&gt;
&lt;li&gt;进入仓库 Settings → General → Features&lt;/li&gt;
&lt;li&gt;勾选 &quot;Discussions&quot;&lt;/li&gt;
&lt;li&gt;点击保存&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h4&gt;步骤2：配置 Giscus&lt;/h4&gt;
&lt;p&gt;访问 &lt;a href=&quot;https://giscus.app/&quot;&gt;Giscus App&lt;/a&gt; 配置：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;选择仓库&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;输入您的 GitHub 用户名和仓库名&lt;/li&gt;
&lt;li&gt;例如：&lt;code&gt;username/blog&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;选择页面映射&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;选择 &quot;Discussions&quot; 作为讨论存储位置&lt;/li&gt;
&lt;li&gt;选择 &quot;pathname&quot; 作为页面标识&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;选择主题&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;选择您喜欢的外观主题&lt;/li&gt;
&lt;li&gt;支持亮色、暗色、自动跟随系统&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;选择语言&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;选择评论系统语言&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;获取配置&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;复制生成的配置代码&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h4&gt;步骤3：配置环境变量&lt;/h4&gt;
&lt;p&gt;将 Giscus 配置添加到 &lt;code&gt;.env&lt;/code&gt;：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;# Giscus 仓库（格式：username/repo）
PUBLIC_GISCUS_REPO=&quot;username/blog&quot;

# Giscus 仓库 ID
PUBLIC_GISCUS_REPO_ID=&quot;R_kgDOG...&quot;

# Giscus 分类
PUBLIC_GISCUS_CATEGORY=&quot;Announcements&quot;

# Giscus 分类 ID
PUBLIC_GISCUS_CATEGORY_ID=&quot;DIC_kwDOG...&quot;

# Giscus 主题（可选，默认为 light）
PUBLIC_GISCUS_THEME=&quot;light&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;这些信息可以在 Giscus 配置页面找到。&lt;/p&gt;
&lt;h4&gt;步骤4：启用功能开关&lt;/h4&gt;
&lt;p&gt;在 &lt;code&gt;src/lib/config.ts&lt;/code&gt; 中启用：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;features: {
  comments: {
    enabled: true,  // 启用评论
    giscus: {
      repo: &quot;您的GitHub仓库&quot;,       // 格式：username/repo
      repoId: &quot;R_kgDOGxxxx&quot;,       // 仓库 ID（以 R_ 开头）
      category: &quot;Announcements&quot;,     // Discussion 分类
      categoryId: &quot;DIC_kwDOGxxxx&quot;,  // 分类 ID（以 DIC_ 开头）
    },
  },
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;获取配置方法：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;访问 &lt;a href=&quot;https://giscus.app/&quot;&gt;Giscus App&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;按照页面指引选择您的仓库和设置&lt;/li&gt;
&lt;li&gt;将获得的配置信息填入上面的 &lt;code&gt;giscus&lt;/code&gt; 配置中&lt;/li&gt;
&lt;/ol&gt;
&lt;h4&gt;评论显示位置&lt;/h4&gt;
&lt;p&gt;评论系统会自动显示在：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;📄 文章详情页（底部）&lt;/li&gt;
&lt;li&gt;只在中文和英文文章页显示&lt;/li&gt;
&lt;li&gt;不在首页、归档页等页面显示&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;自定义评论样式&lt;/h4&gt;
&lt;p&gt;编辑 &lt;code&gt;src/components/Giscus.astro&lt;/code&gt;：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;---
const { lang = &quot;zh-cn&quot; } = Astro.props;
---

&amp;lt;div class=&quot;giscus-container&quot;&amp;gt;
  &amp;lt;script src=&quot;https://giscus.app/client.js&quot;
          data-repo=&quot;username/blog&quot;
          data-repo-id=&quot;R_kgDOG...&quot;
          data-category=&quot;Announcements&quot;
          data-category-id=&quot;DIC_kwDOG...&quot;
          data-mapping=&quot;pathname&quot;
          data-strict=&quot;0&quot;
          data-reactions-enabled=&quot;1&quot;
          data-emit-metadata=&quot;0&quot;
          data-input-position=&quot;bottom&quot;
          data-theme=&quot;preferred_color_scheme&quot;
          data-lang={lang}
          crossorigin=&quot;anonymous&quot;
          async&amp;gt;
  &amp;lt;/script&amp;gt;
&amp;lt;/div&amp;gt;

&amp;lt;style&amp;gt;
  .giscus-container {
    max-width: var(--container-width);
    margin: 2rem auto;
  }
&amp;lt;/style&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;主题配置&lt;/h4&gt;
&lt;p&gt;&lt;strong&gt;支持的主题&lt;/strong&gt;：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;// 亮色
data-theme=&quot;light&quot;

// 暗色
data-theme=&quot;dark&quot;

// 自动跟随系统
data-theme=&quot;preferred_color_scheme&quot;

// 透明暗色
data-theme=&quot;transparent_dark&quot;

// 自定义主题
data-theme=&quot;https://example.com/custom-theme.css&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;自定义主题色&lt;/strong&gt;：&lt;/p&gt;
&lt;p&gt;在 Giscus 配置页面可以选择自定义主题色，或者直接修改：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;data-theme=&quot;cobalt&quot;
data-theme=&quot;dracula&quot;
data-theme=&quot;github-dark&quot;
data-theme=&quot;github-light&quot;
data-theme=&quot;high-contrast&quot;
data-theme=&quot;holi&quot;
data-theme=&quot;gruvbox-dim&quot;
data-theme=&quot;monokai&quot;
data-theme=&quot;nord&quot;
data-theme=&quot;owl&quot;
data-theme=&quot;pale-night&quot;
data-theme=&quot;solarized-dark&quot;
data-theme=&quot;tritan-dark&quot;
data-theme=&quot;wolverine&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;评论数据管理&lt;/h4&gt;
&lt;p&gt;&lt;strong&gt;数据存储位置&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;GitHub 仓库的 Discussions 区域&lt;/li&gt;
&lt;li&gt;所有评论公开可见&lt;/li&gt;
&lt;li&gt;可通过 GitHub API 访问&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;评论同步&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;评论数据实时同步&lt;/li&gt;
&lt;li&gt;支持跨设备访问&lt;/li&gt;
&lt;li&gt;支持搜索历史评论&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;评论通知&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;通过 GitHub 通知&lt;/li&gt;
&lt;li&gt;支持 Email 通知&lt;/li&gt;
&lt;li&gt;支持 GitHub Mobile 推送&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;禁用评论功能&lt;/h4&gt;
&lt;p&gt;如果不需要评论功能，可以在 &lt;code&gt;src/lib/config.ts&lt;/code&gt; 中禁用：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;features: {
  comments: {
    enabled: false,  # 禁用评论
  },
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;或在特定文章中禁用（通过不显示评论组件）。&lt;/p&gt;
&lt;h4&gt;替代评论系统&lt;/h4&gt;
&lt;p&gt;如果您想使用其他评论系统，可以：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Disqus&lt;/strong&gt;：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;div id=&quot;disqus_thread&quot;&amp;gt;&amp;lt;/div&amp;gt;
&amp;lt;script&amp;gt;
  var disqus_config = function () {
    this.page.url = PAGE_URL;
    this.page.identifier = PAGE_IDENTIFIER;
  };
  (function() {
    var d = document, s = d.createElement(&apos;script&apos;);
    s.src = &apos;https://your-site.disqus.com/embed.js&apos;;
    s.setAttribute(&apos;data-timestamp&apos;, +new Date());
    (d.head || d.body).appendChild(s);
  })();
&amp;lt;/script&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;其他系统&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://utteranc.es/&quot;&gt;Utterances&lt;/a&gt; - 基于 GitHub Issues&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://twikoo.js.org/&quot;&gt;Twikoo&lt;/a&gt; - 基于 Vercel Serverless&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://waline.js.org/&quot;&gt;Waline&lt;/a&gt; - 基于 Vercel Serverless&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;常见问题&lt;/h4&gt;
&lt;p&gt;&lt;strong&gt;Q: 评论不显示？&lt;/strong&gt;
A: 检查：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;code&gt;features.comments.enabled: true&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Giscus 环境变量配置正确&lt;/li&gt;
&lt;li&gt;GitHub 仓库的 Discussions 已启用&lt;/li&gt;
&lt;li&gt;页面是文章详情页&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;Q: 评论无法发布？&lt;/strong&gt;
A: 确保：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;用户已登录 GitHub&lt;/li&gt;
&lt;li&gt;用户对仓库有写入权限（公开仓库不需要）&lt;/li&gt;
&lt;li&gt;浏览器控制台没有错误&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;Q: 如何导入现有评论？&lt;/strong&gt;
A: Giscus 不支持导入，但：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;可以手动创建 Discussion&lt;/li&gt;
&lt;li&gt;或者使用 GitHub API 批量导入&lt;/li&gt;
&lt;li&gt;新评论会正常工作&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;Q: 如何删除不当评论？&lt;/strong&gt;
A: 直接在 GitHub Discussions 中删除或隐藏。&lt;/p&gt;
&lt;h2&gt;样式定制&lt;/h2&gt;
&lt;h3&gt;主题颜色&lt;/h3&gt;
&lt;p&gt;编辑 &lt;code&gt;src/styles/global.css&lt;/code&gt;，修改 CSS 变量：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;:root {
  /* 颜色定义 */
  --color-bg-primary: light-dark(#faf9f5, #262624);
  --color-bg-secondary: light-dark(hsl(48 25% 92.2% / 1), hsl(60 3% 8% / 1));
  --color-border: light-dark(#e5decf, #4a4037);
  --color-text-primary: light-dark(#000, #faf5f9);
  --color-text-muted: light-dark(#888, #a69885);
}
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;字体配置&lt;/h3&gt;
&lt;h4&gt;网络字体&lt;/h4&gt;
&lt;p&gt;编辑 &lt;code&gt;astro.config.mjs&lt;/code&gt;：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;fonts: [
  {
    name: &quot;Noto Serif SC&quot;,
    cssVariable: &quot;--font-noto-serif-sc&quot;,
    provider: fontProviders.google(),
    weights: [400, 700],
    subsets: [&quot;latin&quot;],
    fallbacks: [&quot;Georgia&quot;, &quot;serif&quot;],
  },
],
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;本地字体&lt;/h4&gt;
&lt;p&gt;在 &lt;code&gt;src/styles/global.css&lt;/code&gt; 中修改：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;:root {
  --font-family-primary: &quot;Your Font&quot;, serif;
}
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;布局调整&lt;/h3&gt;
&lt;h4&gt;侧边栏宽度&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;:root {
  --container-width: 56ch;  /* 内容宽度 */
  --sidebar-width: 300px;     /* 侧边栏宽度 */
}
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;响应式断点&lt;/h4&gt;
&lt;p&gt;模板的响应式布局：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;≤ 689px&lt;/strong&gt;：单栏布局（移动端），左侧菜单变成全屏导航&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;690px - 1500px&lt;/strong&gt;：二栏布局，首页和文章页都是左侧封面+导航，右侧内容&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&amp;gt; 1500px&lt;/strong&gt;：三栏布局，文章页右侧显示目录/小部件侧边栏&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;&lt;code&gt;/* 大屏幕 */
@media screen and (min-width: 1600px) {
  :root {
    --container-width: 60ch;
  }
}

/* 移动端 */
@media screen and (max-width: 689px) {
  .content-wrapper {
    max-width: 100%;
  }
}
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;高级定制&lt;/h2&gt;
&lt;h3&gt;自定义组件&lt;/h3&gt;
&lt;p&gt;在 &lt;code&gt;src/components/&lt;/code&gt; 创建新组件：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;---
interface Props {
  title: string;
}

const { title } = Astro.props;
---

&amp;lt;div class=&quot;my-component&quot;&amp;gt;
  &amp;lt;h2&amp;gt;{title}&amp;lt;/h2&amp;gt;
&amp;lt;/div&amp;gt;

&amp;lt;style&amp;gt;
  .my-component {
    padding: 1rem;
    background: var(--color-bg-secondary);
  }
&amp;lt;/style&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;添加新的页面类型&lt;/h3&gt;
&lt;p&gt;例如创建标签页面：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;---
// src/pages/tags/[tag].astro
import { getCollection } from &quot;astro:content&quot;;

export async function getStaticPaths() {
  const posts = await getCollection(&quot;blog-zh&quot;);
  const tags = [...new Set(posts.flatMap(post =&amp;gt; post.data.tags))];

  return tags.map(tag =&amp;gt; ({
    params: { tag },
  }));
}

const { tag } = Astro.params;
---

&amp;lt;CoverLayout title={`标签：${tag}`}&amp;gt;
  &amp;lt;h1&amp;gt;标签：{tag}&amp;lt;/h1&amp;gt;
  &amp;lt;!-- 标签文章列表 --&amp;gt;
&amp;lt;/CoverLayout&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;集成第三方服务&lt;/h3&gt;
&lt;h4&gt;添加 Umami Analytics&lt;/h4&gt;
&lt;p&gt;在 &lt;code&gt;.env&lt;/code&gt; 中配置：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;PUBLIC_UMAMI_WEBSITE_ID=your-website-id
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;在需要的页面添加脚本（参考文档）。&lt;/p&gt;
&lt;h4&gt;添加 Google Analytics&lt;/h4&gt;
&lt;p&gt;创建 &lt;code&gt;public/gtag.js&lt;/code&gt;，然后在布局中引入。&lt;/p&gt;
&lt;h3&gt;性能优化&lt;/h3&gt;
&lt;h4&gt;图片优化&lt;/h4&gt;
&lt;p&gt;Astro Shibui 模板已集成了完整的图片优化系统：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;自动优化功能&lt;/strong&gt;：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;社交图片自动生成&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;在构建时自动处理封面图&lt;/li&gt;
&lt;li&gt;裁剪为 1200x630 尺寸&lt;/li&gt;
&lt;li&gt;压缩为 JPEG 格式（质量 82）&lt;/li&gt;
&lt;li&gt;保存到 &lt;code&gt;public/generated/social/&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;图片路径归一化&lt;/strong&gt;：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;// 自动处理各种路径格式
/images/photo.jpg → /images/photo.jpg
images/photo.jpg → /images/photo.jpg
https://example.com/image.jpg → 保持不变
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Unsplash 自动优化&lt;/strong&gt;：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;// 自动添加优化参数
?auto=format&amp;amp;fit=crop&amp;amp;w=1200&amp;amp;h=630&amp;amp;q=80&amp;amp;fm=jpg
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;使用 Astro Image 组件&lt;/strong&gt;（可选）：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;---
import { Image } from &apos;astro:assets&apos;;
---

&amp;lt;Image 
  src=&quot;/images/photo.jpg&quot; 
  alt=&quot;描述&quot;
  width={1200}
  height={630}
  format=&quot;webp&quot;
  quality={80}
  loading=&quot;lazy&quot;
/&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;图片懒加载&lt;/strong&gt;：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;![描述](/images/photo.jpg)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;自动使用 &lt;code&gt;loading=&quot;lazy&quot;&lt;/code&gt; 延迟加载图片。&lt;/p&gt;
&lt;h4&gt;代码分割&lt;/h4&gt;
&lt;p&gt;使用 &lt;code&gt;client:idle&lt;/code&gt; 或 &lt;code&gt;client:visible&lt;/code&gt; 指令：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;!-- 延迟加载交互组件 --&amp;gt;
&amp;lt;HeavyComponent client:idle /&amp;gt;

&amp;lt;!-- 可见时加载交互组件 --&amp;gt;
&amp;lt;AnalyticsComponent client:visible /&amp;gt;

&amp;lt;!-- 总是加载交互组件 --&amp;gt;
&amp;lt;InteractiveComponent client:load /&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;播客播放器&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;使用 &lt;code&gt;transition:persist&lt;/code&gt; 保持播放器状态&lt;/li&gt;
&lt;li&gt;仅在有播客文章时加载&lt;/li&gt;
&lt;li&gt;延迟加载播放器组件&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;预加载关键资源&lt;/h4&gt;
&lt;p&gt;在布局的 &lt;code&gt;&amp;lt;head&amp;gt;&lt;/code&gt; 中添加：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;---
const preloadResources = [
  { href: &quot;/fonts/main.woff2&quot;, as: &quot;font&quot;, type: &quot;font/woff2&quot; },
  { href: &quot;/images/hero.webp&quot;, as: &quot;image&quot; },
];
---

&amp;lt;head&amp;gt;
  {preloadResources.map(resource =&amp;gt; (
    &amp;lt;link 
      rel=&quot;preload&quot; 
      href={resource.href} 
      as={resource.as} 
      type={resource.type}
    /&amp;gt;
  ))}
&amp;lt;/head&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;字体优化&lt;/h4&gt;
&lt;p&gt;&lt;strong&gt;使用 Google Fonts&lt;/strong&gt;（已配置）：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;// astro.config.mjs
fonts: [
  {
    name: &quot;Noto Serif SC&quot;,
    cssVariable: &quot;--font-noto-serif-sc&quot;,
    provider: fontProviders.google(),
    weights: [400, 700],
    subsets: [&quot;latin&quot;],
    fallbacks: [&quot;Georgia&quot;, &quot;serif&quot;],
  },
],
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;使用本地字体&lt;/strong&gt;（可选）：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;将字体文件放到 &lt;code&gt;public/fonts/&lt;/code&gt; 目录&lt;/li&gt;
&lt;li&gt;在 &lt;code&gt;src/styles/global.css&lt;/code&gt; 中添加：&lt;/li&gt;
&lt;/ol&gt;
&lt;pre&gt;&lt;code&gt;@font-face {
  font-family: &quot;Custom Font&quot;;
  src: url(&quot;/fonts/custom.woff2&quot;) format(&quot;woff2&quot;);
  font-weight: 400;
  font-style: normal;
  font-display: swap;
}

:root {
  --font-family-primary: &quot;Custom Font&quot;, serif;
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;字体显示策略&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;auto&lt;/code&gt;：浏览器默认&lt;/li&gt;
&lt;li&gt;&lt;code&gt;block&lt;/code&gt;：立即显示（可能导致闪烁）&lt;/li&gt;
&lt;li&gt;&lt;code&gt;swap&lt;/code&gt;：显示后备字体（推荐）&lt;/li&gt;
&lt;li&gt;&lt;code&gt;fallback&lt;/code&gt;：短时间显示后备&lt;/li&gt;
&lt;li&gt;&lt;code&gt;optional&lt;/code&gt;：可选加载&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;资源压缩&lt;/h4&gt;
&lt;p&gt;模板已自动启用：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;✅ HTML 压缩（&lt;code&gt;compressHTML: false&lt;/code&gt; 可禁用）&lt;/li&gt;
&lt;li&gt;✅ CSS 优化&lt;/li&gt;
&lt;li&gt;✅ JS 代码分割&lt;/li&gt;
&lt;li&gt;✅ 静态资源哈希（缓存破坏）&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;系统功能详解&lt;/h2&gt;
&lt;h3&gt;构建信息&lt;/h3&gt;
&lt;p&gt;模板会在页面底部显示构建信息：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;构建时间&lt;/strong&gt;：始终显示（本地开发显示本地时间，Vercel 部署显示 Vercel 构建时间）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Git 提交信息&lt;/strong&gt;：仅在 Vercel 部署时显示&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;示例&lt;/strong&gt;（Vercel 部署时）：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;构建于 2026/03/13 23:00:00
Fix typo in README
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;本地开发时&lt;/strong&gt;：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;构建于 2026/03/13 23:00:00
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;Vercel 环境变量说明&lt;/h4&gt;
&lt;p&gt;Vercel 会自动提供以下环境变量：&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;环境变量&lt;/th&gt;
&lt;th&gt;说明&lt;/th&gt;
&lt;th&gt;示例值&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;BUILD_TIME&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;构建时间&lt;/td&gt;
&lt;td&gt;&lt;code&gt;2026-03-13 23:00:00&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;VERCEL_GIT_COMMIT_SHA&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Git 提交 SHA&lt;/td&gt;
&lt;td&gt;&lt;code&gt;abc123def456...&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;VERCEL_GIT_COMMIT_MESSAGE&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Git 提交信息&lt;/td&gt;
&lt;td&gt;&lt;code&gt;Fix typo in README&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;VERCEL_GIT_PROVIDER&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Git 提供商&lt;/td&gt;
&lt;td&gt;&lt;code&gt;github&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;VERCEL_GIT_REPO_SLUG&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;仓库名称&lt;/td&gt;
&lt;td&gt;&lt;code&gt;username/repo&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;VERCEL_GIT_REPO_OWNER&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;仓库所有者&lt;/td&gt;
&lt;td&gt;&lt;code&gt;username&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;VERCEL_BRANCH&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;部署分支&lt;/td&gt;
&lt;td&gt;&lt;code&gt;main&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;VERCEL_DEPLOYMENT_ID&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;部署 ID&lt;/td&gt;
&lt;td&gt;&lt;code&gt;dpl_xxx&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;VERCEL_URL&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;部署 URL&lt;/td&gt;
&lt;td&gt;&lt;code&gt;my-blog.vercel.app&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;这些变量由 Vercel 自动注入，&lt;strong&gt;无需手动配置&lt;/strong&gt;。&lt;/p&gt;
&lt;h4&gt;自定义构建时间格式&lt;/h4&gt;
&lt;p&gt;如果需要修改构建时间的格式，编辑 &lt;code&gt;src/layouts/CoverLayout.astro&lt;/code&gt;：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;---
const buildTime = (process.env.BUILD_TIME as string | undefined) ?? 
  new Date().toLocaleString(&apos;zh-CN&apos;, {
    year: &apos;numeric&apos;,
    month: &apos;2-digit&apos;,
    day: &apos;2-digit&apos;,
    hour: &apos;2-digit&apos;,
    minute: &apos;2-digit&apos;,
    second: &apos;2-digit&apos;,
    hour12: false,
    timeZone: &apos;Asia/Shanghai&apos;  // 可改为其他时区
  }).replace(/\//g, &apos;/&apos;);
---
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;常用时区&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;&apos;Asia/Shanghai&apos;&lt;/code&gt; - 中国时区&lt;/li&gt;
&lt;li&gt;&lt;code&gt;&apos;UTC&apos;&lt;/code&gt; - 世界统一时间&lt;/li&gt;
&lt;li&gt;&lt;code&gt;&apos;America/New_York&apos;&lt;/code&gt; - 美国东部时间&lt;/li&gt;
&lt;li&gt;&lt;code&gt;&apos;Europe/London&apos;&lt;/code&gt; - 英国时间&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;本地开发时的构建信息&lt;/h4&gt;
&lt;p&gt;本地开发时，由于没有 Vercel 环境变量，会显示本地构建时间：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;构建于 2026-03-13 23:00:00
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;如果需要模拟 Vercel 的环境变量，可以在 &lt;code&gt;.env&lt;/code&gt; 中添加：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;# .env
BUILD_TIME=2026-03-13 23:00:00
VERCEL_GIT_COMMIT_SHA=test123
VERCEL_GIT_COMMIT_MESSAGE=Local test
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;禁用构建信息显示&lt;/h4&gt;
&lt;p&gt;如果不需要显示构建信息，可以注释掉相关代码：&lt;/p&gt;
&lt;p&gt;编辑 &lt;code&gt;src/layouts/CoverLayout.astro&lt;/code&gt;，找到并注释掉显示构建信息的部分：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;{/* 
&amp;lt;div class=&quot;build-info&quot;&amp;gt;
  {buildInfoText}
&amp;lt;/div&amp;gt;
*/}
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;社交图片版本控制&lt;/h4&gt;
&lt;p&gt;构建信息还用于社交图片的版本控制，避免缓存问题：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;PUBLIC_SOCIAL_IMAGE_VERSION=auto  # 自动使用 VERCEL_GIT_COMMIT_SHA
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;这会在每次部署时生成新的版本标识，确保社交图片及时更新。&lt;/p&gt;
&lt;h3&gt;PWA 配置&lt;/h3&gt;
&lt;p&gt;模板已包含完整的 PWA 配置：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;配置文件&lt;/strong&gt;：&lt;code&gt;public/site.webmanifest&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;功能支持&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;✅ 添加到主屏幕&lt;/li&gt;
&lt;li&gt;✅ 启动画面&lt;/li&gt;
&lt;li&gt;✅ 主题色&lt;/li&gt;
&lt;li&gt;✅ 应用图标&lt;/li&gt;
&lt;li&gt;✅ 离线功能（可选）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;配置示例&lt;/strong&gt;：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;{
  &quot;name&quot;: &quot;Your Site Name&quot;,
  &quot;short_name&quot;: &quot;Your Site&quot;,
  &quot;description&quot;: &quot;Your site description&quot;,
  &quot;start_url&quot;: &quot;/&quot;,
  &quot;display&quot;: &quot;standalone&quot;,
  &quot;background_color&quot;: &quot;#faf9f5&quot;,
  &quot;theme_color&quot;: &quot;#faf9f5&quot;,
  &quot;orientation&quot;: &quot;portrait-primary&quot;,
  &quot;icons&quot;: [
    {
      &quot;src&quot;: &quot;/images/icons/favicon-16x16.png&quot;,
      &quot;sizes&quot;: &quot;16x16&quot;,
      &quot;type&quot;: &quot;image/png&quot;
    },
    {
      &quot;src&quot;: &quot;/images/icons/apple-touch-icon.png&quot;,
      &quot;sizes&quot;: &quot;180x180&quot;,
      &quot;type&quot;: &quot;image/png&quot;,
      &quot;purpose&quot;: &quot;apple touch icon&quot;
    }
  ]
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;自定义 PWA&lt;/strong&gt;：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;修改 manifest&lt;/strong&gt;：编辑 &lt;code&gt;public/site.webmanifest&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;添加 Service Worker&lt;/strong&gt;：创建 &lt;code&gt;public/sw.js&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;注册 Service Worker&lt;/strong&gt;：在 &lt;code&gt;src/layouts/BaseLayout.astro&lt;/code&gt; 中添加&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;页面类型&lt;/h3&gt;
&lt;p&gt;模板支持多种页面类型，每种类型有不同的布局和行为：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;页面类型&lt;/strong&gt;：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;首页&lt;/strong&gt;（&lt;code&gt;home&lt;/code&gt;）：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;显示文章瀑布流&lt;/li&gt;
&lt;li&gt;分页加载&lt;/li&gt;
&lt;li&gt;首页封面图（最新文章）&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;文章详情页&lt;/strong&gt;（&lt;code&gt;article&lt;/code&gt;）：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;完整文章内容&lt;/li&gt;
&lt;li&gt;目录、相关文章&lt;/li&gt;
&lt;li&gt;播客播放按钮（如果有）&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;归档页&lt;/strong&gt;（&lt;code&gt;section&lt;/code&gt;）：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;文章列表（按年份分组）&lt;/li&gt;
&lt;li&gt;搜索功能&lt;/li&gt;
&lt;li&gt;写作统计&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;标签页&lt;/strong&gt;（&lt;code&gt;term&lt;/code&gt;）：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;特定标签的文章列表&lt;/li&gt;
&lt;li&gt;标签统计&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;分类页&lt;/strong&gt;（&lt;code&gt;taxonomy&lt;/code&gt;）：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;特定分类的文章列表&lt;/li&gt;
&lt;li&gt;分类统计&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;搜索页&lt;/strong&gt;（&lt;code&gt;page&lt;/code&gt;）：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;独立搜索界面&lt;/li&gt;
&lt;li&gt;实时搜索结果&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;关于页&lt;/strong&gt;（&lt;code&gt;page&lt;/code&gt;）：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;自定义内容&lt;/li&gt;
&lt;li&gt;订阅链接&lt;/li&gt;
&lt;li&gt;写作统计（自动从文章集合计算）&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;关于页写作统计&lt;/strong&gt;：&lt;/p&gt;
&lt;p&gt;模板的关于页已集成写作统计功能，会自动从您的文章集合计算统计数据：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;&amp;lt;Stats /&amp;gt;&lt;/code&gt;：显示文章总数和总字数&lt;/li&gt;
&lt;li&gt;&lt;code&gt;&amp;lt;WritingChart /&amp;gt;&lt;/code&gt;：显示过去12个月的写作图表&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这两个组件会动态计算，无需手动配置。每次构建时会自动更新统计数据。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;配置方式&lt;/strong&gt;：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;---
import CoverLayout from &quot;../layouts/CoverLayout.astro&quot;;

const pageKind = &quot;article&quot;;  // 页面类型
---

&amp;lt;CoverLayout 
  title=&quot;文章标题&quot;
  pageKind={pageKind}
  toc={true}
&amp;gt;
  &amp;lt;article&amp;gt;
    文章内容...
  &amp;lt;/article&amp;gt;
&amp;lt;/CoverLayout&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;页面类型的作用&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;影响布局显示&lt;/li&gt;
&lt;li&gt;影响搜索索引&lt;/li&gt;
&lt;li&gt;影响广告显示（如果添加）&lt;/li&gt;
&lt;li&gt;影响分析追踪&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;首页特殊功能&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;首页点击返回&lt;/strong&gt;：&lt;/p&gt;
&lt;p&gt;点击站点名称可以返回上次的展开和滚动位置：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;第一次点击：返回上次位置&lt;/li&gt;
&lt;li&gt;第二次点击：重置分页到第一页&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;首页封面图&lt;/strong&gt;：&lt;/p&gt;
&lt;p&gt;使用最新文章的封面图作为首页封面：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;// src/pages/[...page].astro
let featuredImage: string | undefined = &quot;/images/terms/about.webp&quot;;
let featuredImageSource: &quot;images&quot; | &quot;other&quot; = &quot;other&quot;;

if (page.data.length &amp;gt; 0) {
  const latestPost = page.data[0];
  if (latestPost.data.images &amp;amp;&amp;amp; latestPost.data.images.length &amp;gt; 0) {
    featuredImage = normalizeImagePath(latestPost.data.images[0]);
    featuredImageSource = &quot;images&quot;;
  }
}
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;打印优化&lt;/h3&gt;
&lt;p&gt;模板已优化打印体验：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;自动优化&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;✅ 打印前移除文章内链接&lt;/li&gt;
&lt;li&gt;✅ 打印追踪（可选）&lt;/li&gt;
&lt;li&gt;✅ 打印样式优化&lt;/li&gt;
&lt;li&gt;✅ 自动记录打印事件（分析）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;打印样式&lt;/strong&gt;：&lt;/p&gt;
&lt;p&gt;模板在 &lt;code&gt;src/layouts/BaseLayout.astro&lt;/code&gt; 中已包含打印优化脚本。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;自定义打印样式&lt;/strong&gt;：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;@media print {
  /* 隐藏不需要打印的元素 */
  .menu-toggle,
  .sidebar-right,
  .search-widget,
  .podcast-player,
  .comments {
    display: none !important;
  }

  /* 优化文章显示 */
  .gh-content {
    max-width: 100%;
    font-size: 12pt;
    line-height: 1.5;
  }

  /* 图片优化 */
  img {
    max-width: 100%;
    page-break-inside: avoid;
  }

  /* 避免孤立的标题 */
  h1, h2, h3, h4, h5, h6 {
    page-break-after: avoid;
  }
}
&lt;/code&gt;&lt;/pre&gt;
</content:encoded><enclosure url="https://images.unsplash.com/photo-1770983438675-b188d9276ba0?auto=format&amp;fit=crop&amp;w=1200&amp;h=630&amp;q=80&amp;fm=jpg&amp;ixlib=rb-4.1.0&amp;ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&amp;v=989471eb6bd3" type="image/jpeg" length="0"/></item><item><title>欢迎来到 Astro Shibui</title><link>https://yourdomain.com/blog/welcome/</link><guid isPermaLink="true">https://yourdomain.com/blog/welcome/</guid><description>开始使用这个优雅的 Astro 博客模板</description><pubDate>Fri, 13 Mar 2026 00:00:00 GMT</pubDate><content:encoded>&lt;h1&gt;欢迎来到 Astro Shibui 🎉&lt;/h1&gt;
&lt;p&gt;这是一个优雅、极简的 Astro 博客模板，支持多语言、播客、搜索等功能。&lt;/p&gt;
&lt;h2&gt;✨ 核心特性&lt;/h2&gt;
&lt;h3&gt;📝 内容管理&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;文章系统&lt;/strong&gt;：Markdown 格式，支持 frontmatter&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;多语言&lt;/strong&gt;：中英双语，自动切换&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;分类标签&lt;/strong&gt;：灵活的内容组织&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;目录生成&lt;/strong&gt;：自动生成文章目录&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;相关推荐&lt;/strong&gt;：智能推荐相关文章&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;草稿功能&lt;/strong&gt;：草稿不发布到生产&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;🖼️ 图片处理&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;封面图&lt;/strong&gt;：支持文章封面图&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;社交图片&lt;/strong&gt;：自动生成 1200x630 社交卡片&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;智能路径&lt;/strong&gt;：自动归一化图片路径&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;自动 Figure&lt;/strong&gt;：自动生成图片说明&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;图片优化&lt;/strong&gt;：自动裁剪和压缩&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;🔍 搜索功能&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;全文搜索&lt;/strong&gt;：集成 Algolia 搜索&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;实时搜索&lt;/strong&gt;：防抖优化&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;中文支持&lt;/strong&gt;：IME 兼容&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;键盘导航&lt;/strong&gt;：快捷键支持&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;状态持久化&lt;/strong&gt;：跨页面恢复搜索状态&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;🎙️ 播客功能（可选）&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;AI 朗读&lt;/strong&gt;：为文章生成音频&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;播放器&lt;/strong&gt;：完整的播放控制&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;进度保存&lt;/strong&gt;：自动保存播放进度&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;跨页播放&lt;/strong&gt;：View Transitions 支持&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;系统控制&lt;/strong&gt;：通知中心、锁屏&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;💬 评论系统（可选）&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Giscus&lt;/strong&gt;：基于 GitHub Discussions&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;无数据库&lt;/strong&gt;：直接使用 GitHub&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;多主题&lt;/strong&gt;：支持亮色/暗色&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Markdown&lt;/strong&gt;：完整的 Markdown 支持&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;🎨 界面设计&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;极简风格&lt;/strong&gt;：专注于阅读体验&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;响应式&lt;/strong&gt;：完美适配移动端&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;深色模式&lt;/strong&gt;：自动跟随系统&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;极快加载&lt;/strong&gt;：静态站点生成&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;隐私优先&lt;/strong&gt;：零分析工具&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;🚀 快速开始&lt;/h2&gt;
&lt;h3&gt;配置站点信息&lt;/h3&gt;
&lt;p&gt;编辑 &lt;code&gt;src/lib/config.ts&lt;/code&gt;：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;export const siteConfig = {
  name: &quot;我的博客&quot;,
  description: &quot;记录我的学习和思考&quot;,
  author: &quot;您的名字&quot;,
  url: &quot;https://myblog.com&quot;,
};
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;配置环境变量&lt;/h3&gt;
&lt;p&gt;复制 &lt;code&gt;.env.example&lt;/code&gt; 到 &lt;code&gt;.env&lt;/code&gt;：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;cp .env.example .env
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;编辑 &lt;code&gt;.env&lt;/code&gt;，设置基本信息：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;PUBLIC_SITE_URL=https://myblog.com
PUBLIC_SITE_NAME=&quot;我的博客&quot;
PUBLIC_SITE_DESCRIPTION=&quot;我的个人博客&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;创建第一篇文章&lt;/h3&gt;
&lt;p&gt;在 &lt;code&gt;src/content/blog-zh/&lt;/code&gt; 创建 &lt;code&gt;hello-world.md&lt;/code&gt;：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;---
title: &quot;您好，世界&quot;
description: &quot;这是我的第一篇文章&quot;
date: 2026-03-13
tags: [&quot;随笔&quot;]
toc: true
images: [&quot;/images/cover.jpg&quot;]
---

# 您好，世界！

欢迎来到我的博客。这是我的第一篇文章，开始我的写作之旅。

## 开始写作

在这里写下您的想法...
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;启动开发服务器&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;pnpm dev
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;访问 http://localhost:4321 查看您的博客！&lt;/p&gt;
&lt;h2&gt;📚 深入学习&lt;/h2&gt;
&lt;h3&gt;完全使用指南&lt;/h3&gt;
&lt;p&gt;查看详细的完全使用指南：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;中文版&lt;/strong&gt;：&lt;a href=&quot;/blog/complete-guide&quot;&gt;Astro Shibui 模板完全指南&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;英文版&lt;/strong&gt;：&lt;a href=&quot;/en/blog/complete-guide&quot;&gt;Complete Guide to Astro Shibui Template&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;部署指南&lt;/h3&gt;
&lt;p&gt;查看部署文档了解如何部署到生产环境：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;部署指南&lt;/strong&gt;：&lt;a href=&quot;/DEPLOYMENT.md&quot;&gt;部署指南&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;功能配置&lt;/h3&gt;
&lt;p&gt;根据需要配置各种功能：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;搜索功能&lt;/strong&gt;：配置 Algolia 搜索&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;播客功能&lt;/strong&gt;：配置音频服务器&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;评论功能&lt;/strong&gt;：配置 Giscus 评论&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;自定义样式&lt;/strong&gt;：修改 CSS 变量&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;🎯 下一步&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;创建内容&lt;/strong&gt;：开始写您的第一篇文章&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;定制样式&lt;/strong&gt;：调整颜色、字体、布局&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;启用功能&lt;/strong&gt;：配置搜索、播客等高级功能&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;部署上线&lt;/strong&gt;：将博客发布到互联网&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;持续优化&lt;/strong&gt;：根据数据和反馈改进&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;💡 提示&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;删除此示例文章：删除 &lt;code&gt;src/content/blog-zh/welcome.md&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;查看更多示例：参考 &lt;code&gt;complete-guide.md&lt;/code&gt; 中的示例&lt;/li&gt;
&lt;li&gt;使用 Git 管理：定期提交代码&lt;/li&gt;
&lt;li&gt;备份重要内容：定期备份 &lt;code&gt;src/content/&lt;/code&gt; 目录&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;strong&gt;祝您使用愉快，创建出精美的博客！&lt;/strong&gt; 🎉&lt;/p&gt;
</content:encoded></item></channel></rss>