
Gemini 2.5 Flash로 초고속·고품질 일본어 콘텐츠를 생성하는 프롬프트 설계 패턴 〜AI 오운드 미디어 18개 사이트를 자동 운영
요약
Gemini 2.5 Flash와 Next.js를 활용하여 18개 언어 사이트의 콘텐츠를 자동 생성하는 프롬프트 설계 패턴을 소개합니다. 태스크 분할과 구체적인 제약 조건을 통해 고품질의 SEO 최적화 기사를 대량 생산하는 실전 전략을 다룹니다.
핵심 포인트
- Gemini 2.5 Flash의 빠른 속도와 저렴한 비용을 활용한 대량 콘텐츠 생산
- 역할 부여, 출력 형식 지정, 제약 조건 설정을 통한 프롬프트 품질 향상
- 타이틀, 헤드라인, 본문을 단계별로 생성하는 파이프라인 구축 방식
- Next.js, Gemini API, Vercel Cron을 조합한 자동 운영 아키텍처
안녕하세요! Futuristic Imagination LLC 대표 사토 타쿠야입니다.
저희 회사는 현재 Next.js와 Gemini API, 그리고 Vercel Cron을 조합하여 AI 오운드 미디어(Owned Media)를 18개 사이트, 9개 언어로 자동 운영하고 있습니다. 덕분에 연간 6,570개의 기사를 자동 생성하고 있으며, 이 압도적인 물량의 이면에는 Gemini 2.5 Flash를 최대한 활용한 프롬프트 설계의 지견이 가득 담겨 있습니다.
"AI로 기사를 생성하면 품질이 어때?"라고 의문을 갖는 분도 계시겠지만, Gemini 2.5 Flash는 빠르고 정확하며, 적절한 프롬프트를 제공하면 놀라울 정도로 자연스럽고 SEO(검색 엔진 최적화)에도 강한 일본어 콘텐츠를 생성해 줍니다.
이번에는 그 "비법 소스"라고 할 수 있는 프롬프트 설계 패턴과, 실제로 제가 어떻게 구현하고 있는지를 코드를 곁들여 철저히 해설하겠습니다.
이 글을 읽으면 AI를 통한 콘텐츠 생성으로 소모되고 있는 사람, 고품질의 기사를 확장 가능하게(Scalable) 만들고 싶어 하는 사람의 고민을 해결할 수 있을 것입니다.
- Gemini 2.5 Flash가 일본어 콘텐츠 생성에 최적인 이유
- AI 생성 콘텐츠의 품질을 최대화하는 프롬프트 설계의 기본 원칙
【실전!】 구체적인 프롬프트 템플릿과 TypeScript를 이용한 구현 예시 - 타이틀·헤드라인·본문·결론을 자동 생성하는 일련의 파이프라인 구축 힌트
- Next.js와 Gemini API를 조합한 자동 운영 전략
LLM(대규모 언어 모델)을 사용한 콘텐츠 생성에 있어 모델 선택은 매우 중요합니다. 지금까지 다양한 모델을 시도해 왔지만, Gemini 2.5 Flash는 일본어 콘텐츠 생성에 있어 현재 가장 가성비가 뛰어나다고 느끼고 있습니다.
"Flash"라는 이름이 나타내듯, 그 응답 속도는 경이적입니다. 저처럼 대량의 콘텐츠를 생성하는 케이스에서는 이러한 고속성이 필수입니다. Vercel Cron으로 하루에 수백 개의 기사를 생성하게 되면, 모델의 응답 속도가 조금이라도 늦어질 경우 전체 스루풋(Throughput)에 큰 영향을 미칩니다.
Gemini 2.5 Flash는 복잡한 지시나 뉘앙스도 비교적 정확하게 이해하며 자연스러운 일본어를 생성해 줍니다. 특히 정형화된 기사 구성이나 SEO 키워드를 포함할 때도 부자연스러움이 적어, 사용자가 읽어도 위화감이 없는 문장을 출력해 주는 것이 강점입니다. 물론 완벽하지는 않기에 후술할 프롬프트 설계로 보완해 나갑니다.
수많은 기사를 생성하는 데 있어 비용은 무시할 수 없습니다. Gemini 2.5 Flash는 성능 대비 매우 저렴한 비용으로 이용할 수 있기 때문에, 대량 생산의 기반으로서 최적의 선택지가 됩니다.
"프롬프트 엔지니어링(Prompt Engineering)"이라고 하면 어렵게 들릴 수도 있지만, 제가 실천하고 있는 것은 매우 단순합니다. 중요한 것은 AI에게 "무엇을, 어떻게, 어디까지" 해주길 원하는지를 명확하게 전달하는 것입니다.
AI에게 "당신은 전문가입니다", "최고의 기사를 작성해 주세요"와 같은 구체적인 역할과 목적을 부여함으로써 AI의 출력 품질은 격하게 향상됩니다.
JSON 형식, Markdown 형식, 특정 태그의 사용 등 AI가 출력할 형식을 구체적으로 지시합니다. 이를 통해 후속 처리(파싱이나 배포)가 용이해집니다.
글자 수, 키워드 필수 사용, 피해야 할 표현, 저작권에 대한 배려 등 출력에 관한 제약이나 규칙을 명확하게 지시합니다. 저희 회사는 저작권, 특히 JASRAC 관리 악곡의 취급 등에 엄격하여 프롬프트로 회피책을 지시하고 있습니다.
갑자기 "기사 전체를 생성해!"라고 지시하는 것이 아니라, "먼저 타이틀을 생성", "다음으로 헤드라인을 생성", "마지막으로 본문을 생성"하는 식으로 태스크를 분할하여 단계적으로 실행하게 합니다. 이를 통해 각 단계에서 품질을 체크하기 쉬워지며, 문제 발생 시 디버깅도 용이합니다. 제가 "이거 혹시 ~가 아닐까?", "~하지 않을까?"라며 항상 탐구하고 있는 것이 바로 이 단계적인 개선점입니다.
만약 가능하다면 이상적인 출력 예시를 몇 가지 프롬프트에 포함함으로써, AI는 더욱 기대에 부응하는 출력을 생성하기 쉬워집니다.
그럼 실제로 제가 Next.js의 백엔드(Node.js/TypeScript)에서 사용하고 있는 프롬프트와 그것을 호출하는 코드를 소개하겠습니다. 이번에는 기사의 타이틀, 헤드라인 구성, 그리고 본문을 단계적으로 생성하는 예시입니다.
먼저 사용자가 흥미를 가질 만한, SEO에 강하면서도 클릭하고 싶어지는 타이틀을 생성합니다.
이로써 토픽과 키워드로부터 적절한 기사 제목을 자동 생성할 수 있습니다. 저의 AI 오운드 미디어에서는 여기서 생성된 제목 중, 과거 성과 데이터(CTR 등)를 기반으로 최적의 것을 선택하는 로직을 결합하고 있습니다.
다음으로, 선택된 제목과 키워드를 기반으로 기사 전체 구조가 될 목차 구성을 생성합니다.
// src/lib/prompts/headingGeneratorPrompt.ts
export const createHeadingGeneratorPrompt = (
title: string,
...
구현 예시 (Next.js API Route)
// src/app/api/generate-title/route.ts
import { NextResponse } from 'next/server';
import { GoogleGenerativeAI } from '@google/generative-ai';
...
```json\n|
```/g, '')) as { title: string }[];
return NextResponse.json({ titles });
} catch (error) {
console.error('Error generating title:', error);
...```
이로써 토픽과 키워드로부터 적절한 기사 제목을 자동 생성할 수 있습니다. 저의 AI 오운드 미디어에서는 여기서 생성된 제목 중, 과거 성과 데이터(CTR 등)를 기반으로 최적의 것을 선택하는 로직을 결합하고 있습니다.
다음으로, 선택된 제목과 키워드를 기반으로 기사 전체 구조가 될 목차 구성을 생성합니다.
// src/lib/prompts/headingGeneratorPrompt.ts
export const createHeadingGeneratorPrompt = (
title: string,
...
**구현 예시 (Next.js API Route)**
이것은 `generate-title`과 유사한 구조입니다. `title`과 `keywords`를 POST 요청으로 받아 Gemini 2.5 Flash로 처리합니다.
// src/app/api/generate-headings/route.ts
import { NextResponse } from 'next/server';
import { GoogleGenerativeAI } from '@google/generative-ai';
...
```/g, '')) as { h2: string; h3: string[] }[];
return NextResponse.json({ headings });
} catch (error) {
console.error('Error generating headings:', error);
...```
드디어 본문입니다. 여기가 가장 중요하며, 저의 '자사 실증 우선(自社実証ファースト)'이라는 생각이 살아나는 부분입니다. 갑자기 기사 전체를 생성하게 하면 일관성이 떨어지거나 장황해지기 쉽습니다. 그래서 **각 H3 제목별로 본문을 생성하는** 접근 방식을 채택합니다.
이를 통해 각 섹션의 품질 관리가 용이해지고, 필요에 따라 재생성하거나 특정 정보를 추가하는 등 유연한 대응이 가능해집니다.
// src/lib/prompts/contentGeneratorPrompt.ts
export const createContentGeneratorPrompt = (
title: string,
...
**구현 예시 (Next.js API Route)**
이 엔드포인트는 각 H3 제목별로 호출됩니다.
// src/app/api/generate-content-section/route.ts
import { NextResponse } from 'next/server';
import { GoogleGenerativeAI } from '@google/generativeAI';
...
이러한 API들을 호출하여 기사 전체를 구성하는 파이프라인은 다음과 같습니다.
- **토픽과 키워드로부터 제목 생성** (`generate-title`을 호출)
- **선정된 제목과 키워드로부터 목차 구성 생성** (`generate-headings`를 호출)
- **생성된 목차 구성을 반복하며, 각 H3 섹션의 본문 생성** (`generate-content-section`을 H3 개수만큼 호출) - 이때, `context`
인수를 사용하여 이미 생성된 섹션 내용을 전달함으로써, 기사 전체의 일관성을 유지하기 쉽게 합니다.
- 이때,
-
**서문과 결론을 생성**(이는 별도의 프롬프트로, 이미 생성된 제목과 목차, 본문 개요를 참고하여 생성합니다) **생성된 모든 콘텐츠를 결합하여 최종적인 Markdown 형식의 기사를 작성****Next.js의 ISR (Incremental Static Regeneration)이나 Vercel Deploy Hook을 사용하여 배포**
제 시스템에서는 이를 Vercel Cron으로 정기적으로 실행하여, 매일 새로운 기사가 자동으로 생성 및 공개되는 구조를 구축하고 있습니다. "이거 혹시 ~가 아닐까?", "~할 수 없을까?"라며 항상 새로운 기술이나 효율화의 여지를 찾고 있기 때문에, 이 파이프라인도 매일 개선을 더하고 있습니다. 예를 들어, 자동 퀴즈 생성이나 Google Search Console API와 연동한 자동 리라이트 (Rewrite) 파이프라인도 구축하고 있어, 순위가 낮은 기사는 Gemini 2.5 Flash로 자동 리라이트되어 재인덱싱(Re-indexing) 요청까지 완결됩니다.
Gemini 2.5 Flash는 그 속도와 일본어 생성 능력의 높이 덕분에, AI를 활용한 콘텐츠 자동 생성에 있어 매우 강력한 도구가 됩니다. 중요한 것은 AI의 특성을 이해하고, 이번에 소개한 것과 같이 단계적이고 명확한 프롬프트 설계를 수행하는 것입니다.
제가 목표로 하는 것은 "극한까지 자동화된 고생산성 에코시스템의 구축"이며, 그 최전선에서 Next.js와 Gemini API를 구사하며 매일 진화시키고 있습니다. 이 기술 스택과 프롬프트 설계 노하우를 결합함으로써, 소수 인원(혹은 저 혼자)으로도 압도적인 양의 고품질 콘텐츠를 생성하고 사업을 스케일 (Scale) 시키는 것이 가능합니다.
"우리 스스로가 헤비 유저로서 능숙하게 다루는 상태를 만들지 않으면 고객에게 먹히지 않는다"라는 철학 아래, 앞으로도 최신 AI 기술과 웹 개발을 융합하여 미래를 개척해 나가겠습니다.
이번에 소개한 것과 같은 시스템 구축 대행도 진행하고 있으니, 관심이 있으시다면 꼭 문의해 주세요.
→ https://www.futuristicimagination.co.jp/service/
또한, AI와 커리어, 부업에 관한 Shorts 영상을 매일 배포 중입니다. 꼭 시청해 주세요!
→ https://www.youtube.com/channel/UCFobIbWz1KDKaIdDqXpTPAA
AI 자동 생성 콘텐츠
본 콘텐츠는 Qiita AI의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기