一个基于现代 Web 技术构建的高性能边缘优先博客平台
🌐 在线演示 • 📖 English Documentation • 📚 官方文档 🦞 OpenClaw 用户: 直接告诉你的 Agent: "Read AGENT_GUIDE.md and deploy this for me."
- 玻璃态拟物化 UI - 磨砂玻璃效果与背景模糊
- 流畅动画 - 平滑的过渡效果和微交互
- Safari 风格移动导航 - 滚动时收缩的导航栏,带全息文字效果
- MDX 驱动 - 使用嵌入交互式组件编写文档
- 双语结构 - 独立的
/docs和/zh/docs路由,结构与主应用一致 - 动效架构 - 支持 View Transition API,实现指南之间的无缝导航
- 多语言支持 - 无缝的英语与简体中文体验
- 动态路由 - 智能路由逻辑实现流畅语言切换
- 本地化 RSS - 每种语言独立的订阅源
- 双语索引 -
sitemap.xml完整覆盖中英文内容树 - Hreflang 支持 - 精准的语言目标定位 (
en-SG,zh),助力搜索引擎识别 - Meta 增强 - 动态
og:locale、关键词支持及丰富的社交分享卡片
- OAuth 集成 - 通过 Arctic + Oslo 支持 GitHub、Google、Discord
- 智能会话 - 支持设备感知的会话追踪与自动去重
- 零信任管理员 - 受 Cloudflare Access 保护的管理路由
- 富文本 Markdown 编辑器 - 完整的 CMS,支持实时预览和媒体上传
- 文件上传发布 - 直接上传
.md或.rtf文件快速发布 - 自动生成 Slug - 从标题自动生成 SEO 友好的 URL
- 定时发布 - 为未来的文章设置发布日期
- 音乐管理器 - 专用控制台管理音乐/播放列表数据
- 边缘优先架构 - 完全在 Cloudflare Workers/Pages 上运行
- 智能缓存 - 基于 KV 的 API 响应和主页数据缓存
- 预取加载 - 鼠标悬停即加载,实现即时页面导航
- PWA 支持 - 可在移动端和桌面端作为原生应用安装
- 智能路由 - Cloudflare Smart Placement 优化延迟
- Cloudflare Images - 零延迟、自动优化的 WebP/AVIF 图像分发(通过
<CloudflareImage />组件)。可选功能,需要单独购买。 - Cloudflare Stream - 自适应码率 (HLS) 视频流媒体播放器(通过
<CloudflareVideo />组件)。可选功能,需要单独购买。 - 编辑器原生直传 - 在 Markdown 编辑器中极其安全地直传图片和视频并挂载至边缘节点,不占用数据库与代码仓库空间。
- 语义搜索 - 使用 Cloudflare Vectorize + Workers AI 实现智能内容发现
- 多语言支持 - 跨英文和中文内容搜索
- 即时结果 - 快速的边缘向量搜索
- 实时浏览量统计 - 采用混合 D1+KV 架构,利用
UPDATE ... RETURNING实现零延迟统计。 - 边缘节点分析仪表板 - 实时监控 100+ 全球 Cloudflare 节点 的性能指标。
- 🌍 全球覆盖
- 北美: 35+ 节点 (SJC, LAX, SEA...)
- 欧洲: 35+ 节点 (LHR, FRA, CDG...)
- 亚太: 20+ 节点 (NRT, SIN, HKG...)
- ⚡ 性能监控 - 自动检测路由异常(例如:新加坡用户被错误路由至美国节点)。
- 📋 可视化数据 - 带国旗标识的交互式列表,显示会话数、平均 RTT 及性能评级。
- 🟢 实时指标 - 连接质量分级:
- 极佳 (Excellent): < 50ms
- 良好 (Good): < 150ms
- 较差 (Poor): > 150ms
- 🌍 全球覆盖
- 增强型会话追踪 - 完整元数据记录:
- 网络: ISP, ASN, HTTP 协议 (h2/h3), TCP RTT
- 安全: TLS 版本 (1.2/1.3), 信任评分
- 位置: 城市, 国家, 经纬度
- 体验优化指标 - 记录基础客户端能力(网络类型、屏幕尺寸)以优化内容分发。
- 隐私说明: 所有分析数据仅私有部署,绝不与第三方共享。
- 统一弹窗 UX - 背景点击关闭、300ms 淡入淡出动画、统一的红色悬停关闭按钮。
Gins Blog 不仅仅是一个静态网站,它是一个符合 Model Context Protocol (MCP) 标准的智能体接口。
您的博客内置了以 Edge-First 为核心的 MCP Server,这意味着您可以直接使用 Claude Desktop, OpenClaw, 或 Cursor 连接到您的博客,把聊天窗口变成您的 "无头 CMS"。
- 📝 自然语言写作 - "帮我根据最近的科技新闻写一篇草稿,并保存到数据库。"
- 🕵️ 智能数据透视 - "查看过去24小时的流量,并分析哪篇文章最受欢迎。"
- 🛡️ 自动化运维 - "扫描最新的评论,告诉我有没有需要处理的垃圾信息。"
✅ 零配置对接:根目录内置 openclaw.json 和标准 MCP 客户端脚本,一键连接您的 AI 助手。
🔗 开始使用: 阅读 MCP 使用指南 解锁 AI 操作能力。 🦞 零人工部署: 让 OpenClaw 阅读 AGENT_GUIDE.md 即可全自动部署本项目。
| 技术 | 用途 | 版本 |
|---|---|---|
| Astro | Cloudflare 原生服务端输出的站点框架 | v6.1.x |
| Preact | 用于交互组件的轻量级 React 替代品 | v10.29.x |
| UnoCSS | 即时按需原子化 CSS 引擎 | v66.6.x |
| Satori | 基于 SVG 的 OG 图片生成 | v0.26.x |
| Arctic | OAuth 2.0 客户端库 | Latest | | Oslo | 认证工具(会话、PKCE 等)| Latest |
| 技术 | 用途 | 版本 |
|---|---|---|
| Node.js | 运行时 | v25.9.0+ |
| pnpm | 包管理器 | v10.33+ |
| JSR | 现代开源包注册中心 | Latest |
| Marked | 内容的 Markdown 解析器 | v18.x |
| Zod | TypeScript 优先的模式验证 | ^4.3.6 |
| TypeScript | 类型安全的 JavaScript | v5.9.x |
开始之前,请确保已安装以下内容:
- Node.js
25.9.0+ - pnpm
10.33+ - Cloudflare 账户 (免费注册)
- Wrangler CLI(Cloudflare 的命令行工具)
corepack enable
corepack prepare pnpm@10.33.0 --activate
pnpm add -g wrangler如果你使用 nvm,仓库已包含 .nvmrc:
nvm usegit clone https://github.com/your-username/gins-blog.git
cd gins-blog
pnpm install请选择适合您的部署方式:
最快的首次部署方式。它会自动创建 D1、KV、R2,回写 wrangler.jsonc,写入 .env / .dev.vars,并推送数据库结构。
pnpm run bootstrap如果你已经装好依赖,只想初始化 Cloudflare 资源:
pnpm run setup适合 OpenClaw、Cursor 或 CI:
pnpm run setup -- --suffix=prod --setup-ai=false如果你要自己控制资源命名和 Wrangler 操作,可以参考 scripts/setup.js 里的逻辑手动执行。
设置脚本会自动完成:
- 环境检查
- 创建 D1 / KV / R2
- 回写
wrangler.jsonc中的资源 ID、路由模式和 OAuth 回调地址 - 写入
.env中的SITE_URL - 执行
pnpm run db:push
在项目根目录创建 .env 和 .dev.vars:
SITE_URL=https://blog.example.com
GITHUB_CLIENT_ID=your_github_client_id
GITHUB_CLIENT_SECRET=your_github_client_secret
GOOGLE_CLIENT_ID=your_google_client_id
GOOGLE_CLIENT_SECRET=your_google_client_secret
GOOGLE_REDIRECT_URI=http://localhost:4321/login/google/callback
DISCORD_CLIENT_ID=your_discord_client_id
DISCORD_CLIENT_SECRET=your_discord_client_secret
DISCORD_REDIRECT_URI=http://localhost:4321/login/discord/callback
CLOUDFLARE_ACCOUNT_ID=your_cloudflare_account_id
CLOUDFLARE_ACCOUNT_HASH=your_cloudflare_account_hash
CLOUDFLARE_MEDIA_API_TOKEN=your_media_api_token
PUBLIC_CF_AVATAR_ID=your_avatar_image_id_or_r2_path
PUBLIC_ASSETS_DOMAIN=assets.yourdomain.com说明:
SITE_URL放在.env- OAuth / 媒体相关敏感信息放在
.dev.vars .env与.dev.vars都不应该提交到仓库
pnpm run dev访问 http://localhost:4321
推荐生产流程:
pnpm install
pnpm run setup -- --suffix=prod
pnpm run build
pnpm run deploy运行时 secret 用 wrangler secret put 单独配置:
wrangler secret put GITHUB_CLIENT_SECRET
wrangler secret put GOOGLE_CLIENT_SECRET
wrangler secret put DISCORD_CLIENT_SECRET
wrangler secret put CLOUDFLARE_MEDIA_API_TOKEN如果使用 GitHub Actions,再添加:
CLOUDFLARE_API_TOKENCLOUDFLARE_ACCOUNT_IDSITE_URL(Repository Variable)
编辑 src/pages/about.astro 和 src/pages/zh/about.astro 以更新:
- 简介和时间轴
- 社交链接
- Cloudflare 图片 ID 与账户哈希 (Account Hash)
更新 .env 或 CI 里的 SITE_URL 变量:
SITE_URL=https://your-domain.com颜色: 编辑 uno.config.ts
export default defineConfig({
theme: {
colors: {
brand: {
primary: '#8b5cf6', // 您的主色
accent: '#a78bfa', // 您的强调色
// ...
}
}
}
});字体: 编辑 src/styles/global.css 或更新 uno.config.ts 中的字体导入。
- 代码:根据 MIT 许可证 授权。
- 内容与设计:所有文章、媒体和独特的新美学 UI 设计根据 CC BY-NC-SA 4.0 授权。
- 隐私:请参阅我们的 隐私政策。
您可以自由使用代码,但如果引用我的文章或设计作品,请注明出处。视觉标识的商业用途需要许可。
使用 ❤️ 和现代 Web 技术构建。特别感谢:
- Astro 团队提供的出色框架
- Cloudflare 让边缘计算变得易于访问
- 开源社区
用 💜 制作 by Ichimaru Gin












