# 写作后台 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 - "不知道点哪里" → 标题做成可点击,加明显按钮