피드로 돌아가기
Dev.toBackend
원문 읽기
Lamefolio AI가 GitHub 데이터 + 이력서를 Gemini 2.5 Flash와 MCP로 처리하여 Notion 포트폴리오를 자동 생성
Built an AI Engine That Turns Your GitHub + Resume Into a Full Notion Portfolio — Powered by MCP
AI 요약
Context
개발자들은 포트폴리오 작성을 위해 GitHub에서 프로젝트 설명을 수동으로 복사하고, 기술 섹션을 수동으로 작성하며, 6개월마다 반복적으로 업데이트해야 하는 비효율적인 작업을 반복하고 있었다.
Technical Solution
- GitHub 데이터 수집을 결정론적 작업으로 분리: Octokit REST API를 통해 저장소당 1회 호출로 메타데이터 및 깊은 데이터 추출, LLM 없이 순수 데이터 페칭
- Gemini를 창의적 작업 중심으로 제한: 포트폴리오 스키마 생성, PDF/이미지 이력서 멀티모달 파싱, 함수 호출 기반 채팅, 개발 문서 생성만 담당
- 5개 전문화 서비스 파이프라인 구성: GitHub Service → Gemini AI → Transformer → Notion Publishing을 Orchestrator Service가 순차적으로 체이닝
- Transformer 서비스로 AI 생성 스키마를 Notion 블록 API 형식으로 변환: 4가지 템플릿 스타일(Default, Designer-Minimal, Hacker-Dark, Dev-Pro) 지원
- MCP(Model Context Protocol) 서버로 생성_포트폴리오 및 생성_문서 도구 노출: 표준 입출력 전송으로 Claude Desktop, Cursor 등 MCP 호환 클라이언트 지원
- 함수 호출 루프로 자율적 Notion 도구 사용: Gemini가 Notion 도구 호출을 결정하면 Orchestrator가 실행 후 결과를 반환, 최대 5회 반복
- OAuth 동적 리다이렉트 URI 감지 함수 구현: 요청 헤더에서 프론트엔드 오리진을 감지하여 개발/프로덕션 환경의 하드코딩된 URL 문제 해결
- 배치 블록 추가 및 500ms 지연으로 프론트엔드 스트리밍 경험 시뮬레이션: Notion API가 REST 기반만 지원(초당 3회 요청 제한)하므로, 실시간 진행률 표시바로 프리미엄 로딩 스켈레톤 표시
- 멀티모달 이력서 수집 지원: PDF, 이미지, 인쇄된 이력서 사진을 Gemini로 처리하여 구조화된 경력 데이터로 변환
- 신용 기반 생성 청구 시스템: Razorpay 통합으로 결제 관리 및 템플릿 마켓플레이스 구현
Key Takeaway
LLM을 창의적 작업(스키마 생성, 파싱, 다중 턴 대화)에만 사용하고 결정론적 작업(데이터 페칭, 블록 변환, API 호출)을 분리하면 토큰 낭비를 제거하면서 할루시네이션 위험을 최소화할 수 있다.
실천 포인트
LLM을 활용한 멀티스텝 파이프라인 설계 시, 각 단계를 전문화된 서비스로 분리하고 결정론적 작업에서 LLM을 배제하면 비용 제어와 안정성을 동시에 확보할 수 있다. 특히 GitHub, Notion 등 외부 API 연동이 필요한 경우 데이터 페칭-AI 처리-블록 변환을 순차적으로 분리하는 아키텍처가 디버깅과 유지보수를 크게 단순화한다.