Shelfry 是一个 macOS 风格的开源软件与 AI 工具目录站,前台提供首页精选、平台与分类筛选、详情页、⌘K 搜索、编辑合集和投稿入口,并支持 SSR/ISR、JSON-LD、sitemap 等 SEO 能力。后台基于 Payload CMS,粘贴一个 GitHub 仓库地址即可自动抓取星标、协议、语言、Topics、图标、封面、中文简介、标签、功能清单和安装命令,生成草稿或直接发布。系统还能按 GitHub 搜索规则自动发现新项目,并通过定时任务刷新数据、补全草稿。没有 LLM Key 时退化为规则抽取,没有 GitHub Token 时退化为页面解析,仍可正常使用。前后台运行在同一个 Node 进程,数据存储在 PostgreSQL。
一个 macOS 风格的开源软件 / AI 工具目录站。人工策展 + GitHub 自动同步,后台粘贴一个仓库地址就能自动补全信息。




前台
/macos /windows /ai /plugins 与分类页,支持平台 / 类型 / 收费 / 星标筛选和四种排序⌘K 命令面板 + /search 页面,中文子串匹配/submit 提交 GitHub 地址,进入后台审核后台(Payload CMS)
自动化
refresh:定时刷新已发布条目的星标 / 最后提交 / 最新版本enrich:给草稿补全中文介绍、标签、封面readme:给历史条目补抓 READMEdiscover:按 GitHub 搜索规则自动发现新项目,进草稿箱| 层 | 选型 |
|---|---|
| 框架 | Next.js 16(App Router / RSC / ISR) |
| 语言 | TypeScript |
| 样式 | Tailwind CSS 4 |
| 后台 | Payload CMS 3.91(与前台同一个 Node 进程) |
| 数据库 | PostgreSQL 16 |
| 图标 / 动效 | lucide-react、motion |
| 运行环境 | Node 22 LTS |
| 部署 | Ubuntu + 宝塔面板 + Nginx + PM2 |
# 1. 依赖
npm install
# 2. 环境变量
cp .env.example .env
# 修改 DATABASE_URI 指向你的 PostgreSQL,并填 PAYLOAD_SECRET
# 3. 建库(示例)
createdb shelfry
# 4. 启动(首次启动 Payload 会自动建表)
npm run dev
# 5. 写入示例数据(可选)
npm run seed
打开:
npm run seed 会创建管理员 [email protected] / admin123456,上线前务必改密码。
| 变量 | 必填 | 说明 |
|---|---|---|
DATABASE_URI | ✅ | postgres://user:[email protected]:5432/shelfry |
PAYLOAD_SECRET | ✅ | openssl rand -hex 32 |
NEXT_PUBLIC_SITE_URL | ✅ | 站点地址,用于 SEO / sitemap |
CRON_SECRET | ✅ | 定时任务调用凭证 |
SEED_SECRET | ✅ | 初始化接口凭证 |
GITHUB_TOKEN | 建议 | 只读 Token,匿名配额只有 60 次/小时 |
LLM_BASE_URL | 可选 | OpenAI 兼容接口,如 https://api.deepseek.com/v1 |
LLM_API_KEY | 可选 | 不填则使用规则化摘要 |
LLM_MODEL | 可选 | 如 deepseek-flash |
/admin → 软件条目 → 新建https://github.com/ollama/ollama已有条目的信息过时了,勾选「重新抓取 GitHub」再保存即可。
后台 → 站点设置 → 采集与 AI,添加搜索规则,例如:
topic:macos-app stars:>1500 pushed:>2025-01-01
topic:mcp-server stars:>500
开启「自动发布」后,超过星标阈值的项目会直接发布,其余进草稿箱。
接口:GET /api/cron/sync?task=refresh|enrich|discover,请求头 x-cron-secret: $CRON_SECRET。
宝塔计划任务配置见 deploy/baota/crontab.txt。
src/
app/
(site)/ 前台页面(首页 / 平台 / 分类 / 详情 / 搜索 / 合集 / 投稿)
(payload)/ Payload 后台与 REST/GraphQL 路由
api/ 自定义接口(search / seed / submit / cron / health)
collections/ Payload 集合定义
globals/Settings.ts 站点配置
components/ 前台组件 + 后台品牌组件
lib/ GitHub 抓取、AI 富化、查询、评分
scripts/ seed / sync 辅助脚本
deploy/baota/ 宝塔部署脚本、Nginx、PM2、计划任务、图文手册
docs/screenshots/ 截图
详见 deploy/baota/README.md:从装 Node/PG 到上线、备份、更新的完整步骤。
/dmca)。代码可用于个人或商业项目。收录内容的版权归各项目作者所有。
内容由编辑整理,部分信息来自 GitHub 与项目官网,版权归原作者所有。发现错误?报告问题