# 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:test,10 个用例 ``` 首次启动自动完成建表与种子数据。默认管理员 `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