2Slides Logo
연구에서 프레젠테이션까지 파이프라인: Tavily, LLM, Slides API (2026)
2Slides Team
13 min read

연구에서 발표까지 파이프라인: Tavily, LLM, Slides API (2026)

연구에서 발표까지 파이프라인은 주제를 입력받아 출처가 명시된 슬라이드 데크를 출력합니다. 검색 API(Tavily 또는 Exa)가 10~20개의 출처를 수집하고, LLM이 번호가 매겨진 인용과 함께 12슬라이드 분량의 요약을 작성하며, 2Slides API가 요약을 데크로 변환합니다: 편집 가능한 PPTX는 POST /api/v1/slides/generate를 호출하며 슬라이드당 10 크레딧(12슬라이드 기준 120 크레딧, 약 $0.30)이 소요되고, 이미지 디자인 슬라이드는 create-pdf-slides를 호출하며 슬라이드당 10 + 100 크레딧이 듭니다. 이 파이프라인은 매주 동일한 데크를 배포하는 컨설팅 팀, 애널리스트, 연구 운영에 적합합니다.

핵심 요약

  • 12슬라이드 Fast PPT 데크는 120 크레딧, $5 크레딧 팩 기준 약 $0.30이며, 이미지 디자인 버전은 1,210 크레딧, 약 $3.03입니다.
  • 파이프라인은 4단계 호출로 구성됩니다: 검색 API 호출 1회, LLM 호출 1회, GET /api/v1/themes/search, 그리고 POST /api/v1/slides/generate.
  • 모든 2Slides 응답은 { success, data: { jobId, status, downloadUrl } } 형태로 래핑되어 제출과 상태 조회를 하나의 파서로 처리할 수 있습니다.
  • 속도 제한은 키당 분당 6회 요청이며, Fast PPT 데크는 동기 모드에서 약 30초 내에 반환됩니다.
  • 인용은 LLM 프롬프트가 번호가 매겨진 출처 목록을 강제하고 허구의 수치를 금지할 때만 유지됩니다; 데크 생성기는 내용을 포맷할 뿐 사실 확인은 하지 않습니다.

대상 사용자

컨설팅 업무, 연구 데스크 또는 콘텐츠 운영을 하며 "유럽 배터리 재활용 시장에 관한 간단한 데크"를 며칠마다 요청받는 분들께 적합합니다. 연구에 1시간, 데크 작성에 2시간이 걸리며 매번 동일한 12슬라이드(요약, 시장 규모, 주요 업체, 트렌드, 위험, 권고, 출처)로 구성됩니다. 이미 n8n 인스턴스나 Python 스케줄러를 보유 중이라면 추가 인프라 없이 이 레시피를 사용할 수 있습니다.

맞춤 분석이 필요한 고객 최종 산출물에는 이 레시피를 사용하지 마십시오. 몇 분 내에 출처가 명시된 초안을 생성하며, 사람이 출처를 검토하고 내용을 결정해야 합니다.

전체 워크플로우 개요

단계도구수행 내용2Slides 엔드포인트 / 크레딧
1. 트리거n8n 스케줄 또는 폼, cron, CLI 인자주제 문자열이 파이프라인에 입력됨없음
2. 검색Tavily /search 또는 Exa /search제목과 텍스트 스니펫이 포함된 10~20개 URL 수집없음
3. 요약OpenAI 또는 Claude번호가 매겨진 통계가 포함된 12슬라이드 개요 및 출처 목록 작성없음
4. 테마GET /api/v1/themes/search?query=consulting후보 themeId 값 반환무료, 분당 6회 요청
5. 데크 생성POST /api/v1/slides/generate (또는 create-pdf-slides)요약을 PPTX(또는 PDF + 페이지 이미지)로 변환슬라이드당 10 크레딧 (또는 10 + 100 크레딧/슬라이드)
6. 상태 조회GET /api/v1/jobs/{jobId} 5~10초 간격 호출status: "success" 대기무료, 분당 10회 요청
7. 전달Google Drive 업로드, Slack 메시지팀에 링크와 출처 파일 전달없음

1단계: 연구 API로 10~20개 출처 수집

