본문으로 건너뛰기

© 2026 Molayo

Dev.to헤드라인2026. 06. 02. 22:03

월 12유로로 건강 콘텐츠 자동화 시스템을 구축한 방법

요약

Longevity AI 운영자가 월 12유로의 저비용으로 고품질 건강 콘텐츠를 자동 생성하는 시스템 구축 사례를 소개합니다. PubMed, EFSA 등 신뢰할 수 있는 출처를 스크레이핑하여 다국어 콘텐츠를 생성하는 아키텍처를 다룹니다.

핵심 포인트

  • 신뢰할 수 있는 과학적 출처(PubMed, EFSA 등) 활용 필수
  • 스크레이퍼, 오케스트레이터, 게이트로 구성된 아키텍처 설계
  • GPT-4o-mini 등을 활용한 비용 최적화 및 자동화 구현
  • 다국어 지원 및 규제 준수(GDPR 등) 고려

월 12유로로 건강 콘텐츠 자동화 시스템을 구축한 방법

저는 네덜란드의 홀리스틱 건강 플랫폼인 Longevity AI를 운영하고 있습니다. 콘텐츠 작업이 저를 너무 힘들게 했습니다. 근거 중심(evidence-based)의 좋은 블로그 포스트 하나를 쓰는 데 4~6시간이 걸렸습니다. 저는 세 가지 언어로 아홉 가지의 ziektebeelden (만성 질환)을 다뤄야 했습니다. 이는 현실적으로 연간 약 50개의 블로그를 생산할 수 있다는 의미였습니다. 충분하지 않았습니다.

그래서 저는 자동화 시스템(autopilot)을 구축했습니다. 이것이 어떻게 작동하는지, 비용은 얼마인지, 그리고 윤리성을 유지하기 위해 무엇과 싸워야 했는지 소개합니다.

문제점: 양질의 건강 콘텐츠는 확장하기 어렵다

건강 콘텐츠에는 대부분의 블로그 자동화 시스템이 무너지는 품질의 하한선이 존재합니다. 단순히 RSS 피드를 가져와서 문장만 바꾸는 식으로는 안 됩니다. 다음과 같은 요소가 필요합니다:

  • 동료 검토(Peer-reviewed) 출처 — PubMed, EFSA, ClinicalTrials.gov의 인용
  • 준수 사항(Compliance) — 네덜란드 IGJ, EU MDR, AVG (GDPR) 모두 적용
  • 세 가지 언어 — 네덜란드어를 기본으로 하며, 영어와 프랑스어를 배포용으로 사용
  • 커버 이미지 + 본문 내 시각 자료 — 독자들은 텍스트만 가득한 글에는 반응하지 않습니다

저의 첫 번째 시도는 GPT-4o-mini + Flux + 수동 검토를 사용하는 것이었습니다. 블로그당 비용은 약 €0.50였습니다. 한 사이클(6시간마다 35개의 블로그)당 €1.502.50였습니다. 한 달이면 €120~240였습니다. 괜찮긴 했지만, 1인 운영 체제에서는 비용 부담이 컸습니다.

Illustratie bij How I Built a Health-Content Autopilot for €12/Month

아키텍처: 4개의 스크레이퍼, 1개의 오케스트레이터, 1개의 게이트

이 자동화 시스템은 네 개의 입력 소스를 가집니다. 각 소스는 정규화된 시그널 객체(normalized signal object)를 반환하는 별도의 스크레이퍼(scraper)입니다:

interface ContentSignal {
  title: string;
  topic: string;
...

네 개의 스크레이퍼:

