개발 일지

[개발 일지] IT Trend Curator (v0.1)

sybear02 2026. 8. 3. 23:26

v0.1 — IT Trend Curator

방식: 바이브 코딩 (Vibe Coding) — Cursor + AI 어시스턴트와 협업하여 설계·구현·문서화를 진행


1. 왜 이걸 구현했는가

요즘 AI·백엔드 관련 기술이 빠르게 바뀌어서, 글로만 읽기보다 직접 만들어 보며 빠르게 익히고 싶었다.
그래서 해외 IT 유튜브·아티클 링크를 넣으면 핵심을 요약·번역해 마크다운 초안까지 만들어 주는 IT Trend Curator를 제작했다.

평소에도 관심 있는 영상을 모아두기만 하고 소화하지 못하는 경우가 많아서,
직접 쓰는 도구로 만들면 학습과 실사용을 같이 가져갈 수 있다고 생각했다.


2. 이번 버전에서 중점적으로 생각한 것

  1. MVP 파이프라인
    URL → 추출 → 요약/번역/마크다운 → 파일 저장까지 한 흐름으로 동작하게 구현했다.
  2. 백엔드 Job 처리
    FastAPI로 Job을 받고, SQLite Job Store로 상태를 관리하며, Worker가 작업을 가져와 실패 시 재시도하도록 구성했다.
  3. 품질 평가
    LLM-as-a-Judge로 faithfulness/coverage/clarity/usefulness를 1~5점 수치화했다.

3. 기존과 다른 점

ChatGPT에 링크를 붙여 넣거나, 유튜브/브라우저 요약 확장처럼 한 번 요약만 해주는 도구는 이미 많다.
IT Trend Curator는 “요약 결과”보다 링크부터 초안 저장까지를 파이프라인으로 돌리는 쪽에 가깝다.

구분 기존(챗봇·요약 확장 등) 이 프로젝트
처리 방식 대화창에서 한 번 요청 Job 등록 → Worker가 비동기로 처리
프롬프트 보통 한 번에 요약 요약 → 번역·정제 → 마크다운으로 단계 분리
결과물 채팅 답변으로 끝 output/posts/ 마크다운 초안 파일로 저장
품질/비용 눈으로만 확인하는 경우가 많음 Judge 점수 + latency·토큰·추정 비용을 기록
실패 대응 다시 물어보는 식 Job 상태 관리 + 재시도

즉, 비슷한 “링크 요약” 기능이어도
비동기 Job · 단계별 AI 체이닝 · 품질/비용 계측 · 파일 산출까지 묶여 있는 점이 다르다.


4. 기술 스택

구분 선택
언어 Python 3
API FastAPI + Uvicorn
Job/상태 SQLite (pending → running → succeeded/failed)
Worker 별도 프로세스 폴링 + tenacity 재시도
추출 youtube-transcript-api, httpx + BeautifulSoup
LLM OpenAI 호환 Chat Completions (openai SDK)
품질 LLM-as-a-Judge (JSON 루브릭)
산출물 output/posts/*.md, output/metrics/*.json

5. 핵심 기능

  • POST /jobs : URL(및 optional fallback 텍스트) 등록 → job_id 반환
  • GET /jobs/{id} : 상태·에러·메트릭 조회
  • Worker: pending Job claim → 파이프라인 실행 → 성공 저장 / 실패 시 재큐잉
  • AI 체이닝 3단계: summarize → translate_refine → markdown_format
  • Judge: 요약 품질 4축 점수 + 평균
  • 메트릭: 단계별 latency, 토큰 수, 추정 비용(USD)
  • CLI: submit / status / wait / run(동기 디버그)

6. 어떻게 개발했는가

6.1 설계 선택

  • Redis 대신 SQLite Job Store를 택한 이유:
    로컬에서 바로 돌릴 수 있고, 그래도 claim_next / 상태머신 / 재시도 패턴은 동일하게 설명 가능.
  • 프롬프트를 한 방에 넣지 않고 3단계로 분리:
    실패 지점 추적·토큰 비용 분해·단계별 개선이 쉽도록.
  • 발행은 Tistory API에 의존하지 않고 마크다운 draft 저장부터:
    외부 플랫폼 정책 변경에 덜 흔들리게.

6.2 구현 순서

  1. 설정/모델/JobStore (상태 전이의 뼈대)
  2. 추출 모듈 (YouTube → 웹 → fallback)
  3. LLM 클라이언트 + 사용량 로깅
  4. AI 체이닝 / Judge / publish
  5. pipeline 조립 → worker → FastAPI/CLI
  6. README + 본 개발일지

6.3 바이브 코딩에서 의식한 점

  • 코드와 문서에 Vibe Coding을 명시해, 학습/협업 방식까지 투명하게 남긴다.
  • 측정 가능한 것(지연, 토큰, Judge 점수)만 메트릭으로 남긴다.

7. 결과 / 수치

v0.1 시점에는 실제 API 측정값이 없었다.


8. 다음 버전에서 할 일

  1. 실제 샘플 5~10건으로 메트릭/Judge 점수 표 정리
  2. 추출 실패 케이스별 fallback UX 개선 (에러 메시지 표준화)
  3. (여유 있으면) Job 목록 API / 간단 성공률 리포트

폴더 맵 (v0.1)

it-trend-curator/
  app/
    main.py        # FastAPI
    worker.py      # Job worker
    cli.py
    store.py       # SQLite job queue
    extract.py
    llm.py
    chain.py
    evaluate.py
    pipeline.py
    publish.py
  docs/
    DEVLOG_GUIDE.md
    devlog/v0.1_IT_Trend_Curator.md
  output/posts/
  output/metrics/