데크 품질은 출처에 달려 있으므로 이 단계에 노력을 집중하세요. Tavily는 LLM이 인용할 수 있도록 페이지 내용을 추출해 결과를 반환합니다. Exa도 의미 기반 검색으로 동일한 기능을 제공합니다. 주제가 시의성이 있을 경우 최근 12개월 이내 결과로 제한하고 10~20개 결과를 요청하세요.

각 결과를 { id, url, title, published, snippet } 형태로 저장하고 id는 1부터 번호를 매기세요. 이 id가 슬라이드 내 인용 표시가 되므로 실행 내내 동일한 배열을 유지해야 합니다.

curl -s https://api.tavily.com/search \ -H "Content-Type: application/json" \ -d '{ "api_key": "'"$TAVILY_API_KEY"'", "query": "European battery recycling market size 2026", "search_depth": "advanced", "max_results": 15, "include_raw_content": false }'

2단계: 인용과 함께 12슬라이드 요약 작성 (OpenAI 또는 Claude)

프롬프트는 세 가지 역할을 합니다: 슬라이드 구조 고정, 모든 숫자에 인용 id 부여 강제, 출처에 없는 수치 금지. JSON이 아닌 일반 텍스트를 요청하세요. 텍스트가 2Slides 호출의 userInput에 바로 들어가기 때문입니다.

대부분 컨설팅 요약에 적합한 구조는 12슬라이드: 1 제목, 2 요약, 3 시장 규모, 45 주요 업체, 67 트렌드, 89 위험, 1011 권고, 12 출처. 슬라이드당 3~5개 불릿, Fast PPT 템플릿은 이 밀도에 맞춰 설계되었습니다.

You are a research analyst. Using ONLY the numbered sources below, write a 12-slide briefing on: {topic}. Slides: 1 Title, 2 Executive summary, 3 Market size, 4-5 Key players, 6-7 Trends, 8-9 Risks, 10-11 Recommendations, 12 Sources. Rules: - Every number, percentage or date must end with its source id in brackets, e.g. "EUR 4.2B by 2030 [3]". - If the sources do not contain a figure, write "no reliable figure found" instead of estimating. - Slide 12 lists every cited id as "[n] Title, Publisher, URL". - 3 to 5 bullets per slide, each under 20 words. Start each slide with "Slide N: <heading>". Sources: {sources}

3단계: 컨설팅 스타일 테마 선택

Fast PPT 데크는 디자인된 템플릿으로 만들어지며, themeId가 외형을 결정합니다. 라이브러리에서 "consulting" 또는 "corporate"로 한 번 검색해 1~2개의 id를 선택하고 파이프라인에 하드코딩하세요. 매 실행마다 검색하면 속도 제한 예산만 소모됩니다.

curl -s "https://2slides.com/api/v1/themes/search?query=consulting&limit=5" \ -H "Authorization: Bearer $SLIDES_API_KEY"

응답은 각 테마의 themeId, 이름, 미리보기를 나열합니다. 시각적으로 탐색하려면 Templates Hub에서 1,500개 이상의 템플릿을 확인할 수 있습니다.

2Slides Templates Hub for choosing a consulting-style theme
그림 1: Templates Hub, 컨설팅 또는 기업 스타일 테마를 선택하고 API 호출용 themeId를 복사하는 화면.

4단계: 2Slides API로 데크 생성

두 가지 경로가 있습니다. 편집 가능한 PPTX를 원하면 generate를 호출하세요. 기본값은 동기 모드이며, 12슬라이드 데크는 약 30초 내에 downloadUrl과 함께 한 번에 반환됩니다. 여러 주제를 일괄 처리할 때는 mode: "async"를 전달하고 상태를 폴링하세요.

curl -s -X POST https://2slides.com/api/v1/slides/generate \ -H "Authorization: Bearer $SLIDES_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "userInput": "Slide 1: European Battery Recycling Market 2026\n...\nSlide 12: Sources\n[1] ...", "themeId": "THEME_ID_FROM_SEARCH", "responseLanguage": "English", "mode": "async" }'

응답:

{ "success": true, "data": { "jobId": "job_9f3a...", "status": "pending" } }

