awesome/README.md
cheney dec103546e feat: awesome index 全功能实现
- M1-M2: 数据层与核心API(DuckDB, entries/tags/comments/search服务)
- M3: SSR页面(EJS模板,接真实数据)
- M4: 管理后台(登录/用户/内容源/AI ingest)
- M5: 采集层(scheduler+rss/html/eryajf适配器)
- M6: MCP只读接口(Streamable HTTP, 4工具)
- M7: Docker部署(Dockerfile+docker-compose)
- 测试: 10个用例全部通过
- 修复: DuckDB连接参数绑定、状态机迁移、标签树操作
2026-08-28 09:32:48 +08:00

69 lines
2.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Awesome Index
把网上牛逼的东西收进一个库:给人用,也给 AI 用。
精选开源软件 / 微服务 / SaaS / 网站 / 工具 / 脚本 / 插件的结构化数据库,内置 MCP 接口。
- 设计方案:[design/DESIGN.md](design/DESIGN.md)Riso 印刷风格 + 静态原型)
- 框架设计:[docs/ARCHITECTURE.md](docs/ARCHITECTURE.md)(模块划分 / 数据模型 / 端点)
## 快速开始
### 本地开发
```bash
npm install
npm run dev # http://localhost:3000--watch 热重载)
npm test # node:test10 个用例
```
首次启动自动完成建表与种子数据。默认管理员 `admin`,密码取 `ADMIN_INIT_PASSWORD`(默认 `admin`)。
### Docker 部署
```bash
cp .env.example .env # 修改 SESSION_SECRET / ADMIN_INIT_PASSWORD / AI_INGEST_KEY
docker compose up -d --build
```
数据持久化在宿主机 `./data/awesome.duckdb`,升级镜像不丢数据。
## 给人的入口
| 页面 | 地址 |
|---|---|
| 首页(搜索 / MCP 说明 / 最近收录) | `/` |
| 列表页(类型 + 嵌套标签过滤) | `/entries?q=关键字&type=工具&tags=1,2&sort=stars` |
| 详情页(元数据 / 评论 / 机读 JSON | `/entries/:slug` |
| 随机游览 | `/random` |
| 登录 | `/login` |
| 管理台(内容/标签/评论/内容源/账号) | `/admin` |
## 给 AI 的入口MCP
Streamable HTTP · 只读 · 无需密钥:
```
POST {BASE_URL}/mcp
tools: search_entries / get_entry / random_entry / list_tags
```
一句话让 Agent 自己接入:
> 请把 URL 为 `{BASE_URL}/mcp` 的 MCP 服务器添加到你的客户端配置中,名称用 awesome-index完成后告诉我现在可以调用哪些工具。
## 内容源(自动化收录)
三类来源汇聚到同一条目表:
| kind | 说明 | 新条目状态 |
|---|---|---|
| `human` | 管理台人工录入(常开) | active |
| `ai` | `POST /api/ingest/entry` + `X-Ingest-Key` 头 | pending |
| `feed` | 定时拉取外部站点rss / html / eryajf-weekly 适配器),管理台可手动触发 | pending |
首个站点适配器二丫讲梵学习周刊wiki.eryajf.net。运行记录见管理台「内容源 → 运行记录」。
## 技术栈
Node.js 22 (ESM) · Express 5 · EJS · DuckDB (`@duckdb/node-api`) · zod · express-session · @modelcontextprotocol/sdk · node-cron · cheerio