基于 Firefly 的个人博客魔改版
V2.3.1
Firefly-Mod 是从 Firefly 分支出的个性化魔改版本,已脱离原分支独立演进。
基于 Firefly 魔改新增以下特性:
- 重构整体UI,黑白简约风格,组件可交互为主,删除背景图片。
- 首页更偏向于展示个人能力爱好,不展示最新文章,删除侧边栏。
- 新增 AI 语义搜索(RAG)功能,基于 Cloudflare Vectorize 向量索引。
- 魔改留言板功能,支持用户评论。
- 新增日历页面,展示文章发布时间。
- 关于页面,注重交互。
- 删除动漫这些影响构建速度的功能。
- 文章分类更注重视觉排版分类。
| 用途 | 命令 |
|---|---|
| 安装依赖 | pnpm install |
| 开发服务器 | pnpm dev |
| 构建 | pnpm build |
| 预览构建产物 | pnpm preview |
| Astro 类型检查 | pnpm check |
| TypeScript 类型检查 | pnpm type-check |
| 格式化代码 | pnpm format |
| Lint + 自动修复 | pnpm lint |
| 新建博客文章 | pnpm new-post <filename> |
| 重新生成图标 | pnpm icons |
| 构建/更新 AI 向量索引 | pnpm build-index |
# 配置好.env文件后,执行以下命令:
# 登录 Cloudflare(需要先删掉CLOUDFLARE_API_TOKEN环境变量)
npx wrangler login
# 构建/更新 AI 搜索向量索引(增量)(登录后需要配置CLOUDFLARE_API_TOKEN环境变量)
pnpm build-index
# 强制全量重建 AI 搜索向量索引(登录后需要配置CLOUDFLARE_API_TOKEN环境变量)
pnpm build-index -- --force所有配置集中在 src/config/,通过 @/config(barrel 文件 index.ts 统一导出)导入。
| 配置文件 | 职责 |
|---|---|
siteConfig.ts |
核心配置:语言、主题色、页面开关、文章列表布局、分页、分析、图片优化、字体 |
sidebarConfig.ts |
侧边栏布局与组件配置 |
navBarConfig.ts |
导航栏链接配置(根据页面开关动态生成) |
homeConfig.ts |
首页与用户资料配置:头像、昵称、签名、社交链接、首页图片、技能图标、作品百叶窗 |
commentConfig.ts |
评论系统配置(Waline/Twikoo/Giscus/Artalk/Disqus) |
musicConfig.ts |
音乐播放器配置(Meting API / 本地音乐) |
pioConfig.ts |
Live2D / Spine 看板娘配置 |
fontConfig.ts |
自定义字体配置 |
galleryConfig.ts |
相册配置 |
friendsConfig.ts |
友链配置 |
sponsorConfig.ts |
赞助页配置 |
calendarConfig.ts |
日历页面配置 |
announcementConfig.ts |
公告栏配置 |
licenseConfig.ts |
文章许可证配置 |
footerConfig.ts |
页脚配置 |
coverImageConfig.ts |
封面图配置 |
expressiveCodeConfig.ts |
代码块渲染配置 |
plantumlConfig.ts |
PlantUML 配置 |
collectionsApiConfig.ts |
收藏 API 配置 |
aiSearchConfig.ts |
AI 搜索配置(模型、Embedding、向量索引) |
| 工作流 | 触发条件 | 说明 |
|---|---|---|
ci.yml |
push/PR 到 master | Astro 类型检查 + Biome Lint 代码质量检查 |
cron-check.yml |
每日 08:00 + 手动触发 | 友链可达性巡检,使用 Playwright 逐个访问,异常自动创建 Issue 报告 |
friend-link-checker.yml |
Issue 创建/评论 | 通过 Issue 自动处理友链申请,提取信息并提交 PR |
claude.yml |
Issue/PR 评论、Issue 创建、PR Review | 提及 @claude 时触发 AI 响应 |
claude-review.yml |
PR 创建/更新 | 自动进行 AI 代码审查 |
注意:建议在 GitHub 仓库设置中关闭邮箱订阅,避免 CI 工作流频繁触发邮件通知。
粗略编写了一下部署清单,包括以下内容: 如果有缺失的,请在 Issue 中报告。
| 检查项 | 说明 |
|---|---|
| 托管平台 | 支持任何静态托管:Cloudflare Pages、Vercel、Netlify、GitHub Pages、Nginx 等 |
| 评论服务 | 若启用评论,需自行部署对应后端(Waline / Twikoo / Artalk 等) |
| KV 存储 | 若启用留言板,需配置 KV 存储空间 |
| 统计服务 | 站点访问统计通过 Umami 获取(siteConfig.ts 中配置 analytics.umamiAnalytics,Worker 中配置 UMAMI_TOKEN Secret) |
| AI 搜索 | 需 Cloudflare Vectorize 索引;构建索引需 CLOUDFLARE_API_TOKEN + CLOUDFLARE_ACCOUNT_ID;LLM/Embedding 默认走 Workers AI,也可在 aiSearchConfig.ts 中配置第三方 API(如魔搭社区)并设置 AI_API_KEY |
| 图床(可选) | 项目没引用图床,无需配置,但是我建议配置一个图床,用于存储文章中的图片 |
因为是魔改Firefly,所以部署方案与 Firefly 相同。
其他与 Firefly 相同,除了以下几点:
配置 KV 存储(用于留言板 Worker 状态数据):
- 登录 Cloudflare Dashboard → KV → 创建命名空间
- 使用
wrangler kv namespace create "VISITOR_KV"创建,并在wrangler.toml中同步id
创建 AI 搜索向量索引:
- 索引名称需与
src/config/aiSearchConfig.ts中的indexName一致(默认blog-ai-search) - 使用 wrangler 创建:
wrangler vectorize create --name blog-ai-search --dimensions 1024 --metric cosine
Live2D 模型作者为 B 站用户 木果阿木果,使用需遵守以下规则:
- 使用前必须征得作者同意
- 必须标明作者信息和来源地址
- 模型设计版权归属库洛
- 模型可用于鸣潮相关视频和直播(需标注来源)
- 禁止商用盈利,禁止二次上传转载引流
最初 Fork 自 saicaca/fuwari。
版权声明:
根据 MIT 开源协议,可自由使用、修改、分发代码,但需保留上述版权声明。