프리미엄 이미지 디자인 버전(PDF 및 페이지별 이미지)은 동일한 요약으로 create-pdf-slides를 호출하세요. 요약 슬라이드 수에 맞춰 page: 12를 설정하거나, 플래너가 결정하도록 page: 0으로 설정할 수 있습니다.

curl -s -X POST https://2slides.com/api/v1/slides/create-pdf-slides \ -H "Authorization: Bearer $SLIDES_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "userInput": "Slide 1: European Battery Recycling Market 2026\n...", "designStyle": "consulting deck, navy and white, dense data slides, one chart per slide", "aspectRatio": "16:9", "resolution": "2K", "page": 12, "contentDetail": "standard", "responseLanguage": "English" }'

두 경로 모두 동일한 응답 구조를 반환합니다. GET https://2slides.com/api/v1/jobs/{jobId}를 5~10초 간격으로 폴링하여 data.statussuccess 또는 failed가 될 때까지 기다린 후 data.downloadUrl을 가져오세요.

5단계: 구현 A, n8n 워크플로우 (Tavily n8n 발표)

n8n은 비개발자가 폼에서 트리거할 수 있는 예약된 Tavily n8n 발표 작업을 가장 빠르게 만드는 방법입니다. 7개의 표준 노드로 충분합니다.

  • Schedule Trigger (주간) 또는 단일 "topic" 필드가 있는 Form Trigger.
  • 주제와 max_results: 15를 포함해 Tavily /searchHTTP Request.
  • 2단계 프롬프트를 포함한 OpenAI 노드 (또는 Claude HTTP 요청); 번호가 매겨진 출처를 메시지에 전달.
  • LLM 텍스트에서 { userInput, themeId, responseLanguage: "English", mode: "async" }를 조립하는 Code 노드.
  • POST https://2slides.com/api/v1/slides/generate에 헤더 Authorization: Bearer {{ $env.SLIDES_API_KEY }}를 포함한 HTTP Request. 키는 n8n 자격증명에 보관, 노드 본문에 절대 넣지 말 것.
  • Wait 노드(10초), 이후 GET /api/v1/jobs/{{ $json.data.jobId }}에 대한 HTTP RequestIF 노드: success면 계속, pending 또는 processing이면 Wait로 루프, failed면 Slack에 오류 전송.
  • data.downloadUrl을 바이너리로 다운로드하는 HTTP RequestGoogle Drive 업로드Slack 메시지로 링크와 주제 전달.

1단계에서 생성한 sources.json에 대해 두 번째 Google Drive 업로드를 추가하세요; 검토자는 출처 슬라이드뿐 아니라 전체 스니펫을 원합니다. 자격증명과 오류 분기 처리법은 n8n + 2Slides: 발표 워크플로우 자동화를 참고하세요.

6단계: 구현 B, 단일 Python 스크립트

cron 작업을 선호하는 팀에는 한 개의 Python 파일로 동일 작업을 수행할 수 있습니다. 이 버전은 Tavily와 OpenAI를 사용하며, 한 함수만 바꾸면 Exa 또는 Claude로 교체 가능합니다.

