众所周知,《奇舞精选》目前有两个在运营的粉丝群,小编会不定期在群里分享一些关于 AI 或前端相关的最新资讯或开源项目,这些分享内容的一个来源就是 GitHub Trending:https://github.com/trending。为了提高阅读效率,小编开发了一个自动抓取 GitHub Trending 页面内容并通过大模型 Moonshot(月之暗面即 Kimi)翻译总结成中文的工具。本文详细介绍了小工具开发过程和遇到的问题及解决方案,最后附项目源码。
目标
自动抓取 GitHub Trending 仓库列表。
使用 MoonShot API 总结每个仓库的简介。
展示一个用户友好的界面,列出描述和简介。
下面这个页面即最终的运行效果,小编还贴心的加上了暗黑模式。
功能需求:
获取 GitHub Trending 数据。
利用 OpenAI API 生成自然语言总结。
技术选型:
前端框架
:Next.js、Tailwind CSS
API 服务
:GitHub API, MoonShot API
为什么选择 MoonShot API?因为 MoonShot API 对于新注册用户有一定的免费额度,且和 OpenAI 兼容,如果想迁移到 OpenAI 也非常方便。
技术实现
初始化 Next.js 项目
首先,我们使用以下命令创建一个 Next.js 项目:
npx create-next-app@latest
✔ What is your project named? … github-trending ✔ Would you like to use TypeScript? … No / Yes ✔ Would you like to use ESLint? … No / Yes ✔ Would you like to use Tailwind CSS? … No / Yes ✔ Would you like to use `src/` directory? … No / Yes ✔ Would you like to use App Router? (recommended) … No / Yes ✔ Would you like to customize the default import alias (@/*)? … No / Yes
for (const element of elements) { // 从 html 里解析出 repoName const repoName = $(element).find("a").attr("href").trim().substring(1); console.log("repoName", repoName); const repoDetail = await fetchRepoDetail(repoName); if (!repoDetail) continue;