블로그 자동화를 꿈꾸며 구글 앱스 스크립트(Google Apps Script)와 Gemini API를 연동해 포스팅 파이프라인을 구축했다. AI가 작성한 글이 시간의 흐름에서 벗어나 어색해지지 않도록 현재 날짜라는 시간적 맥락을 제공하는 것이 필수적이라고 생각했다. 그래서 동적으로 날짜 정보를 생성하여 API 요청 시 함께 전달하는 프롬프트 구조를 설계했다.
하지만 완벽할 것 같았던 이 자동화 시스템은 예상치 못한 복병을 만나며 나에게 깊은 삽질의 경험을 선사했다. 사소한 지시사항 하나가 AI 글쓰기의 자연스러움을 어떻게 완전히 망쳐놓을 수 있는지 뼈저리게 깨달은 과정이었다.
날짜 컨텍스트를 주입했더니 발생한 첫 문장의 참사
최근 작성되어 올라온 글들을 모니터링하다가 깜짝 놀라고 말았다. 자동 생성된 모든 글의 첫 문장이 약속이라도 한 듯이 기계적이고 딱딱한 날짜 문구로 시작하고 있었기 때문이다. 본문 맨 처음에 특정 연도와 월 정보가 강제로 박힌 채 글이 전개되는 아주 황당한 상태였다.
처음 한두 번은 우연인가 싶었지만 새로 생성되는 포스트마다 똑같은 패턴을 반복했다. 독자가 읽기에 너무나도 인위적이고 광고성 자동 생성 글이라는 티가 팍팍 나는 치명적인 결함이었다. 최신 글이라는 느낌을 주기 위해 주입했던 날짜 컨텍스트가 오히려 독이 되어 돌아온 셈이다.
지시어의 오해: '기준으로 작성할 것'의 함정
문제를 해결하기 위해 구글 앱스 스크립트 코드와 Gemini 날짜 프롬프트 템플릿을 정밀하게 분석했다. 원인은 프롬프트 내에 작성해 둔 지시 문구의 애매함에 있었다. 나는 단순히 최신 시점을 참고해서 글의 맥락을 잡으라는 의도로 "현재 연월을 기준으로 작성할 것"이라는 가이드라인을 넣었을 뿐이었다.
하지만 Gemini는 이 '기준으로 작성'하라는 지시를 본문 내에 해당 연월을 직접 명시하여 고정하라는 허가이자 명령으로 잘못 해석한 모양이었다. AI가 단어 하나를 어떻게 오해하고 텍스트로 내뱉을 수 있는지 여실히 보여주는 전형적인 프롬프트 엔지니어링 실패 사례였다.
해결책: 연도만 주입하고 강력한 제약 조건 걸기
문제를 바로잡기 위해 구글 앱스 스크립트의 날짜 주입 방식과 프롬프트 제약 조건을 완전히 전면 수정했다. 단순히 정보를 던져주고 알아서 쓰게 만드는 대신 AI가 날짜 정보를 다룰 때 지켜야 할 엄격한 가이드라인을 다시 세웠다.
- 연도 정보만 주입: 구체적인 월 정보까지 주입하니 문장이 쉽게 고착화되는 경향이 있어 컨텍스트 주입 단계를 연도 단위로만 간소화했다.
- 본문 내 연월 표기 절대 금지: 프롬프트에 "본문 내에 구체적인 연도나 월을 직접적으로 표기하지 말 것"이라는 강력한 네거티브 지시어를 명시했다.
- 자연스러운 상대 표현 유도: 구체적인 날짜 대신 '최근', '요즘', '올해'와 같은 상대적인 시간 표현을 사용해 글을 자연스럽게 풀어내도록 제한했다.
이렇게 수정한 규칙을 내가 자동화에 활용하고 있는 KidStory, 이슈로그, JinsLab 3개 파일의 소스코드에 동일하게 일괄 적용했다. 수정을 마친 후 다시 테스트를 실행해 보니 더 이상 기계적인 날짜 박아넣기 현상은 발생하지 않았고 원하던 자연스럽고 트렌디한 어조의 글이 정상적으로 생성되기 시작했다.
소중한 교훈: AI 글쓰기에는 철저한 금지 조항이 필수다
이번 삽질을 통해 AI 프롬프트 엔지니어링에서 행동을 제한하는 '금지 조항'의 유무가 퀄리티를 가르는 핵심이라는 사실을 다시금 깊이 느꼈다. 인간에게는 너무나 당연히 생략해야 할 상식적인 표현조차도 AI에게는 명확히 짚어 차단하지 않으면 무차별적으로 출력물에 노출될 수 있다.
특히 날짜처럼 민감한 컨텍스트를 제어할 때는 더 정교한 설계가 필요하다. 나와 비슷하게 API를 연동한 블로그 자동화 시스템을 구축하고 있다면 날짜 주입 시 본문 표기 금지와 상대적 표현 유도 규칙을 꼭 함께 포함시켜 불필요한 시행착오를 예방하길 권한다.