import os, time, json, requests TAVILY = os.environ["TAVILY_API_KEY"] OPENAI = os.environ["OPENAI_API_KEY"] SLIDES = os.environ["SLIDES_API_KEY"] BASE = "https://2slides.com/api/v1" H = {"Authorization": f"Bearer {SLIDES}", "Content-Type": "application/json"} def search(topic, n=15): r = requests.post("https://api.tavily.com/search", json={ "api_key": TAVILY, "query": topic, "search_depth": "advanced", "max_results": n}) r.raise_for_status() return [{"id": i + 1, "url": s["url"], "title": s["title"], "snippet": s["content"]} for i, s in enumerate(r.json()["results"])] def write_brief(topic, sources): src = "\n".join(f"[{s['id']}] {s['title']} | {s['url']}\n{s['snippet']}" for s in sources) prompt = open("brief_prompt.txt").read().format(topic=topic, sources=src) r = requests.post("https://api.openai.com/v1/chat/completions", headers={"Authorization": f"Bearer {OPENAI}"}, json={"model": "gpt-4.1", "messages": [{"role": "user", "content": prompt}], "temperature": 0.2}) r.raise_for_status() return r.json()["choices"][0]["message"]["content"] def pick_theme(query="consulting"): r = requests.get(f"{BASE}/themes/search", headers=H, params={"query": query, "limit": 5}) r.raise_for_status() return r.json()["data"]["themes"][0]["themeId"] def generate_deck(brief, theme_id, language="English"): r = requests.post(f"{BASE}/slides/generate", headers=H, json={ "userInput": brief, "themeId": theme_id, "responseLanguage": language, "mode": "async"}) r.raise_for_status() body = r.json() assert body["success"], body return body["data"]["jobId"] def wait_for(job_id, every=8, timeout=600): start = time.time() while time.time() - start < timeout: d = requests.get(f"{BASE}/jobs/{job_id}", headers=H).json()["data"] if d["status"] == "success": return d["downloadUrl"] if d["status"] == "failed": raise RuntimeError(f"job {job_id} failed: {d}") time.sleep(every) raise TimeoutError(job_id) if __name__ == "__main__": topic = "European battery recycling market 2026" sources = search(topic) brief = write_brief(topic, sources) url = wait_for(generate_deck(brief, pick_theme())) slug = topic.lower().replace(" ", "-") open(f"{slug}.pptx", "wb").write(requests.get(url).content) json.dump({"topic": topic, "sources": sources, "brief": brief}, open(f"{slug}.sources.json", "w"), indent=2)

스크립트는 실행당 두 개의 파일을 생성합니다: PPTX와 출처 목록 및 요약 텍스트가 포함된 .sources.json. JSON은 파트너가 3슬라이드 수치 출처를 묻는 경우 감사 추적 자료가 됩니다. 대량 처리 시 분당 6회 이하 제출을 유지하세요.

인용 위생: 모든 숫자에 출처 표시

자동 컨설팅 데크 생성이 실패하는 예측 가능한 원인은 출처에 없는 자신만만한 숫자가 3슬라이드에 등장하는 경우입니다. 데크 생성기는 받은 내용을 포맷만 하므로, 제어는 LLM 단계와 이후 검증에 있습니다.

  • 표시 형식 강제. 모든 수치는 [n]으로 끝나야 합니다. 숫자 뒤에 "%"나 "B", "M", 연도가 나오고 같은 줄에 괄호 안 id가 없으면 요약을 거부하고 LLM 호출을 재실행하세요.
  • 출처 배열과 id 검증. 출처가 6개인데 [7]이 있으면 모델이 허구의 참조를 만든 것입니다. 실행을 실패 처리하세요.
  • 출처 슬라이드 유지. 12슬라이드에 [n] 제목, 출판사, URL을 모두 나열합니다. 검토자가 가장 먼저 보는 슬라이드입니다.
  • 동반 파일 저장. .sources.json(또는 n8n의 Drive 업로드)은 모델이 본 스니펫을 보관해 슬라이드 텍스트와 원문을 비교할 수 있게 합니다.
  • "신뢰할 수 있는 수치 없음" 권장. 컨설턴트가 정직하게 빈틈을 채울 수 있으나 허구 수치는 쉽게 탐지하기 어렵습니다.

에이전트 대안: Claude Code 또는 Codex와 2Slides 스킬 또는 MCP

스크립트 파이프라인은 예약된 반복 주제에 적합합니다. 일회성 심층 분석은 에이전트 세션으로 동일 단계를 대화형으로 수행할 수 있습니다. 호스팅된 2Slides MCP 서버를 Claude Code에 한 줄 명령으로 연결한 뒤, 에이전트에게 웹 검색 도구로 주제를 조사하고 인용된 요약을 작성하며 themes_search로 컨설팅 테마를 찾고 slides_generate를 호출하도록 요청하세요. MCP는 REST API와 동일한 키와 크레딧으로 7개 도구(폴링용 jobs_get 포함)를 제공합니다.

claude mcp add --transport http 2slides "https://2slides.com/api/mcp?apikey=YOUR_KEY"

2Slides MCP Server tab with the Streamable HTTP endpoint and the claude mcp add command
그림 2: API 페이지의 MCP Server 탭, 스트리밍 가능한 HTTP 엔드포인트와 한 줄 Claude Code 설정 명령.

