1분반-TrendFeed
프로젝트 개요
기술개발 과제
국문 : 트렌드피드
영문 : TrendFeed
과제 팀명
TrendFeed
지도교수
이동희 교수님
개발기간
2025년 9월 ~ 2025년 12월 (총 4개월)
구성원 소개
서울시립대학교 컴퓨터과학부 20209200** 주*원(팀장)
서울시립대학교 컴퓨터과학부 20209200** 서**스
서울시립대학교 컴퓨터과학부 20219200** 강*우
서론
개발 과제의 개요
개발 과제 요약
본 프로젝트의 목표는 GitHub에서 주목받고 있는 오픈소스 리포지토리의 README 파일을 기반으 로, 해당 프로젝트의 핵심 개념과 기능을 만화 형식으로 자동 생성하여 공유할 수 있는 웹 서비스를 개 발하는 것이다. 사용자는 직관적으로 리포지토리가 추구하는 목적과 특징을 쉽게 이해할 수 있으며, 생 성된 만화는 온라인 상에서 쉽게 확산할 수 있다.
개발 과제의 배경
◇ 최근 오픈소스 프로젝트는 급격히 증가하고 있으나, 실무 개발자가 README 문서의 기술적 설명을 읽고 해당 프로젝트의 핵심을 파악하는 데에는 많은 시간이 소요되기 때문에 개발자와 최신 기술 사이 에 상당한 시차가 발생하고 있다. 본 서비스는 텍스트 기반 문서를 시각적이고 스토리텔링 중심의 만화 로 변환함으로써 학습 곡선을 낮추고, 프로젝트의 접근성을 높인다. 이를 통해 개발자는 자신의 프로젝 트를 효과적으로 홍보할 수 있으며, 사용자 입장에서는 새로운 도구와 기술을 쉽고 신속하게 접할 수 있어 오픈소스 생태계 전반에 긍정적 파급 효과를 기대할 수 있다.
◇ 2024년 기준 오픈소스 개발 방식을 도입한 깃허브 사용자 수가 1억 명을 넘어서고 GitHub 활용 조 직의 수가 400만 개를 넘어섰으며, 오픈소스 프로젝트 수도 지속적으로 성장하면서 오픈소스 생태계가 꾸준히 성장하고 있다.
◇ 유사한 기능을 지원하는 기술 뉴스의 경우 기업을 홍보하는 목적의 실용성이 부족한 글이 기사의 대부분, Git Trending 서비스의 경우, 새롭게 주목받는 프로젝트보다 유명한 프로젝트 위주로 공유. 기존 의 서비스를 통해서는 개발자가 새롭고 잠재력 있는 프로젝트를 빠르게 발굴하기 어렵다.
개발 과제의 목표 및 내용
◇ GitHub GraphQL API를 활용하여 최근에 주목받고 있는 리포지토리의 README 데이터를 자동 수집 한다.
1. 개발 과제의 개요 ◇ 거대 언어 모델을 사용하여 README 파일에서 핵심 내용(기능, 사용법, 예제 코드 등)을 요약하고, 요약된 내용을 바탕으로 이미지 생성 인공지능을 사용해 해당 리포지토리의 핵심을 만화의 형태로 시각 화한다.
◇ 사용자가 웹 플랫폼을 통해 생성된 만화를 열람·공유할 수 있도록 UI/UX를 구현한다.
◇ 오픈소스 프로젝트 이해와 확산을 촉진하는 실질적 도구를 제공하고자 한다.
관련 기술의 현황
관련 기술의 현황 및 분석(State of art)
가. State of art
◇ Filtering: AI 기반 필터링 기법으로 노이즈를 줄이고 사용자 맥락을 반영
◇ 이미지 변환: GAN 및 Diffusion 모델 활용
◇ 자연어 처리: LLM 기반 모델 활용
나. 기술 로드맵
◇ 데이터 수집 및 기초 시각화: 깃허브/뉴스/논문 데이터 크롤링 자동화, 대시보드 기반 기술 트렌드 시각화
◇ 트렌드 탐색 기능 고도화: NLP 기반 키워드 클러스터링, 레포지토리 간 연결성 분석
◇ 개인화 및 사용자 경험 개선: 사용자 선호 기반 추천 알고리즘
◇ 시계열 분석을 통한 인기 기술 예측: 업계별 기술 채택률 및 전망 제시
다. 특허조사
◇ 코드 저장소 트렌드 분석 시스템1)
◇ 소셜 데이터 기반 기술 동향 예측 장치2)
◇ 실시간 데이터 스트리밍 시각화 플랫폼3)
◇ 맞춤형 기술 뉴스 추천 엔진4)
라. 특허전략
◇ 차별화된 데이터 융합: GitHub + 뉴스 + 논문을 통합한 멀티소스 분석
◇ 실시간 트렌드 탐지 강화: 초저지연 분석 파이프라인 관련
◇ 사용자 맞춤화 기술 보호: 개인화 추천/시각화 UX
◇ 예측 모델 기반 지적재산권 선점: 기술 채택률/트렌드 변동성 예측 관련 알고리즘
시장상황에 대한 분석
- 경쟁제품 조사 비교
◇ GeekNews: 국내외 개발, 기술, 스타트업 뉴스 큐레이션 및 요약 기능을 제공한다. 기술 관련 이슈나 프로젝트 동향, 오픈소스, 스타트업 이야기를 소개하고, 뉴스레터 형식으로 배포한다. 봇이나 커뮤니티 요소가 있다. 주제가 카테고리 별로 분류되어 있지 않아 찾고 싶은 기술을 세부적으로 탐색하기 어렵다. 서비스 이용자가 한국인으로 한정되어 있다. 최신 기술 동향을 다루지 않고, 시스템 설계와 같은 일반적 인 주제에 집중하고 있다.
◇ 요즘IT: 한국어 IT/테크 뉴스와 트렌드 중심 큐레이션을 제공한다. 뉴스레터나 기사 모음, 키워드 기 반 트렌드 제공 등 기술 블로그에서 제공할 만한 정보들을 한곳에 모아놓은 플랫폼을 서비스한다. GeekNews와 마찬가지로 최신 기술에 대한 뉴스를 찾기 어렵다.
◇ github Trending: 주목받고 있는 GitHub의 리포지토리 목록을 제공한다. 일간/주간/월간 단위로 어 떤 리포지토리가 주목받는지 보여준다. 주로 Star 개수 증가 추이, 활동성 등의 기준으로 최근에 뜨고 있는 프로젝트인지 파악한다. 다만 star 개수에 의존하기 때문에 새로운 기술보다 유명한 프로젝트가 더 자주 나타나는 경향이 있다.
◇ OSS Insight: GitHub 이벤트(Commit, Star, Fork, Pull Request, Issue 등) 대량 데이터를 분석해서 트 렌드, 리포지토리 통계, 개발자 행동 분석, 키워드/토픽 기반 시계열 분석 등을 제공한다. 자연어 쿼리 같은 고급 탐색 기능이 있다. 한국어는 지원하지 않기 때문에 한국어 기반 사용자들은 접근성이 떨어질 수 있다.
- 마케팅 전략 제시
◇ 차별화 포인트 강조: 실용적인 API, 오픈소스, 프레임워크 중심으로 큐레이션, 한국어 사용자 친화 서비스 제공, 개인 맞춤형 큐레이션 및 알람 서비스 제공, 코드 기반 심층적 트렌드 요약, 단계별 콘텐츠 제공 (단순히 시각화된 카드뉴스부터 실질적인 코드 및 트렌드 분석까지)
◇ 개발자 커뮤니티 공략: 국내 개발자를 대상으로 홍보
◇ 지역화 전략: 한국어 사용자 및 국내 개발 시장에 특화된 큐레이션 서비스 제공
◇ SWOT 분석
1. Strengths (강점)
차별화된 콘텐츠 전달: README를 만화 형식으로 변환하여, 기존 텍스트 기반 서비스보다 직관적이고 흥미롭게 정보 제공
바이럴 효과(SNS 확산성): 만화 콘텐츠는 카드뉴스·밈처럼 SNS 공유에 적합 → 자연스러운 홍보 효과 자동화 기반 저비용 모델: README와 AI 모델만 있으면 자동 콘텐츠 생성 가능 → 유지·운영 비용 절감 2. Weaknesses (약점)
초기 신뢰성 부족: 요약·만화 생성 품질이 기대치에 못 미치는 경우 사용자 불만 발생
기술 의존도 높음: AI 모델(요약·이미지 생성)의 성능에 따라 서비스 품질 좌우
시장 인지도 부족: 신생 서비스로서 초기 사용자 확보 및 인지도 확보에 시간이 필요
차별화 유지 어려움: 기존 플랫폼들이 유사 기능을 빠르게 도입할 가능성 있음
3. Opportunities (기회)
AI 콘텐츠 시장 성장: 텍스트-투-이미지 및 자동 콘텐츠 생성 시장이 급성장 중 (CAGR 15~20%)
개발자 생태계 확대: GitHub 리포지토리와 오픈소스 프로젝트 수가 급격히 증가 → 서비스 대상 데이터 풍부
글로벌 확장성: 영어·한국어 외 다국어 지원 시 해외 개발자 커뮤니티까지 확산 가능
4. Threats (위협)
경쟁 서비스의 성장: GitHub 자체 기능 확장, OSS Insight 등 경쟁 플랫폼의 빠른 개선
법적·저작권 문제: 생성된 만화의 이미지 저작권, 원본 README의 라이선스 문제 가능성
기술 변화 속도: AI 모델의 급격한 발전으로, 현재의 서비스 차별성이 빠르게 약화될 위험
보안 이슈: API 키 관리, 사용자 데이터 보호 실패 시 신뢰도 하락
결론
강점 극대화: “만화 기반 직관적 이해”와 “SNS 확산성”을 주요 홍보 포인트로 강조
약점 보완: 초기에는 “품질 검증”과 “사용자 피드백 반영”을 빠르게 수행하여 신뢰 확보
기회 활용: 글로벌 시장으로 확장 가능한 사업모델을 제시하여 투자자와 파트너 설득
위협 대비: 경쟁 서비스와 차별화를 유지하기 위해 “개인화 추천”과 “다양한 시각화 스타일” 기능을 지 속적으로 개발
개발과제의 기대효과
기술적 기대효과
◇ 자연어 처리 및 요약 기술의 고도화
GitHub README 파일은 프로젝트의 기술적 설명, 설치 가이드, 사용 예시 등 다양한 형태의 텍스트를 포함한다. 본 과제에서는 해당 텍스트를 분석하여 핵심적인 내용을 자동 요약하고, 요약된 내용을 만화 의 형태로 변환하는 기능을 구현한다. 이를 통해 문서 요약, 의도 파악, 스토리텔링 등 자연어 처리 기술 을 실질적으로 적용할 수 있다.
◇ 이미지 생성 기술의 실용적 활용
텍스트 형태의 대본을 만화 형식의 이미지로 변환하기 위해 이미지 생성 모델을 적용한다. 이는 단순한 이미지 생성이 아니라, 스토리의 흐름과 맥락을 반영하는 창의적인 시각화를 요구한다. 본 과제를 통해 이미지 생성 모델의 스토리 표현력 및 도메인 적응 능력을 검증하고, 나아가 기술적 한계와 개선 방향 을 탐색할 수 있다.
◇ 웹 플랫폼 개발 및 통합 기술 확보
GitHub GraphQL API를 통한 데이터 수집, 백엔드에서의 데이터 처리, 프론트엔드에서의 시각화 및 공유 기능을 포함하는 자동화된 파이프라인을 구축한다. 이로써 데이터 수집, 인공지능 기반 콘텐츠 생성, 웹 서비스 배포까지 이어지는 엔드-투-엔드(End-to-End) 기술 역량을 확보할 수 있다.
◇ 사용자 친화적 기술 확산 모델 제시
기술 문서를 만화로 변환하는 과정은 단순히 한 서비스에 국한되지 않고, 교육 콘텐츠 제작, 기술 학습 자료개발 등 다양한 분야로 확장 가능하다. 따라서 본 과제는 기술과 대중 간의 인터페이스를 설계하는 실질적 모델로서의 의미를 가진다.
경제적, 사회적 기대 및 파급효과
◇ 오픈소스 생태계 활성화
많은 개발자가 자신의 프로젝트를 홍보하고 확산하는 것에 어려움을 겪는다. 본 서비스는 프로젝트를 대중적으로 친숙한 만화 콘텐츠로 제공하여 개발자가 새로운 기술을 쉽고 빠르게 이해할 수 있도록 도 움을 제공한다. 이는 오픈소스 프로젝트의 사용성과 기여도를 높이고, 개발자 생태계 전반의 성장으로 이어질 수 있다.
◇ 개발자/기업의 홍보·마케팅 비용 절감
기존에는 기술 블로그 작성, 영상 제작, 문서화 등에 상당한 인적·물적 자원이 투입되었다. 그러나 본 서 비스는 README 파일만으로 자동화된 시각 자료를 생성하므로, 개발자와 기업이 손쉽게 사용할 수 있는 저비용·고효율의 홍보 도구가 될 수 있다.
◇ 지식 접근성 확대
실무 개발자가 최신 기술을 파악하는 데에 있어, 복잡한 다량의 기술 문서를 천천히 읽기보다 만화를 통해 해당 기술의 핵심을 직관적이고 효율적으로 파악할 수 있다. 이러한 방식은 학습 곡선을 완화하고, 복잡한 기술 내용을 보다 친근하게 접근할 수 있도록 지원함으로써 개발자의 지식 습득 속도를 가속화 한다. 특히 바쁜 업무 환경 속에서도 짧은 시간 내 핵심 내용을 습득할 수 있다는 점에서 실무적 활용 가치가 크다.
추진체계
구성원 및 추진체계
주*원(팀장) : 프론트엔드
서**스 : AI
강*우 : 백엔드
설계
설계사양
제품의 요구사항
| 번호 | 요구사항 | D or W | 비고 |
|---|---|---|---|
| 1 | GitHub Trending API 등을 이용해 정기적으로 인기 오픈소스 프로젝트 리스트를 수집해야 한다. | D | 일별 Top 프로젝트 등 수집 주기 조절 |
| 2 | 수집한 각 프로젝트의 README.md 원문을 자동으로 가져와 분석할 수 있어야 한다. | D | GitHub REST API 또는 Raw 파일 접근 |
| 3 | LLM 기반 요약 엔진을 통해 README의 핵심 내용을 요약해야 한다. | D | OpenAI GPT-4 등 외부 API 활용 가능 |
| 4 | 요약된 내용을 바탕으로 주요 장면별로 만화 이미지를 생성해야 한다. | D | Stable Diffusion 등의 텍스트-투-이미지 모델 사용 |
| 5 | 생성된 만화는 여러 패널 또는 연속 이미지 형태로 구성하여 스토리텔링 형태로 제공한다. | D | 예: 소개, 목적, 설치법, 주요 기능, 사용법 등의 흐름으로 분할 |
| 6 | 프론트엔드 웹 페이지에서 각 프로젝트의 만화 요약을 열람할 수 있어야 한다. | D | 목록, 검색 및 필터 기능 포함 가능 |
| 7 | 사용자가 흥미로운 만화 콘텐츠를 SNS 등으로 공유할 수 있도록 링크 발행이나 공유 기능을 제공한다. | W | Whatsapp, Slack 공유 연동 등 |
| 8 | 프로젝트 원문 페이지(GitHub 링크)를 명시하여 원본 정보에 접근할 수 있어야 한다. | D | 만화 페이지에 GitHub 저장소 링크 제공 |
| 9 | 데이터베이스에 프로젝트 정보, 요약 텍스트, 생성된 이미지를 저장하고 효율적으로 관리한다. | D | 이미지 파일은 객체 스토리지 연계 가능 |
| 10 | 다중 사용자 접근 시에도 서비스가 원활하게 동작하도록 백엔드를 설계하고 확장성 있게 배포한다. | D | 컨테이너 수평 확장, 로드 밸런싱 고려 |
| 11 | AI 요약 및 생성 기능의 성능을 모니터링하고 필요 시 모델이나 파라미터를 개선할 수 있어야 한다. | W | 모델 교체의 용이성, A/B 테스트 등의 가능성 |
평가 내용
본 시스템이 충족해야 하는 주요 기술적 및 서비스적 기준은 다음과 같다:
◇ 요약 정확도 및 유용성: LLM을 통해 생성된 요약문이 원본 README의 핵심을 정확히 담고 있어야 한다. 요약 결과는 사용자에게 프로젝트의 목적, 기능, 사용법 등의 중요한 정보를 빠뜨림 없이 전달해야 한다. ROUGE(N-gram 겹침 정도 파악)와 BERTScore(임베딩 유사도 측정) 지표를 혼합 활용하여 요약의 정확도를 평가한다.
◇ ROUGE-N
ROUGE-N (Recall-Oriented Understudy for Gisting Evaluation)은 텍스트 요약의 품질을 정량적으로 평 가하는 표준 메트릭으로, 참조 요약(reference summary, 원본 텍스트)과 생성 요약(candidate summary) 간의 N-gram 중복도를 측정한다.
◇ BERTScore
BERTScore는 BERT 기반의 문맥 임베딩 유사도를 활용하여 텍스트 요약의 의미적 품질을 평가하는 최신
메트릭으로, 단어 수준이 아닌 전체 문장의 의미 일치도를 측정한다.
잘 구조화된 문서 요약은 프로젝트의 이해와 채택을 용이하게 하므로, 이는 본 서비스의 성공을 위한
핵심 기준이다.
◇ 시각화 품질 및 스토리텔링: 생성된 만화 이미지는 요약된 내용을 효과적으로 시각화하여 전달해야
한다. 이미지는 단순히 임의의 그림이 아니라 프로젝트의 성격과 핵심 아이디어를 반영하는 맥락 있는
일러스트여야 한다.
◇ 성능 (응답 속도 및 처리량): 시스템은 일정 수준의 성능을 보장해야 한다. 프론트엔드는 사용자의 요 청에 대해 지연 없이 만화 데이터를 로드하고 표시해야 하며, 백엔드는 다수 사용자 요청이나 새로운 프로젝트의 대량 동시 수집에도 견딜 수 있어야 한다. 특히 AI 요약과 이미지 생성은 비용과 시간이 많 이 소모되는 작업이므로, 이러한 작업이 비동기 처리되거나 배치 처리되어 사용자 인터페이스가 느려지 지 않도록 설계해야 한다. 또한 일별로 여러 프로젝트를 처리할 경우, 작업 큐 관리나 캐싱 전략을 통해 처리량을 높일 필요가 있다.
◇ 확장성 및 안정성: 서비스 아키텍처는 증가하는 부하에 대비해 쉽게 확장될 수 있어야 한다. 컨테이 너 기반으로 설계된 만큼, 필요에 따라 AI 생성 서비스나 백엔드 인스턴스를 수평 확장하여 성능을 높일 수 있다. 데이터베이스도 증가하는 데이터에 대응할 수 있도록 인덱싱, 샤딩 또는 클라우드 매니지드 DB로의 이관 등을 고려한다. 아울러, 각 구성 요소가 장애 격리를 이뤄 한 부분에 문제가 생겨도 전체 서비스가 다운되지 않도록 해야 한다. 예를 들어 이미지 생성에 실패한 경우 대체 이미지나 오류 표시 로 서비스 가용성을 유지하는 식의 안정성 장치가 필요하다.
◇ 사용자 경험 및 접근성: 최종 사용자에게 제공되는 UI/UX는 직관적이고 쾌적해야 한다. 만화 뷰어 화 면은 반응형 웹으로 다양한 디바이스에서 잘 보이고, 이미지를 확대하거나 슬라이드 형태로 넘겨볼 수 있는 기능을 제공한다. 텍스트로 요약 내용을 함께 제공하여 이미지 이해를 도와주고, 시각 장애가 있는 사용자도 내용을 파악할 수 있도록 대체 텍스트를 지원하는 등 접근성도 고려한다. 또한 공유된 링크를 통해 접속한 사용자가 맥락을 이해할 수 있도록 프로젝트의 기본 정보(예: 이름, 한 줄 설명, 원본 README 링크)를 부가적으로 표시해야 한다. 이처럼 사용자의 학습 편의와 만족도를 높이는 것이 중요 하다.
개념설계안
◇ 본 시스템은 프론트엔드(웹 UI), 백엔드(API 서버), AI 요약·이미지 생성 서비스, 데이터베이스의 네 가지 주요 구성 요소로 이루어진다. 전체적인 동작 흐름은 다음과 같다: 배치 프로세스가 GitHub API를 통해 주기적으로 인기 오픈소스 프로젝트 목록을 가져오면, 백엔드에서는 각 프로젝트의 README를 수 집하여 AI 요약 요청을 보낸다. Python 기반의 AI 서비스는 LLM 모델을 호출해 README를 요약하고, 이어서 요약문을 기반으로 몇 가지 핵심 장면에 대한 이미지 생성 요청을 처리한다. 생성된 만화 이미 지들과 요약 텍스트, 프로젝트 메타데이터는 백엔드의 PostgreSQL DB에 저장된다. 사용자가 웹사이트에 접속하면 프론트엔드가 백엔드 API를 통해 저장된 요약 및 이미지를 불러와 화면에 표시한다. 사용자는 주어진 만화 형식 요약을 페이지 넘기듯 순차적으로 보거나, 관심 있는 프로젝트의 경우 제공된 GitHub 링크를 눌러 원본 README와 저장소로 이동할 수 있다.
가. 주요 구성 요소별 설계
◇ 프론트엔드 (Next.js + Firebase Hosting): 프론트엔드는 React 기반의 Next.js 프레임워크로 개발되며, 정적 사이트로 빌드되어 Firebase Hosting을 통해 전세계 CDN으로 배포된다. Next.js를 사용함으로써 SEO에 유리한 서버사이드 렌더링 또는 정적 생성이 가능하고, 프로젝트별 만화 요약 페이지를 미리 생 성하여 빠른 응답을 제공할 수 있다. UI는 사용자가 익숙하게 탐색할 수 있도록 반응형 디자인과 모던 한 레이아웃으로 구성한다. 프로젝트 리스트 화면, 만화 상세 화면, 정보 페이지 등으로 구성되며, 만화 뷰어에서는 좌우 슬라이드나 스크롤을 통해 패널 간 이동이 가능하도록 구현한다. Firebase Hosting을 선택한 것은 배포 및 관리의 편의성, 그리고 사용자에게 신속하게 콘텐츠를 전달하기 위함이다. 정적 콘 텐츠인 이미지와 JS 리소스는 Firebase의 CDN 캐싱을 통해 빠르게 제공되고, 동적 데이터는 백엔드 API 호출로 가져온다.
◇ 백엔드 (Spring Boot + AWS 배포): 백엔드는 Java Spring Boot로 구현된 RESTful API 서버이다. 이 서버는 오픈소스 프로젝트 및 만화 요약 데이터에 대한 CRUD API를 외부에 제공하며, 내부적으로 정기 수집 및 AI 연계 로직을 포함한다. 주요 기능으로는 (1) 트렌딩 프로젝트 수집기: 일정 간격마다 GitHub Trending API를 호출해 인기 저장소 목록을 가져오고, 새로 수집된 프로젝트에 대해 README를 가져와 요약/만화 생성을 백그라운드 작업으로 요청함. (2) 요약·이미지 요청 처리: Python AI 서비스에 HTTP 요 청을 보내 요약문과 이미지를 생성하도록 트리거하고, 완료된 결과를 받아 DB에 저장. (3) API 서비스: 프론트엔드에 프로젝트 목록(요약 포함) 제공, 개별 프로젝트의 만화 패널 이미지 URL 및 캡션 제공 등 의 엔드포인트를 갖는다. 이 백엔드 애플리케이션은 Docker로 컨테이너화되어 AWS EC2 인스턴스 상에 서 동작한다. Spring Boot의 장점인 안정적인 구조와 생산성을 살려 빠르게 개발하고, AWS 상에서 환경 설정을 프로퍼티로 관리하여 개발/스테이징/프로덕션 환경 구분과 확장에 용이하도록 하였다. 또한, 이 미지와 같은 정적 자산은 필요 시 AWS S3 등의 스토리지와 연동하여 관리하고, 백엔드는 해당 경로만 제공하여 부하를 줄일 수 있다.
◇ AI 요약 및 만화 생성 서비스 (Python FastAPI + Google Cloud): 이 모듈은 AI 관련 연산을 담당하 는 마이크로서비스로, Python의 FastAPI 프레임워크로 구현되어 별도의 Docker 컨테이너로 배포된다. 입 력받은 README의 내용을 파악하는 데 불필요한 텍스트(이모지, 링크 등)를 제거하는 방식으로 python 정규식 라이브러리와 OpenAI의 GPT를 활용하여 전처리되며, GPT를 이용해 README의 내용을 요약한 다. 요약된 내용을 GPT에 입력하여 만화 생성을 위한 스토리라인을 먼저 생성한 다음, 이 스토리라인과 google cloud 환경에서 구축된 stable diffusion 기반의 이미지 생성 모델을 활용하여 README의 내용 을 이해하기 쉽게 시각화하는 만화를 생성한다. 이 과정에서 생성되는 텍스트와 만화 데이터는 JSON 형 태로 HTTP 요청을 통해 백엔드와 연계되어 활용된다.
◇ 데이터베이스 (PostgreSQL): 시스템의 데이터 영속화 계층으로 PostgreSQL를 사용한다. 관계형 DB를 선택한 이유는 프로젝트와 요약/이미지 간 관계 데이터를 체계적으로 관리하기 위해서이다. 이미지 데이 터는 대용량이므로 실제 파일은 로컬보다는 클라우드 스토리지(S3 등)에 저장하고 경로만 DB에 유지하 거나, PostgreSQL에 Binary Large Object로 저장하는 방법을 고려한다. 또한, 조회 성능 향상을 위해 프 로젝트 이름, 키워드 등에 대한 인덱스를 설정하여 사용자의 검색이나 필터 요청에 빠르게 응답하도록 준비한다.
나. 독창적 구조 및 기술 활용
본 프로젝트의 개념설계는 다음과 같은 세 가지 차별성과 기술적 특징을 중심으로 구성되어 있다.
◇ 기술 문서의 ‘시각적 콘텐츠화’라는 새로운 패러다임
기존 오픈소스 문서화 방식은 대부분 텍스트 기반에 그치며, 프로젝트의 성격이나 특장점을 직관적으로 전달하는 데 한계가 있었다. 본 프로젝트는 이러한 텍스트 문서의 한계를 극복하기 위해 ‘시각적 요약’이 라는 새로운 접근을 시도한다. README의 핵심 내용을 만화 형태로 표현함으로써, 개발자뿐 아니라 비 전문가도 내용을 직관적으로 이해할 수 있게 만들고, 오픈소스 프로젝트가 보다 쉽게 확산될 수 있도록 한다. 이는 단순한 기능 구현을 넘어, 기술 커뮤니케이션의 형식을 새롭게 정의하는 시도이며, 오픈소스 생태계에 실질적인 영향을 줄 수 있는 가치 있는 전환이다.
◇ AI 기술의 창의적 활용
프로젝트는 두 가지 인공지능 기술을 조합하여 완전히 자동화된 콘텐츠 생산 흐름을 구성했다. 첫째, LLM 기반 언어 모델이 README 문서를 요약해 사용자가 빠르게 핵심을 이해할 수 있도록 한다. 둘째, 이미지 생성 모델이 해당 내용을 시각화하여 만화 형식으로 표현한다. 이러한 시각화 과정은 단순한 그 림 삽화를 넘어, 스토리텔링 구조를 반영한 시나리오적 이미지 구성을 포함한다. 예를 들어, 명령어 설치 단계를 마법사의 주문 시전으로 비유하거나, 함수 모듈을 의인화한 캐릭터로 표현하는 등 재미와 정보 전달을 동시에 충족시키는 방식이다. 결과적으로 이 프로젝트는 기술 문서를 단순히 요약하는 수준을 넘어, 내러티브 기반의 시각적 이해로 전환함으로써 사용자의 몰입도를 높이고 학습 곡선을 낮춘다.
◇ 자동화된 콘텐츠 배포 파이프라인
프로젝트는 GitHub의 트렌딩 API를 기반으로, 신규 인기 오픈소스 프로젝트를 자동 감지하고, 콘텐츠 생 성부터 웹 게시까지 전 과정을 자동화하였다. 이 자동화 파이프라인은 요약 및 이미지 생성 요청, 결과 저장, Firebase에 배포될 데이터 업데이트까지 포함하며, 관리자의 개입 없이도 매일 최신 오픈소스 만화 를 자동으로 갱신할 수 있다.
상세설계 내용
1. 아키텍쳐 구조
◇ 프론트엔드
GitHub 계정 기반 로그인 · 회원 관리 담당 트렌딩 만화 리스트 / 상세 페이지 / 언어별 필터 / 좋아요·공유 버튼 UI 제공 백엔드 Firebase Functions REST API 호출, 응답을 화면용 데이터 구조로 매핑 Firebase Auth 토큰을 붙여 인증된 요청 전달, 클라이언트 쪽 상태 관리
◇ 백엔드 API 레이어
/api/github/*, /api/comics/*, /postComicFromAI, 뉴스레터 관련 엔드포인트 제공 GitHub REST API 호출, 트렌드 점수 계산, 후보 승격, AI 서버 호출 등 모든 비즈니스 로직 집약 Firestore / Storage / 외부 AI 서버 사이에서 데이터 흐름을 오케스트레이션하는 중앙 허브 역할 Cloud Scheduler 트리거를 받아 주기적인 크롤링·평가·뉴스레터 발송 배치 작업 수행
◇ GitHub 크롤링 · 트렌드 분석 모듈 Star 수, 생성일, 갱신일 등 GitHub 메타데이터를 수집하여 repos 컬렉션에 저장 이전 Star 수와 비교한 증가량, 시간 경과, 저장소 규모를 반영해 트렌드 점수·단계 계산 일정 기준을 넘는 저장소를 candidates 컬렉션에 승격하고, AI 변환 파이프라인에 투입할 준비 상태로 관리
◇ AI 만화 생성 서버
Firebase Functions에서 전달한 README·메타데이터를 받아 하나의 작업 단위로 처리 OpenAI API를 이용해 README를 정제·요약하고, 4컷 만화 시나리오와 제목·카테고리 텍스트 생성 Stable Diffusion 서버에 시나리오별 프롬프트를 보내 패널 이미지를 생성한 뒤, 글자 캡션 합성 최종적으로 base64 인코딩된 이미지 배열(panels)과 요약·제목·카테고리를 Firebase의 /postComicFromAI 엔드포인트로 콜백
◇ 이미지 생성 파이프라인
FastAPI 서버에서 전달하는 장면 설명을 입력으로 받아 각 장면에 대한 일러스트 이미지 생성 생성된 원본 이미지를 다시 FastAPI로 반환하고, FastAPI가 자막 렌더링·후처리를 수행 만화 스타일의 일관성을 유지하기 위해 고정된 모델·프롬프트 포맷 사용
◇ 데이터 저장소 (Firestore + Firebase Storage)
Firestore: GitHub 저장소 메타데이터(repos), 트렌딩 후보(candidates), 최종 만화(comics), 뉴스레터 구독 정보(newsletter), 알림(notifications) 관리 Storage: AI 서버에서 생성된 만화 패널 이미지를 저장 각 만화 문서에 Storage 다운로드 URL을 함께 기록해 프론트엔드에서 직접 이미지 로드 가능하게 구 성
◇ 스케줄링 및 배치 처리 (Cloud Scheduler + Functions)
Google Cloud Scheduler가 crawlScheduled Pub/Sub 트리거를 매 24시간마다 호출 해당 함수에서 GitHub 전체 크롤링·트렌드 평가·후보 선정 → AI 서버 디스패치 → 뉴스레터 발송까지 일괄 수행
2. 배포/운영(SRE)
◇ 브랜치/빌드/배포
Git 전략: main(배포), develop(통합), feature/*(기능).
CI: PR 시 Gradle build + unit test + 도커 이미지 빌드.
이미지 태그: backend:{git-sha} / fastapi:{git-sha}.
배포: 스테이징: 수동 승인 → docker compose -f docker-compose.staging.yml up -d.
프로덕션: ALB 뒤 롤링 배포(헬스체크 통과 후 트래픽 전환).
◇ 설정
.env 대신 Secret Manager/SSM Parameter Store 사용.
키: SPRING_DATASOURCE_*, GITHUB_TOKEN, AI_API_KEY, POST_TARGET_TOKEN.
권한 최소화
◇ 모니터링/로그/지표
애플리케이션: 성공률(2xx 비율), 요청 레이턴시(P50/P95), 에러율(4xx/5xx), 배치 실행 시간/성공률.
AI 작업 상태 분포(queued/generating/ready/failed). 게시 큐 적체(미게시 건수).
인프라: CPU, 메모리, 디스크, 컨테이너 재시작 횟수.
로그 구조화: 요청ID/트레이스ID, endpoint, status_code, latency_ms, error_code.
◇ 런북
DB 인증 실패: 시크릿값 확인→ RDS 연결상태→ 롤백.
GitHub rate limit: Retry-After 준수, 스케줄 완화, 토큰 교체.
AI 장애: 백오프·재시도 후 ‘HUMAN_REVIEW_REQUIRED’로 전이.
게시 실패: 플랫폼 응답코드 분석→ 재시도/인증 재발급/포맷 수정.
◇ 백업/복구
DB 스냅샷: 하루 1회, 보존 30일.
README/AI 산출물: S3 버저닝+수명주기(180일 후 Glacier).
RPO 1일 / RTO 4시간 목표.
3. AI 활용
◇ 입력/출력 계약
입력: repo 메타데이터(full_name, stars, language, topics), README 원문.
출력:ai_text: 요약, 블로그 포스트(800~1200자, 텍스트)
ai_image[]: 4컷 만화 PNG 4장
메타 데이터: 모델버전, 프롬프트버전, 생성시간, 코스트 추정치
◇ 프롬프트/파라미터
가공된 README 데이터, 리포지토리의 메타 데이터를 이용.
파라미터: temperature 0.7(텍스트)/0.3(요약), euler a로 샘플러 사용, 이미지 guidance 7, CFG scale 9 이상, seed 고정.
◇ 파이프라인/상태 QUEUED → 작업 할당
텍스트→ 이미지 순 배치, S3 업로드
메타/URL 저장, READY 전이
실패 시 FAILED_RETRYABLE(백오프 재시도 3회) → 지속 실패 시 HUMAN_REVIEW_REQUIRED
◇ 안전/품질/저작권
금지 주제/PII/혐오 표현 필터(프롬프트+후처리).
원문 출처와 라이선스 노출.
이미지/텍스트에 출처 각주 자동 삽입 옵션.
휴먼 리뷰 샘플과 리젝 사유 로그.
◇ 버전/비용 model_version, prompt_version 컬럼으로 추적.
비용 추정: 텍스트(토큰) + 이미지(장당) 합산 → content_projects.cost_estimate.
일일 예산 상한/스로틀링.
결과 및 평가
완료 작품의 소개
프로토타입 사진 혹은 작동 장면
향후계획
◇ 만화 패널 레이아웃, 말풍선 스타일, 폰트 등을 개선해 가독성·완성도 향상
◇ GitHub 이외의 소스로 입력 확장 가능성
◇ 관리자용 대시보드에서 크롤 상태, AI 작업 상태, 뉴스레터 통계를 한눈에 확인할 수 있는 UI 추가 계획


