Communitygithub.com

agentic-portfolio — 为任意 GitHub 用户构建基于免费 LLM 的智能体个人作品集

为任何 GitHub 用户生成一个智能体驱动的个人作品集网站,基于 Next.js + CopilotKit 构建,页面上的 AI 智能体可以根据仓库内容回答有关用户工作的问题,并采用免费 LLM 的生存链(NVIDIA NIM → Groq → Gemini → OpenAI),实现零成本运行。

agentic-portfolio — 为任意 GitHub 用户构建基于免费 LLM 的智能体个人作品集 是什么?

该技能用于搭建一个名为 `agentic-portfolio` 的智能体个人作品集网站,基于 Next.js 15 App Router 和 CopilotKit,并集成了 `/free-llm` 生存链。它能够自动拉取指定 GitHub 用户最近 12 个月活跃的仓库(包括公开和私有仓库,私有仓库仅提供 IP 安全的高亮摘要),然后生成包含个人使命、价值观和 12X 未来实践的完整作品集数据。网站内置的 AI 智能体能够回答访客关于该用户工作的问题,所有回答都基于仓库内容,并且通过免费的 LLM 链(NVIDIA NIM → Groq → Gemini → OpenAI)实现零成本运行。该技能还支持通过对话添加 LinkedIn 文章,并确保私有仓库的 IP 安全。触发词包括 “portfolio”、“personal site”、“agentic portfolio”、“free-llm portfolio”。参考实现位于 github.com/wjlgatech/agentic-portfolio。

兼容平台~Claude Code✓Codex CLI~Cursor✓Antigravity✓Gemini CLI
npx skills add https://github.com/wjlgatech/agentic-portfolio-public/tree/HEAD/skill

在你喜欢的 AI 中提问

打开一个已预加载此 Agent Skill 的新对话。

文档

/agentic-portfolio — 为任意 GitHub 用户构建基于免费 LLM 的智能体作品集网站

此技能将搭建 agentic-portfolio 应用(Next.js 15 App Router + CopilotKit + /free-llm 生存链)。参考实现位于 github.com/wjlgatech/agentic-portfolio —— 将其克隆为模板,然后为目标用户重新填充 content/ 目录下的数据。所有个人内容都是数据,应用代码可直接复用。

0. 输入与前置条件

  • GitHub 登录名(例如 wjlgatech)。如需获取私有仓库和高亮信息,请运行 gh auth status —— 用户必须使用 repo 范围进行身份验证。仅公开仓库无需身份验证。
  • node >= 18、npm、gh、python3。

1. 拉取活跃仓库(最近 12 个月)

SINCE=$(python3 -c "import datetime as d;print((d.date.today()-d.timedelta(days=365)).isoformat())")
gh api -X GET 'user/repos?per_page=100&sort=pushed&affiliation=owner' --paginate \
  --jq ".[] | select(.pushed_at >= \"$SINCE\") | {name,private,fork,lang:.language,desc:.description,pushed:.pushed_at[0:10],stars:.stargazers_count,url:.html_url}" \
  > repos.ndjson
# 对于其他用户的公开仓库:gh api "users/<login>/repos?per_page=100&sort=pushed" ...

排除 fork(fork: true)和元仓库(dotfiles、现有的 portfolio)。

2. 整理到 content/projects.json

对于每个保留的仓库,输出 {name, category, highlight, featured, private, language, stars, pushed, url}:

  • Category —— 分组到少量类别中(例如 Agentic OS · Frameworks & Tooling · AI Products · Faith/Family · Open Knowledge);选择符合用户实际工作的名称。
  • highlight —— 一条 IP 安全的说明。对于 私有 仓库:仅限高级别描述,并将 url: null(绝不要链接或暴露内部信息)。
  • featured —— 标记大约 15–18 个最强的项目作为默认视图。

3. 填写 content/profile.ts 和 content/portfolio.yaml

  • profile.ts:姓名、标语、使命、价值观、热爱以及 12X 未来实践(十二项复合性原则)。根据用户的简介和仓库主题进行起草;并明确标记这是供他们编辑的内容。
  • portfolio.yaml:控制面板 —— 部分顺序/可见性/标签、主题以及 文章 列表(初始为空)。所有者通过与智能体对话(“添加我的 LinkedIn 文章 …”)或手动填写文章。LinkedIn 需要登录验证 —— 请用户粘贴他们的帖子,或接受公开文章 URL 并逐个 WebFetch。
  • 在部署时设置 PORTFOLIO_OWNER_TOKEN,以便只有所有者可以应用智能体的编辑(访客保持只读)。未设置时本地开发无限制。

4. 应用代码 —— 从模板复制,不要重写

可复用部分(对所有用户相同):

  • app/page.tsx、app/layout.tsx、app/globals.css
  • app/api/copilotkit/route.ts + lib/llm.ts(免费 LLM 链 —— 仅在服务端使用密钥)
  • components/Copilot.tsx、components/Projects.tsx、components/Articles.tsx
  • 配置文件:package.json(将 Next 固定到打了补丁的 15.x)、tailwind.config.ts、tsconfig.json、postcss.config.mjs、.env.example

5. 验证,然后部署

npm install && npm run build      # 在推送前必须通过
gh repo create <login>/<repo-name> --public --source=. --remote=origin --push

然后在 Vercel 上部署(导入仓库 → 添加一个免费密钥,例如 NVIDIA_API_KEY → 部署)。

防护措施

  • 绝不要泄露私有 IP。 私有仓库:仅限高亮摘要,url: null。
  • **密钥保留在服务端。**只有 app/api/copilotkit/route.ts 读取 LLM 密钥。
  • **优先使用免费套餐。**保持 lib/llm.ts 的顺序为 NIM → Groq → Gemini → 付费。
  • 构建必须通过 才能进行任何推送。如实报告构建状态。
  • 手动确认仓库推送,除非用户已明确表示“创建并推送”。

相关技能