Codex, Cursor 또는 스킬을 선호하는 다른 에이전트에서는 스킬 페이지에서 Agent Skill을 설치하세요; 동일한 엔드포인트와 제출, 폴링, 다운로드 루프를 가르칩니다. Agent Skills vs MCP servers for presentations에서 장단점을, How to use Claude MCP to generate presentations에서 단계별 설정법을 확인하세요.

2Slides Agent Skills page listing Claude Code, OpenAI Codex, Cursor, Google Antigravity, Manus and Openclaw
그림 3: Agent Skills 페이지, Claude Code, Codex, Cursor 등 에이전트용 설치 안내.

컨설팅급 데크 예시

2Slides 갤러리에는 BCG의 "AI at Work 2025" 같은 참조 데크가 있습니다. 한 줄 논제로 시작해 방법론과 출처로 마무리하는, 위 12슬라이드 요약과 동일한 구조입니다. 이 갤러리 데크는 API 출력물이 아닌 2Slides에 호스팅된 실제 사례입니다. 디자인 영감으로 활용하거나 create-like-this에 페이지 이미지 URL을 referenceImageUrl로 전달해 이미지 디자인 경로가 참조 데크의 유형, 색상, 레이아웃을 따르게 할 수 있습니다.

BCG AI at Work 2025 reference deck from the 2Slides Gallery, a consulting-style structure reference
그림 4: 2Slides 갤러리의 BCG AI at Work 2025 참조 데크 제목 슬라이드.

BCG AI at Work 2025 reference deck from the 2Slides Gallery, a consulting-style structure reference
그림 5: 동일 데크의 후반 슬라이드, 컨설팅 청중이 기대하는 한 슬라이드당 한 메시지 레이아웃.

컨설팅 업무에 적합한 도구를 더 폭넓게 보려면 Best AI presentation tools for consultants를 참고하세요. Gamma API 페이지는 유사한 n8n + Tavily + OpenAI 레시피를 문서화하며, Gamma API 키는 Pro 플랜이 필요하지만 2Slides 키는 모든 계정에서 작동합니다. 2Slides는 본 제품이므로 비교 시 참고하세요.

비용 안내

크레딧은 종량제입니다: $5에 2,000 크레딧($0.0025/크레딧), $80에 40,000 크레딧($0.002/크레딧) 구매 가능. 검색 API와 LLM 비용은 공급자별 청구로 아래에 포함되지 않습니다.

사용량Fast PPT generate (12슬라이드 = 120 크레딧)이미지 디자인 create-pdf-slides (12슬라이드 2K = 1,210 크레딧)
월 20 데크2,400 크레딧, 약 $6.00 ($9.50 팩으로 커버 가능)24,200 크레딧, 약 $48~$61 (팩에 따라 다름)
월 500 데크60,000 크레딧, 약 $120 (두 개 $80 팩)605,000 크레딧, 약 $1,210 ($0.002/크레딧 기준)

신규 계정은 500 무료 크레딧을 받으며, 이는 Fast PPT 테스트 데크 4개 분량입니다.

이 사용 사례에 Fast PPT 또는 이미지 디자인 슬라이드?

  • Fast PPT generate 컨설턴트가 PowerPoint에서 데크를 편집할 때, 사용량이 많을 때(월 500 데크 약 $120), 템플릿 스타일이 허용될 때 적합합니다. 약 30초 내에 반환됩니다.
  • create-pdf-slides 데크가 읽기 전용 PDF로 클라이언트에 전달되고, 디자인된 한 아이디어당 한 슬라이드 스타일이 필요할 때 적합합니다. 비용은 대략 10배 높습니다.
  • create-like-this 회사 고유 스타일이 있을 때 적합: 기존 브랜드 슬라이드 이미지 URL을 referenceImageUrl로 전달하면 모든 실행에 스타일이 상속됩니다.
  • 내레이션 및 MP4는 이미지 디자인 작업에서만 가능하며, generate-narration으로 슬라이드당 210 크레딧이 듭니다. 내부 연구 브리핑 영상에 유용하며 Fast PPT 경로에서는 불가합니다.

