CMS 포스트 등록 시 메타데이터를 LLM으로 자동 생성한 경험
목차
CMS 플랫폼에서 포스트를 등록할 때 메타 제목과 메타 설명을 LLM이 자동으로 생성해서 직접 데이터베이스에 저장하도록 해봤다. generate.py에서 LLM 호출로 메타 데이터를 생성한 뒤, admin_db.py의 INSERT 로직에 끼워 넣는 식으로 처리했다.
왜 자동화를 택했는가
처음엔 이게 정말 필요한 일인지 몇 번 고민했다. 메타 제목과 설명은 검색 엔진 최적화(SEO)에서 중요하고, 손으로 정성스럽게 작성한 게 품질 면에서 낫지 않나 싶었기도 했다. 하지만 현실은:
- 콘텐츠가 날마다 들어오면서 매번 같은 패턴의 메타 텍스트를 운영자가 작성하는 건 시간 낭비
- 메타 데이터를 빠뜨리거나 부실하게 작성하는 일이 종종 발생
- 여러 운영자가 작성하면서 톤과 길이가 일관성 없게 튀는 경우도 있었음
그래서 LLM으로 기본값을 생성해두면, 운영자는 필요할 때만 수정하고 대부분은 자동으로 처리할 수 있겠다는 판단을 했다. 완벽한 품질보다 일관성 있는 충분한 수준이 장기적으로 더 나을 것 같았다.
작업 구조: 생성과 저장을 분리했다
| 담당 모듈 | 역할 |
|---|---|
generate.py |
포스트 제목/내용을 받아 LLM 호출, 메타 제목·설명 생성 |
admin_db.py |
INSERT 시점에 generate.py 호출, 반환값을 한 번에 저장 |
처음엔 생성 로직을 admin_db.py에 직접 넣을까도 생각했지만, 결국 분리했다. 이유는:
- 테스트와 디버깅이 쉬워짐 — LLM 생성 부분을 독립적으로 검증 가능
- 재사용 가능 — 나중에 배치 작업이나 다른 플로우에서도
generate.py를 쓸 수 있음 - 책임 분리 — DB 로직과 생성 로직이 섞이지 않으니 코드 이해가 명확함
# 대략적인 패턴 (실제 구현과는 다를 수 있음)
# admin_db.py에서:
generated_meta = generate.create_meta(title=post_title, content=post_content)
insert_post(title=post_title, meta_title=generated_meta['title'],
meta_desc=generated_meta['desc'], ...)
팀 입장에서 본 트레이드오프
이 기능을 추가하면서 고민한 부분:
장점:
- 운영자 부담 감소 (일관된 기본값 제공)
- 콘텐츠 발행 속도 개선
- 메타 데이터 누락 방지
주의할 점:
- LLM 응답 시간이 INSERT 성능에 영향을 줄 수 있음 (동기 처리 시)
- LLM 오류 발생 시 전체 포스트 등록이 실패할 수도 있음
- 생성된 텍스트가 항상 품질 좋을 순 없음 (편집이 필요할 수 있음)
이런 리스크를 감수할 때는 항상 팀과 함께 기준을 정하는 게 중요하다. "메타 데이터 자동화가 가치 있는가"에 대해 명확한 합의가 있어야, 나중에 문제가 생겼을 때 "왜 이런 기능을 넣었나?" 같은 질문이 나오지 않는다.
배운 것
비슷한 자동화 작업을 할 때 다시 한번 생각해볼 점:
- 동기 vs 비동기: 실시간 성능이 중요하면 생성을 큐에 밀어두고 배경에서 처리하는 것도 검토할 가치가 있음
- 폴백 전략: LLM 호출 실패 시 기본값(제목 일부 + 자동 설명)을 제공할지, 사용자가 수동 입력하도록 할지 결정 필요
- 품질 모니터링: 정기적으로 생성된 메타 데이터를 샘플링해서 실제로 쓸 만한 수준인지 확인하는 게 좋음
LLM을 프로덕션에 쓸 때는 "얼마나 정확한가"보다 "장애 가능성은 얼마나 대비했는가"가 더 중요한 경우가 많다.
🛒 이 글과 어울리는 추천 상품
*위 링크는 쿠팡파트너스 활동의 일환이며, 일정액의 수수료를 제공받을 수 있습니다.
댓글 0
첫 댓글 달아줘.