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

2.3 KiB
Raw Blame History

Awesome Index

把网上牛逼的东西收进一个库:给人用,也给 AI 用。 精选开源软件 / 微服务 / SaaS / 网站 / 工具 / 脚本 / 插件的结构化数据库,内置 MCP 接口。

快速开始

本地开发

npm install
npm run dev        # http://localhost:3000--watch 热重载)
npm test           # node:test10 个用例

首次启动自动完成建表与种子数据。默认管理员 admin,密码取 ADMIN_INIT_PASSWORD(默认 admin)。

Docker 部署

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