# 工具库与脚本模块 ## 工具库 (`src/lib/`) ### src/lib/github.ts (GitHub数据采集) - 依赖: octokit - 认证: process.env.GITHUB_TOKEN (可选,提升限流60→5000次/小时) - `searchHotRepos(query, minStars, maxResults)`: 搜索热门仓库,按Star降序 - `getRepoReadme(owner, repo)`: 获取仓库README内容(base64解码) - `GitHubRepo` 接口: id, full_name, html_url, description, stargazers_count, forks_count, language, license, topics, updated_at, readme ### src/lib/deepseek.ts (DeepSeek评测生成) - 依赖: openai (兼容OpenAI接口) - 认证: process.env.DEEPSEEK_API_KEY - baseURL: https://api.deepseek.com/v1 - 模型: deepseek-v4-pro - `generateReview(repoName, description, stars, license, readme)`: 调用DeepSeek生成五维评测 - `ReviewDimension` 接口: { score, summary, detail } - `ReviewResult` 接口: capability, devExp, costLicense, community, performance, overall, tags - 综合分校验: 自动计算五维均分,偏差>0.3时修正 - JSON提取: 兼容markdown代码块包裹的响应 ### prisma.ts - 数据库客户端 - Prisma单例模式,防止开发环境热重载创建多实例 - 使用PrismaMariaDb adapter - 连接池配置 ### auth.ts - 认证配置 - NextAuth配置导出 - Credentials Provider(管理员+用户) - JWT策略 - GitHub OAuth Provider - 导出GET/POST handler ### admin-auth.ts - 管理员API认证 - 导出 `requireAdmin()` 中间件函数 - 验证session中邮箱是否为admin@zhuiguang.ai - 所有 `/api/admin/` 路由必须使用此中间件 - 返回401/403错误响应 ### utils.ts - 工具函数 - `cn()`: 合并clsx + tailwind-merge的className工具 ### logo-fetcher.ts - Logo抓取引擎 - 导出 `fetchLogo(websiteUrl, html?): Promise` — 返回Logo URL - 导出 `fetchLogoWithMethod(websiteUrl, html?): Promise` — 返回 `{url, method}` - 10种抓取策略按优先级执行 - 支持从SystemConfig读取配置 - 每种成功方法返回中文名称(如"HTML Link图标"、"OG/Twitter图片"等) - 详见 [05-ai-discovery.md](./05-ai-discovery.md) ### logo-storage.ts - Logo本地存储 - 导出 `downloadLogo(url, filename): Promise` - 下载远程Logo到 `/public/logos/` 目录 - 返回本地路径如 `/logos/filename.png` --- ## 脚本 (`scripts/`) ### discover-skills.mjs - AI技能发现 - 独立运行的Node.js脚本 - 遍历20个技能分类,每类调用DeepSeek API推荐10个GitHub开源项目 - 通过 `/api/admin/pending-skills/batch` 批量导入 - 自动排除已收录技能 - 每分类间隔3秒 - 运行: `node scripts/discover-skills.mjs` ### import-tools-batch1.mjs - 第一批工具导入 - 硬编码约80个国产AI工具 - 分类: 文本生成(165)/图像生成(174)/视频生成(183)/音频与语音(191) ### import-tools-batch2.mjs - 第二批工具导入 - 硬编码约200个国产AI工具 - 分类: 代码开发/AI Agent/办公效率/设计创意/营销SEO/数据分析/教育学习/搜索信息/安全合规/医疗健康/金融法律/电商零售/3D游戏/科学研究/模型框架/聊天机器人 --- ## 运维脚本 ### scripts/auto-review.mjs (自动化评测脚本) - 依赖: @prisma/client, @prisma/adapter-mariadb, octokit, openai - 流程: GitHub搜索→README获取→DeepSeek评测→Skill入库→SkillReview入库→日志记录 - 配置: SEARCH_QUERIES(4个关键词), MIN_STARS(500), MAX_PER_QUERY(5), DAILY_LIMIT(8) - 去重: 通过sourceUrl检查 - slug生成: repo full_name转小写+连字符 - 默认分类ID: 120 (AI/ML工程) - 运行: `$env:NODE_TLS_REJECT_UNAUTHORIZED="0"; node scripts/auto-review.mjs` ### scripts/publish-reviews.mjs (发布评测脚本) - 将DRAFT状态SkillReview改为PUBLISHED - 将对应draft状态Skill改为published ### scripts/test-github.mjs (GitHub API测试) - 测试searchHotRepos和getRepoReadme功能 - 运行: `$env:NODE_TLS_REJECT_UNAUTHORIZED="0"; node -r dotenv/config scripts/test-github.mjs` ### scripts/test-deepseek.mjs (DeepSeek API测试) - 测试generateReview功能,使用langflow作为测试用例 - 运行: `$env:NODE_TLS_REJECT_UNAUTHORIZED="0"; node scripts/test-deepseek.mjs` ### restart.ps1 - 服务重启 - PowerShell脚本 - 扫描8301-8310端口 - 杀死占用进程 - 执行 `npm run dev` 启动服务(端口8301) - 运行: `pwsh -ExecutionPolicy Bypass -File restart.ps1` ### temp_clear.mjs - 临时清理 - 清空pending_tools表