흔한 실수

  • 분당 6회 요청 제한 초과. 배치 실행 시 10~12초 간격으로 제출하세요; 폴링은 별도의 분당 10회 jobs 예산을 사용합니다.
  • API 키를 n8n 노드 본문이나 브라우저 스크립트에 넣음. 키는 n8n 자격증명 또는 서버 환경 변수에 보관하고 클라이언트 코드에는 절대 넣지 마세요.
  • Fast PPT 데크에 내레이션 시도. generate-narrationcreate-pdf-slides 또는 create-like-this 작업만 받으며 Fast PPT 작업은 거부됩니다.
  • page: 0은 0페이지가 아니라 자동 감지 의미. create-pdf-slides에서 요약이 12슬라이드면 page: 12로 설정하거나, 플래너에 맡기려면 page: 0으로 설정하세요.
  • 언어 코드 대신 이름 사용. responseLanguage"Spanish" 또는 "German"처럼 이름을 받으며 "es""de"는 안 됩니다.
  • 20개 전체 기사를 userInput으로 전송. 먼저 요약하세요; 원본이 아닌 요약이 2Slides에 전달됩니다.

자주 묻는 질문

연구에서 발표까지 파이프라인 데크당 비용은 얼마인가요?

12슬라이드 Fast PPT 데크의 2Slides 비용은 약 $0.30(120 크레딧, 크레딧당 $0.0025), 12슬라이드 2K 이미지 디자인 데크는 약 $3.03(1,210 크레딧)입니다. 여기에 검색 API 호출 1회와 LLM 완성 1회 비용이 별도 청구됩니다. 월 500 데크 시 Fast PPT 경로는 약 $120 크레딧 비용입니다.

다른 언어로 데크를 출력할 수 있나요?

네. responseLanguage"Spanish", "Japanese" 등 언어 이름을 전달하면 20개 이상 언어를 지원합니다. 가장 깔끔한 방법은 요약을 영어로 작성하고 2Slides가 생성 시 번역하도록 하는 것으로, 인용과 출처 URL은 동일하게 유지됩니다.

n8n이 꼭 필요한가요? 워크플로우 도구 없이도 실행할 수 있나요?

n8n은 필수가 아닙니다. 6단계의 Python 스크립트가 cron에서 동일 작업을 수행하며, 2Slides MCP 또는 스킬과 함께 에이전트 세션으로 대화형 실행도 가능합니다. n8n은 비개발자가 폼에서 실행을 트리거하고 Google Drive 및 Slack 전달을 코드 작성 없이 자동화할 때 유용합니다.

LLM이 슬라이드에 허구의 통계를 쓰지 않게 하려면 어떻게 하나요?

프롬프트를 제한하고 출력물을 검증하세요. 모든 수치가 [n] 출처 id로 끝나도록 요구하고, 추정 대신 "no reliable figure found"를 쓰도록 지시하며, 출처 수를 초과하는 id가 있으면 요약을 거부하세요. 데크 옆에 출처 파일을 저장해 검토자가 각 슬라이드를 원문과 대조할 수 있게 하세요.

회사 고유 슬라이드 스타일과 맞출 수 있나요?

네, create-like-this를 사용하세요. 기존 브랜드 슬라이드의 공개 URL을 referenceImageUrl로 전달하면 이미지 디자인 파이프라인이 색상, 글꼴, 레이아웃을 참조합니다. 비용은 create-pdf-slides와 같으며, 2K 기준 슬라이드당 10 크레딧 계획 + 100 크레딧입니다. 편집 가능한 PPTX는 themes/search에서 가장 가까운 테마를 선택하세요.

다음 단계

  • 2slides.com/api에서 API 키를 받으세요. 신규 계정은 500 무료 크레딧으로 12슬라이드 테스트 데크 4개 분량입니다.
  • 동일 엔드포인트를 사용하는 다른 팀 사례는 허브 게시물 AI presentation API use cases by team를 참고하세요.
  • 팀이 Claude Code 또는 Codex를 사용한다면 Agent Skill을 설치하고 예약 전에 대화형으로 연구-발표 파이프라인을 실행해보세요; 워크플로우 도구 버전은 n8n + 2Slides를 참고하세요.

About 2Slides

Create stunning AI-powered presentations in seconds. Transform your ideas into professional slides with 2slides AI Agent.

Try For Free