# 启优学企业官网

启优学一对一品牌官网。项目基于 Astro 5 + Node standalone adapter，稳定官网页面采用 SSG，学习资讯采用运行时 SSR；同时包含内容 CMS、SEO/AI 可发现性、响应式适配、原子构建与 GitLab/Nginx 部署配置。

## 本地运行（Node 20）

```bash
source ~/.nvm/nvm.sh
nvm use 20
npm install
npm run dev
```

- 官网开发地址：`http://localhost:4321/`
- 内容后台：`http://localhost:4321/admin/`

生产构建与本地服务：

```bash
npm run build
npm start
```

生产模式默认监听 `http://127.0.0.1:8793/`。

## 常用命令

```bash
npm run check
npm test
npm run build
npm start
```

## 内容管理

学习资讯使用 Markdown 存储，并由同端口 `/admin/` 后台管理。工作稿位于 `src/content/articles/`，线上稿位于 `src/content/published/`；生产环境通过 `CMS_DATA_DIR` 将内容持久化到仓库外。后台支持草稿、发布、下架、删除、分类管理、Markdown/Word 导入、图片上传、预览、修改密码与 Bearer API。

完整说明见 [CMS_README.md](./CMS_README.md)。

## SEO 与性能

- 页面级标题、描述、关键词、canonical、Open Graph 与 Twitter Card
- EducationalOrganization、WebSite、WebPage、Service、FAQ、Article 和 Breadcrumb 结构化数据
- 非文章静态 sitemap、动态文章 sitemap、robots.txt、语义化页面、SSR 分类分页、动态 `llms.txt` 与 `llms-full.txt`
- Astro 图片优化、响应式图片、移动端适配、减少动态效果偏好
- Astro standalone、部署构建锁、CMS 内容写锁与 Nginx 反向代理

## 部署

- Nginx 配置：`deploy/nginx/qiyouxue.conf`
- 生产端口：`8793`
- 站点域名：`qiyouxueedu.com`
- 服务器目录：`/root/qiyouxue/current` 与 `/root/qiyouxue/shared`

生产部署前需在 `/root/qiyouxue/shared/.env` 配置独立的 `CMS_PASSWORD`、`CMS_SECRET`、`CMS_API_KEY`、`CMS_DATA_DIR`、`CMS_BUILD_LOCK` 和 `CMS_CONTENT_LOCK`。构建锁只保护部署时的 `dist/` 替换；内容锁只保护 CMS 的 Markdown 与分类写入，两者不要共用路径。
