핵심 요약 (TL;DR)

들어가며: 로컬 AI로 글을 쓰면 겪는 진짜 문제

API 비용을 아끼려고 로컬 모델(qwen2.5:7b 같은)로 기술 블로그 초안을 자동화해 본 적 있다면, 한 가지 벽을 만났을 것이다. 생성 자체는 쉽다. 프로젝트를 죽이는 건 사실 환각(hallucination)이다.

예를 들어 모델에게 llama.cpp 가이드를 쓰라고 하면 깔끔하고 자신감 넘치는 문장으로 이렇게 쓴다 — "GitHub 스타 3,450개". 실제는 114,288개. 33배 차이다. 저장소 주소도 존재하지 않는 llama-cpp/llama.cpp로, 이미지는 페이지일 뿐인 /blob/ URL로 — 라이브 글에서 깨진 이미지가 된다.

이런 건 독자(나 경쟁자)가 캡처해서 신뢰도를 깎는 정확히 그런 종류다. 그리고 "프롬프트를 더 세게" 써도 안 고쳐진다 — 모델은 거짓말하는 게 아니라 진짜로 그 사실을 모른다.

왜 7B 모델은 사실을 지어내는가

언어 모델은 다음에 올 가장 그럴듯한 토큰을 예측한다. "stars"라는 단어 뒤에는 숫자가 오는 게 그럴듯하니, 모델은 그럴듯한 숫자를 만들어낸다. 그게 진짜인지 확인할 방법이 모델 안에는 없다. 작은 모델일수록, 학습 시점 이후의 사실일수록 이 문제는 심해진다.

해결책: 사실은 코드가, 글은 모델이

이 글의 가장 중요한 한 줄:

모델에게 사실을 묻지 마라. 검증된 사실을 건네고, 배치만 하게 하라.

작업을 둘로 쪼갠다:

  1. 결정론적 코드가 진실을 가져온다 — GitHub API로 진짜 스타/라이선스/저장소/메인테이너를, 모든 이미지 URL에 curl Content-Type 검사를 한다. image/*를 실제로 반환하는 것만 통과하고, /blob/ HTML 페이지는 거부 후 raw.githubusercontent로 교정한다.
  2. 모델은 그 사실 시트로 글을 쓴다 — 사실 시트가 유일한 진실 소스라고 지시받는다. 시트에 없는 건 지어내지 않고 [UNVERIFIED]로 남긴다.

같은 llama.cpp 글을 다시 생성하면 이번엔 114,288 스타, 진짜 ggml-org/llama.cpp, curl로 검증된 이미지만 나온다. 같은 모델이다. 환각이 줄어든 게 아니라 사라졌다 — 모델이 사실을 건드리지 않았으니까.

두 번째 문제: 7B는 짧게 쓴다

7B 모델은 단발 생성에서 약 650단어 천장이 있다. "2,000단어 써줘"라고 하면 물 탄 결과가 나온다. 효과가 있던 해법은 섹션별 생성이다 — 고정된 골격(도입 → 개념 → 작동 원리 → 설치 → 사용법 → 비교 → 한계 → FAQ → 결론)을 따라 각 섹션을 사실 시트와 함께 생성한다. 이어 붙이면 2,000단어와 코드블록 15개를 넘기면서도, 각 섹션이 사실에 묶여 있어 정확도가 끝까지 유지된다.

# 섹션별로 사실 시트를 컨텍스트에 넣고 생성
for section in skeleton:
    prompt = f"FACTS:\n{fact_sheet}\n\nWrite section: {section}"
    body += ollama(prompt)

품질 게이트: 불량은 통과 못 한다

마지막 방어선은 프로그램 품질 게이트다. 단어 수, 코드블록 수, 사실 일치(본문 스타 수가 가져온 스냅샷과 같은가?), 금지 마케팅 단어("revolutionary", "powerful"…), 다국어 동기화(번역본이 원문과 같은 코드블록/숫자/이미지를 유지하는가?)를 검사한다. 실패하면 큰 소리로 실패해서, 오케스트레이터가 재시도하거나 격리한다 — 불량이 발행에 도달하지 않는다.

직접 만들 시간이 없다면

위 파이프라인 전체 — 사실 수집기, 중복 제거기, 섹션별 작성기, 4개 언어 번역기(코드/숫자/URL 고정), 품질 게이트, 이걸 엔드투엔드로 잇는 오케스트레이터 — 를 하나로 패키지하고, 각 조각이 필요한지 설명하는 방법론 문서까지 묶었다.

실제 280편 이상의 사이트에서 검증하며 풀어낸, 수십 시간의 시행착오(/blob-vs-raw 함정, 스냅샷 일관성, 섹션 생성 트릭, 게이트 설계)를 그대로 담았다. "마법처럼 AI가 블로그를 써준다"가 아니라, 로컬 모델을 믿을 수 있게 만드는 지루하지만 신뢰할 수 있는 배관이다.

로컬 LLM이 당신 이름을 걸 만한 콘텐츠를 쓰게 하고 싶다면 — GroundTruth Writer Kit ($29)를 확인해 보라. 당신의 Ollama + qwen2.5:7b 같은 모델 위에서 돌아간다.

함께 보면 좋은 것

Claude Code로 워크플로우를 더 끌어올리고 싶다면, 검증된 스킬 5종을 묶은 Claude Code Skills Bundle ($19)도 함께 보면 좋다. 직접 스킬을 설계하며 쓰는 시간을 아껴 준다.

마무리

로컬 AI로 콘텐츠를 자동화하는 진짜 난관은 생성이 아니라 사실 신뢰성이다. 사실을 코드에게 맡기고, 모델에게는 배치만 시키고, 품질 게이트로 막아라. 그러면 로컬 7B로도 발행 가능한 초안을 — 그럴듯한 쓰레기가 아니라 — 만들 수 있다.

개발 생산성을 끌어올리는 도구

직접 만들 시간을 아끼세요 — 검증된 Claude Code 스킬 번들 + 로컬 AI 글쓰기 자동화 키트.

⚡ Claude Code Skills Bundle ($19) 🛡️ GroundTruth Writer Kit ($29)