  1. BBC Health RSS — 영양제, 치료, 영양, 수면, 면역, 장 건강 등의 키워드로 필터링됨
  2. NCBI PubMed eUtils — 질환(ziektebeeld)별 과학적 쿼리, 초당 3회 요청으로 속도 제한(rate-limited) 적용
  3. EFSA RSS — EU의 영양제 승인 및 건강 주장 (신뢰도가 높은 EU 규제 기관)
  4. ClinicalTrials.gov REST — 신규 임상 시험 등록에 대한 7일 이동 창(rolling window)

오케스트레이터 (Orchestrator):

export async function runNewsRadarCycle(): Promise<void> {
  const db = await getDb();
  if (!db) return;
...

중복 제거 (Deduplication)는 두 단계로 이루어집니다. 오케스트레이터에서의 URL 해시 (URL-hash) 방식과, 데이터베이스를 대상으로 signalAlreadyExists() 함수에서 수행하는 쿼리 확인 방식입니다. 동일한 연구가 PubMed와 ClinicalTrials에서 서로 다른 URL로 나타날 수 있기 때문에 두 단계 모두 필요합니다.

컴플라이언스 게이트 (The Compliance Gate, 가장 어려운 부분)

EU 내의 건강 관련 콘텐츠는 지뢰밭과 같습니다. IGJ (네덜란드 보건 의료 감독국)는 치료 관련 주장(treatment claims)을 하는 웰니스 사이트들에 정기적으로 벌금을 부과합니다. MDR (의료기기 규정)은 진단 조언처럼 들리는 모든 것을 규제합니다. 그래서 저는 엄격한 게이트를 구축했습니다:

const complianceResult = await runComplianceCheck(sourceText);
const isSafe = complianceResult.verdict === "SAFE";

...

컴플라이언스 체크 (Compliance check)는 Claude를 사용하여 선별된 규칙 세트에 따라 평가를 수행합니다: 진단 주장 금지, 치료 명령 금지, 완치 관련 언어 사용 금지, 약물 중단 권고 금지. 판정 결과는 SAFE / WARN / BLOCK으로 나뉩니다. 오직 SAFE 판정을 받은 콘텐츠만 자동 발행(auto-publish) 단계로 진행됩니다.

이는 특정 기능, 즉 제휴 링크 (affiliate links)와 관련하여 매우 중요합니다. 저는 100% SAFE 판정을 받은 기사에만 제휴 링크를 삽입합니다. 컴플라이언스 검사를 통과하지 못한 모든 콘텐츠는 수동 검토 (manual review)로 넘어갑니다. 공개 사항(disclosure)은 명시적입니다:

Wat je hierboven leest, is gebaseerd op peer-reviewed wetenschap en officiële gezondheidsrapporten. Wij noemen supplementen en bloedtests alleen op basis van wetenschappelijk bewijs.

기만보다는 투명성입니다. 저는 이 부분에서 제 자신의 설계에 반대해야 했습니다. AI 생성물임을 단순히 숨기고 싶은 유혹은 실제로 존재하기 때문입니다. 하지만 그것은 제가 넘지 않을 선을 넘는 일입니다.

비용 절감 (리팩토링 한 번으로 90% 절감)

몇 주 동안 운영한 후 청구서를 확인했습니다. 독자들이 각각 30초 동안 읽는 콘텐츠를 만드는 데 월 180유로가 들고 있었습니다. 최적화할 시간입니다.

각각 독립적인 세 가지 변경 사항은 다음과 같습니다:

구성 요소이전현재절감액
LLMGPT-4o-miniClaude HaikuLLM 비용 90% 절감
...

LLM 교체가 가장 큰 승리였습니다. Claude Haiku는 긴 형태의 네덜란드어 콘텐츠를 작성할 때 GPT-4o-mini보다 더 자연스럽게 글을 씁니다. 저는 더 저렴한 모델을 사용하면 결과물의 품질이 떨어질 것이라고 가정했습니다. 하지만 그렇지 않았습니다. 결과물이 달라질 뿐이며, 기술적이면서도 친근한 건강 콘텐츠의 경우 Haiku가 승리합니다.

이미지 교체 또한 똑같이 놀라웠습니다. Stability AI의 stable-diffusion-3-large는 Flux 비용의 30%만으로 Flux와 80% 수준의 품질을 가진 이미지를 생성합니다. 독자들이 2초 동안 훑어보는 블로그 삽입용 이미지라면, 이 거래는 명확합니다.

주기(Cycle) 빈도 조정은 가장 쉬운 승리였습니다. 주기를 6시간에서 12시간으로 변경해도 청중이 보는 콘텐츠의 신선도에는 영향을 미치지 않았습니다. PubMed 연구 결과가 6시간 만에 구식이 되지는 않으니까요.

최종 비용: 월 €12-20. 품질은 동일합니다. 파이프라인도 동일합니다. 규정 준수(Compliance)도 동일합니다.

Illustratie bij How I Built a Health-Content Autopilot for €12/Month

자동 신디케이션 (Auto-Syndication): 하나의 소스, 세 개의 플랫폼

블로그가 생성되어 longevityai.nl에 게시되면, 시스템은 해당 글에 기술 태그(technical tag)가 있는지 확인합니다. 태그가 있다면 Hashnode와 Dev.to로 자동 신디케이션(Auto-syndicates)됩니다:

if (lang === "en" && hasTechnicalTag(blog.tagsCsv)) {
  await Promise.all([
    publishToHashnode({ ... }),
...

canonical_url 파라미터가 매우 중요합니다. 이는 Google에 longevityai.nl이 원본 소스임을 알려줍니다. 중복 콘텐츠 페널티를 방지할 수 있습니다. 신디케이션된 복사본들은 재시도 시 중복 게시를 방지하기 위해 social_posts 테이블에서 추적됩니다.

지금 여러분이 읽고 있는 이 블로그요? 원래 longevityai.nl을 위해 작성되었습니다. 정확히 이 파이프라인을 통해 Hashnode와 Dev.to에 자동으로 게시되었습니다.

교훈 (Lessons Learned)

1. 규정 준수(Compliance)가 해자(Moat)입니다. 누구나 RSS 피드를 스크래핑하고 문장을 재구성할 수 있습니다. 하지만 결과물에 대해 IGJ 감사를 통과할 수 있는 사람은 거의 없습니다. 먼저 관문(Gate)을 구축하십시오.

2. 더 저렴한 모델이 종종 더 자연스럽게 글을 씁니다. Haiku는 GPT-4o-mini보다 기업 특유의 미사여구(fluff)가 적은 네덜란드어 건강 콘텐츠를 작성합니다. 가정하기 전에 먼저 테스트하십시오.

3. 중복 제거(Deduplication)는 2단계로 이루어지지 않으면 실패합니다. URL 해시(URL-hash) + DB 쿼리 확인이 필요합니다. 동일한 기사가 여러 소스를 통해 동일한 파이프라인에 유입될 수 있습니다.

4. 숨기는 것보다 표준 URL(Canonical URLs)이 더 낫습니다. canonical_url을 사용하여 공개적으로 신디케이션(Syndicate)하십시오. AI 생성을 숨기는 것은 윤리적 선을 넘는 행위이며, Google의 2024년 이후 가이드라인은 더 이상 투명한 AI 콘텐츠에 불이익을 주지 않습니다.

5. 실행 후 잊어버리는 방식(Fire-and-forget)의 신디케이션. Hashnode/Dev.to에서의 실패가 메인 발행 흐름을 끊어서는 안 됩니다. try/catch로 감싸고, 경고를 로그로 남기되, 절대 시스템이 충돌(crash)하게 두지 마십시오.

다음에 구축할 것들

  • LinkedIn 신디케이션 (API 승인 대기 중)
  • 건강 콘텐츠 독자를 위한 Medium 폴백(fallback) (기술 분야에만 국한되지 않음)
  • 내 연구실/RAG가 전문성을 가진 분야에서만 크론(cron)이 콘텐츠를 생성하도록 하는 토픽 클러스터링 (Topic clustering)
  • 지난 7일간의 새로운 블로그를 기반으로 자동 생성되는 주간 요약 이메일 (Weekly digest emails)

핵심 통찰: 콘텐츠 양으로 경쟁하려 하지 마십시오. 각 콘텐츠 뒤에 있는 파이프라인의 깊이로 경쟁하십시오. 품질 관문(Quality gates), 투명한 출처, 윤리적인 신디케이션. 오토파일럿(Autopilot)은 더 많은 블로그를 만드는 것이 목적이 아닙니다. 모든 블로그가 방어 가능(defensible)하도록 만드는 것이 목적입니다.

이 기사는 원래 Longevity AI에 게시되었습니다. 전체 문맥, 참고 문헌 및 실제 작동 중인 News Radar를 확인하려면 출처를 방문하십시오.

이 기사는 원래 Longevity AI에 게시되었습니다. 전체 문맥, 참고 문헌 및 토론을 확인하려면 출처를 방문하십시오.

AI 자동 생성 콘텐츠

본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.

원문 바로가기
0

댓글

0