Hexo 博客管理器是一个现代化的博客管理工具,专为 Hexo 静态博客框架设计。它提供了一个优雅的 Web 界面,让您可以在任何设备上(包括移动设备)轻松创建、编辑和管理您的博客文章。
# 克隆仓库
git clone https://github.com/your-username/blogwriter.git
cd blogwriter
# 安装依赖
npm install
访问 GitHub Developer Settings 创建新的 OAuth App:
Hexo Blog Managerhttps://your-domain.workers.devhttps://your-api-domain.workers.dev/auth/callback记录下 Client ID 和 Client Secret。
npx wrangler kv:namespace create SESSIONS
记录下输出的 id 值。
更新 wrangler.toml 中的配置:
[[kv_namespaces]]
binding = "SESSIONS"
id = "your-kv-namespace-id"
preview_id = "your-preview-kv-namespace-id"
[vars]
GITHUB_CLIENT_ID = "your-github-client-id"
GITHUB_REDIRECT_URI = "https://your-api-domain.workers.dev/auth/callback"
npx wrangler secret put GITHUB_CLIENT_SECRET
粘贴您的 GitHub Client Secret 并按回车。
# 启动前端开发服务器
npm run dev
# 启动 Workers 开发服务器(另一个终端)
npm run wrangler:dev
访问 http://localhost:5173 查看前端。
# 登录 Cloudflare
npx wrangler login
# 部署 Worker(API 服务)
wrangler deploy
# 或
npm run deploy:worker
# 构建前端
npm run build
# 部署 Pages(前端)
npm run deploy:pages
# 或
npm run deploy
使用项目提供的部署脚本一键完成所有部署步骤:
bash builddeploy.sh
该脚本会按顺序执行:
blogwriter/
├── src/
│ ├── worker/ # Cloudflare Workers 后端
│ │ ├── index.ts # Worker 入口,路由分发
│ │ ├── auth.ts # GitHub OAuth 认证逻辑
│ │ ├── github.ts # GitHub API 封装
│ │ ├── posts.ts # 文章 CRUD 操作
│ │ └── upload.ts # S3 图片上传(AWS Signature V4)
│ ├── app/ # Svelte 前端
│ │ ├── components/ # UI 组件
│ │ │ ├── Header.svelte
│ │ │ ├── MarkdownEditor.svelte
│ │ │ ├── PreviewPane.svelte
│ │ │ ├── PostList.svelte
│ │ │ └── LoginButton.svelte
│ │ ├── routes/ # 页面路由
│ │ │ ├── +page.svelte # 首页(文章列表)
│ │ │ ├── login/+page.svelte # 登录页
│ │ │ ├── new/+page.svelte # 新建文章
│ │ │ ├── edit/[slug]/+page.svelte # 编辑文章
│ │ │ └── settings/+page.svelte # 设置页(S3 配置)
│ │ ├── stores/ # Svelte stores
│ │ │ ├── auth.ts # 认证状态管理
│ │ │ ├── editor.ts # 编辑器状态管理
│ │ │ └── posts.ts # 文章列表状态
│ │ ├── lib/ # 工具函数
│ │ │ ├── api.ts # API 请求封装
│ │ │ ├── hexo.ts # Hexo 相关工具
│ │ │ ├── pwa.ts # PWA 更新检测
│ │ │ ├── s3-presets.ts # S3 服务商预设
│ │ │ └── utils.ts # 通用工具函数
│ │ ├── App.svelte # 主应用组件(路由)
│ │ ├── main.ts # 应用入口
│ │ └── app.css # 全局样式
│ └── shared/ # 共享类型定义
│ └── types.ts # TypeScript 类型
├── docs/ # 文档
│ ├── DEPLOYMENT.md
│ └── USAGE.md
├── plans/ # 计划文档
│ ├── hexo-blog-manager-plan.md
│ └── image-upload-s3.md
├── public/ # 静态资源(PWA 图标)
│ ├── favicon.ico
│ ├── pwa-64x64.png
│ ├── pwa-192x192.png
│ └── pwa-512x512.png
├── wrangler.toml # Cloudflare Workers 配置
├── vite.config.ts # Vite 配置(含 PWA)
├── package.json # 项目依赖
├── tsconfig.json # TypeScript 配置
├── tailwind.config.js # Tailwind CSS 配置
├── README.md # 项目说明
├── CHANGELOG.md # 更新日志
└── LICENSE # MIT 许可证
| 方法 | 路径 | 说明 |
|---|---|---|
| GET | /auth/github |
获取 GitHub OAuth 授权 URL |
| GET | /auth/callback |
OAuth 回调处理 |
| GET | /auth/user |
获取当前用户信息 |
| POST | /auth/logout |
登出 |
| 方法 | 路径 | 说明 |
|---|---|---|
| GET | /api/posts |
获取文章列表 |
| GET | /api/posts/:path |
获取文章详情 |
| POST | /api/posts |
创建新文章 |
| PUT | /api/posts/:path |
更新文章 |
| DELETE | /api/posts/:path |
删除文章 |
| 方法 | 路径 | 说明 |
|---|---|---|
| GET | /api/repo |
获取仓库信息 |
| GET | /api/repo/branches |
获取分支列表 |
| 方法 | 路径 | 说明 |
|---|---|---|
| POST | /api/upload |
上传图片到 S3 存储 |
| POST | /api/upload/delete |
删除 S3 存储中的图片 |
| 变量名 | 说明 | 必需 |
|---|---|---|
GITHUB_CLIENT_ID |
GitHub OAuth App Client ID | 是 |
GITHUB_CLIENT_SECRET |
GitHub OAuth App Client Secret | 是 |
GITHUB_REDIRECT_URI |
OAuth 回调 URL | 是 |
在设置页面配置图片上传的 S3 存储:
| 配置项 | 说明 |
|---|---|
provider |
服务商标识(aws, aliyun, tencent, qiniu, r2, minio, custom) |
endpoint |
S3 endpoint URL |
region |
区域 |
accessKeyId |
Access Key ID |
secretAccessKey |
Secret Access Key |
bucket |
存储桶名称 |
publicUrl |
公开访问 URL 前缀(CDN 域名) |
pathPrefix |
路径前缀,如 blog/images |
forcePathStyle |
是否使用路径风格(MinIO 等需要) |
urlSuffix |
URL 后缀,如 -ys(用于 CDN 图片处理样式) |
欢迎提交 Issue 和 Pull Request!
git checkout -b feature/AmazingFeature)git commit -m 'Add some AmazingFeature')git push origin feature/AmazingFeature)本项目采用 MIT 许可证 - 详见 LICENSE 文件
如有问题,请:
如果这个项目对您有帮助,请给我们一个 Star ⭐️
Made with ❤️ for Hexo bloggers