
AI 도구 디렉토리 사이트를 만들며 깨달은 'AI로 AI를 큐레이션하는' 파이프라인 설계
요약
AI 도구 디렉토리 사이트 운영을 위한 반자동 콘텐츠 생성 파이프라인 설계 과정을 다룹니다. 데이터 수집부터 LLM을 활용한 SEO 최적화 리라이트, 카테고리 분류, 그리고 최종 수동 리뷰로 이어지는 엔지니어링 원칙을 설명합니다.
핵심 포인트
- 양은 많고 오차 허용 범위가 큰 작업은 AI에게, 판단이 필요한 핵심 작업은 사람에게 배분
- LLM을 활용해 SEO를 고려한 다국어 설명문 생성 및 자동 카테고리 분류 수행
- 리다이렉트 추적을 통한 정확한 공식 URL 확보 및 데이터 정제
- LLM의 환각(Hallucination)과 편향을 방지하기 위한 필수적인 수동 리뷰 단계
이익 상관관계를 먼저 밝힙니다. 저는 SoFarBot(www.sofarbot.com)이라는 AI 도구 무료 디렉토리 사이트의 운영자입니다. 이 기사에서는 사이트를 지탱하는 반자동 파이프라인(후보 수집 → AI를 통한 초안 생성 → 수동 리뷰 → 공개)을 엔지니어링 관점에서 작성합니다. 결론부터 말씀드리면: AI는 기계적인 작업의 80%를 처리해 주지만, "이 도구를 게재할 것인가"라는 판단만큼은 지금도 모델에 맡기지 않고 있습니다.
수집 → 중복 제거 / 리다이렉트 추적을 통한 실제 URL 획득 → AI 초안 (영/일 언어별 분류) → LLM을 통한 카테고리 분류 → 초안 저장 → 수동 리뷰 → 공개
설계 원칙은 단 하나입니다. 양은 많고 허용 오차가 큰 작업은 AI에게, 양은 적고 허용 오차가 작은 작업은 사람에게. 이하 순서대로 설명하겠습니다.
수집원은 여러 곳입니다. GitHub(star / topic으로 OSS를 수집), 몇몇 RSS(AI 뉴스나 연구소 블로그), 그리고 ProductHunt의 GraphQL API입니다.
여러 번 고생했던 지점이 있습니다. ProductHunt의 website 필드는 utm이 붙은 리다이렉트 단축 URL인 경우가 많아, 그대로 저장하면 많은 프로덕트의 "공식 사이트"가 동일한 리다이렉터 도메인으로 되어 버립니다. 대책은 소박하지만 확실합니다. 각 website에 대해 301 / 302를 한 번 추적하여, 최종적으로 도착하는 진짜 공식 사이트를 저장합니다.
후보가 들어온 시점에서는 원래의 영어 설명문의 품질이 제각각입니다. 여기서 대규모 언어 모델 (LLM)을 사용하여 사이트 내의 통일된 말투로 다시 씁니다.
- 영어판은 Gemini, 중국어판은 DeepSeek를 사용하며, 간체자↔번체자 변환은 로컬에서 처리합니다 (토큰 낭비를 줄이고 제어하기 쉽기 때문입니다).
- 프롬프트에서는 "직역이 아니라 SEO를 의식하여 리라이트(Rewrite)할 것"을 강조합니다. 직역한 문장은 SEO 가치가 낮고 읽기에도 좋지 않습니다.
- 카테고리 분류도 LLM에 맡깁니다. 후보 정보와 기존 카테고리 목록을 전달하여 가장 가까운 카테고리를 선택하게 합니다. 키워드의 단순 일치로는 "AI 영상 / AI 내레이션 / AI 자막"과 같이 유사한 카테고리에서 거의 틀리곤 합니다.
이 공정이 AI의 도움을 가장 많이 받는 부분입니다. 이전에는 설명문 하나를 쓰는 데 몇 분이 걸렸지만, 지금은 초안이 거의 순식간에 나옵니다.
AI의 리라이트에는 안정적으로 발생하는 두 종류의 오류가 있기 때문입니다.
- 태연하게 상세 내용을 보충함: 원래 문장에 일본어 대응이라고 적혀 있지 않아도, 멋대로 "다국어 대응"이라고 덧붙입니다.
- 장단점이 너무 깔끔함: 지켜보고 있지 않으면 장점만 쓰거나, 단점을 "아쉬운 장점" 같은 말투로 표현합니다.
그렇기 때문에 다시 쓴 결과물은 반드시 한 번 "초안"으로 내려서 수동 리뷰를 거친 후 공개합니다. 리뷰에서 하는 일은 무료 플랜이 진짜인지, 단점을 충분히 적었는지, 프로젝트가 아직 살아있는지 등의 판단입니다. 이 부분은 지금도 자동화하지 못하고 있으며, 할 생각도 없습니다. 이곳이 디렉토리 사이트의 존재 의의 그 자체이기 때문입니다.
- 아이콘 / 커버: 먼저 사이트 자체의 og:image를 가져오고, 가져올 수 없으면 Google의 s2 favicon 서비스로 폴백(Fallback)하여 반드시 이미지를 확보합니다 (목록 페이지에 빈 이미지 칸이 있으면 보기 좋지 않고, CLS에도 영향을 미칩니다).
- 프론트엔드: Nuxt 3 + SSR. 목록 페이지와 상세 페이지 모두 서버 사이드 렌더링(SSR)을 사용하여 인덱싱과 초기 표시 모두에 유리합니다.
- 다국어 콘텐츠: 내용은 언어별로 행을 나누어 저장합니다 (en / zh / zh-TW). 프론트엔드의 i18n key-value 방식이 아니라, 언어별로 독립된 제목·설명·본문 레코드입니다.
파이프라인의 설계 판단을 한마디로 요약하면, "수집·리라이트·1차 분류"와 같이 양이 많고 허용 오차가 큰 작업은 모델에게, "게재 여부·단점 작성 여부"와 같이 양이 적고 허용 오차가 작은 작업은 사람에게 배분하는 것입니다. 처음에는 모델에게 게재 여부까지 결정하게 하려 했으나, 그럴듯하게 틀리는 경우가 많아 솔직하게 다시 나누었습니다.
결과물은 www.sofarbot.com에 있습니다. 현재 100개 이상의 도구와 80개 이상의 OSS 프로젝트를 게재하고 있습니다. 방법론과 고생했던 점은 위에 적은 대로이며, 제 사이트에 의존하지 않고 그대로 사용할 수 있습니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Qiita AI의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기