Files
blog/write/CLAUDE.md
T

84 lines
3.3 KiB
Markdown
Raw Normal View History

2026-05-21 00:27:35 +08:00
# 写作后台
Hugo 博客的本地管理后台,Next.js 16 + Tailwind CSS 4,运行在 `localhost:8016`。
## 核心模块
### 1. 文章管理 `/`
- 读取 Hugo `content/post/` 下的 Markdown 文件,列表展示、搜索、分页
- 点击标题进入编辑,hover 显示预览、编辑、删除按钮
- 预览自动启动 `hugo serve`(kill 端口冲突后重启)
### 2. 撰写/编辑 `/edit`
- 新建文章自动生成 `YYYYMMDDHHmm` 格式 slug,文件夹命名 `YYYY-MM-DD-slug`
- 文章元信息编辑(标题、日期、分类、标签、作者、AI 评论)
- Markdown 正文编辑,支持插入图片(上传到文章同级文件夹)
- 三个发布状态:
- **草稿** — `draft: true`,前台不可见
- **保存** — `draft: false`,存本地不推送
- **发布** — 保存 + `git add -A && git commit && git push`
### 3. 评论管理 `/comments`
- Artalk 管理员登录(邮箱+密码),token 缓存 localStorage
- 文章列表按 MD 文件日期倒序,默认选中最新文章,按需加载评论
- 支持在线回复、隐藏/显示、删除评论
- 回复评论时显示父级评论引用
### 4. 订阅源管理 `/feeds`
- 对接 `rssapi.usj.cc`,token 存储在 `.env` 服务端
- 增删 RSS 订阅源,批量检测存活状态
### 5. 友链管理 `/links`
- 对接 `rssapi.usj.cc`,token 存储在 `.env` 服务端
- 增删改友链,支持隐藏/显示切换
- 单个/批量存活检测,失联标记
### 6. 回收站 `/recycle`
- 软删除文章移至 `.recycle/`,保留 30 天
- 支持恢复和永久删除
## API 路由
| 路径 | 方法 | 说明 |
|------|------|------|
| `/api/posts` | GET/POST | 文章列表、新建 |
| `/api/posts/[slug]` | GET/PUT/DELETE | 单篇文章 CRUD |
| `/api/comments` | GET/POST | 评论列表、回复 |
| `/api/comments/[id]` | PUT/DELETE | 评论操作 |
| `/api/comments/login` | POST | Artalk 登录 |
| `/api/rss/feeds` | GET/POST/DELETE | 订阅源管理 |
| `/api/rss/links` | GET/POST/PUT/DELETE | 友链管理 |
| `/api/recycle` | GET/POST/DELETE | 回收站 |
| `/api/upload` | POST | 图片上传 |
| `/api/deploy` | POST | Git 部署 |
| `/api/hugo` | GET | Hugo 启动/检测 |
## 技术栈
- **框架**: Next.js 16 (App Router, Turbopack)
- **样式**: Tailwind CSS 4,SEN 主题暖色系
- **数据**: 直接读写 Hugo Markdown 文件(gray-matter),无数据库
- **评论**: Artalk API v2
- **RSS/友链**: 自建 API `rssapi.usj.cc` + SCF 代理
- **部署**: 执行 shell git push
## 提示词指南
### 新增页面/模块
> "在写作后台新增一个 XXX 模块,左侧侧边栏加入口,页面风格与现有文章管理一致"
### 修改现有功能
> "优化文章管理页面的 XXX 功能,保持 SEN 配色和卡片式布局"
> "修复评论管理页面的 XXX bug,不要改动其他功能"
### 样式调整
> "把 XXX 页面的色调整体改为 SEN 暖色系(bg: #fcfaf5, text: #223d66, accent: #1d3d6c, line: #e4dfd2)"
### API 对接
> "对接 rssapi.usj.cc 的 XXX 接口,token 在 .env 的 RSS_API_TOKEN,后端代理不要暴露到前端"
### 常见问题描述
- "布局太窄了" → 去掉 max-w 限制
- "左右比例不对" → sidebar w-1/4,main flex-1
- "最新数据没排前面" → sort by date desc
- "不知道点哪里" → 标题做成可点击,加明显按钮