# 위키프롬프트 /dataset 엔드포인트 개발자 가이드
# `/dataset` 매니페스트 및 `/dataset/prompts` 엔드포인트에 대한 정밀한 레퍼런스식 안내서: 응답 형태, 모든 필드, 키셋 페이지네이션, 캐싱 및 오류 처리 ## 개요 이 문서는 `/dataset` 매니페스트와 `/dataset/prompts` 엔드포인트에 대한 상세한 레퍼런스를 제공합니다. 각 응답의 구조, 필드 의미, 페이지네이션 메커니즘, 캐싱 전략 및 오류 처리 규칙을 다룹니다. ## `/dataset` 매니페스트 엔드포인트 ### 응답 형태 `GET /dataset` 요청에 대한 응답은 다음

개발자를 위한 Wikiprompt /dataset 엔드포인트 가이드
Wikiprompt는 ChatGPT, Claude, Gemini, GPT Image, Midjourney, Seedance, Veo, Kling, Nano Banana, Grok 등을 다루는 공개 큐레이션 AI 프롬프트 카탈로그입니다. 라이브 사이트를 스크래핑하여 해당 카탈로그를 프로그래밍 방식으로 가져오는 대신, 전용 대량 내보내기 기능인 /dataset이 새로 추가되었습니다. 이 글은 타사 API를 문서화하듯이 응답 구조, 필드 의미, 페이지네이션 메커니즘, 캐싱, 오류 처리 및 실행 가능한 예제를 다룹니다.
두 개의 엔드포인트, 하나의 역할
필요한 URL은 정확히 두 개입니다:
https://www.wikiprompt.org/dataset (매니페스트)https://www.wikiprompt.org/dataset/prompts (데이터)매니페스트는 내보내기에 대한 메타데이터입니다. 데이터 엔드포인트는 페이지네이션된 내보내기 자체입니다. 둘 다 일반 JSON을 반환하며, API 키, 인증 헤더, 등록 절차가 필요 없습니다.
매니페스트 응답
데이터셋 매니페스트에 대한 GET 요청은 다음과 같은 형태를 반환합니다:
{
"total_prompts": 55000,
"record_fields": [
"slug", "url", "title", "description", "content",
"category", "tags", "media", "model", "metadata",
"author", "original_source", "created_at", "updated_at"
],
"pagination": {
"endpoint": "https://www.wikiprompt.org/dataset/prompts",
"cursor_param": "after",
"limit_param": "limit",
"default_limit": 200,
"max_limit": 500
}
}
total_prompts는 고정 상수가 아닌 실시간 근사치로 취급하세요. 카탈로그는 매일 증가하므로, 코드 어디에도 개수를 하드코딩하지 말고 record_fields와 pagination 블록에 통합을 고정하세요.
데이터 응답
/dataset/prompts에 대한 GET 요청은 레코드 페이지와 다음 페이지용 커서를 반환합니다:
{
"count": 500,
"records": [
{
"slug": "one-brick-monumental-shadow-architectural-photo",
"url": "https://www.wikiprompt.org/one-brick-monumental-shadow-architectural-photo",
"title": "One Brick: Monumental Shadow Architectural Photo",
"description": "A single brick photographed to cast a monumental architectural shadow.",
"content": "the actual prompt text goes here, verbatim",
"category": "creative",
"tags": ["photography", "architecture", "shadow-play"],
"media": ["https://www.wikiprompt.org/media/tw/..."],
"model": "Midjourney",
"metadata": {
"media_type": "image",
"aspect_ratio": "16:9",
"style": ["minimalist", "high-contrast"],
"assessment": { "creativity": 4, "usefulness": 3 }
},
"author": "some_handle",
"original_source": "https://twitter.com/some_handle/status/...",
"created_at": "2026-03-11T00:00:00Z",
"updated_at": "2026-03-11T00:00:00Z"
}
],
"next": "https://www.wikiprompt.org/dataset/prompts?after=<cursor>&limit=500"
}
필드 참조
모든 레코드는 동일한 14개 필드를 가집니다. 주목할 만한 필드는 다음과 같습니다:
slug는 안정적인 식별자이고, url은 표준 페이지로, 나중에 단일 레코드로 링크하거나 다시 크롤링할 때 유용합니다.creative, marketing, personal, productivity, coding, education, business, research, other 중 하나입니다."Midjourney", "GPT-4o", "Veo" 등).media_type, aspect_ratio, style, 그리고 창의성과 유용성 같은 품질 차원을 점수화하는 assessment 블록을 포함한 구조화된 객체입니다. 이미지/비디오 평가가 없는 일반 텍스트 프롬프트에서는 null입니다.updated_at이 변경됩니다.페이지네이션 메커니즘
엔드포인트는 페이지 번호가 아닌 키셋 페이지네이션을 사용합니다. 두 개의 매개변수가 이를 제어합니다:
limit: 페이지당 레코드 수, 기본값 200, 최대 500.after: 불투명한 커서로, 각 응답의 next URL에 그대로 반영됩니다.계약은 간단합니다: 엔드포인트를 호출하고, next를 읽고, next를 그대로 호출하고, next가 null이 될 때까지 반복합니다. after 값을 직접 구성하지 마세요. 불투명한 토큰으로 취급하세요.
curl "https://www.wikiprompt.org/dataset/prompts?limit=500"
Python에서 전체 크롤링은 다음과 같습니다:
import requests
url = "https://www.wikiprompt.org/dataset/prompts?limit=500"
records = []
while url:
resp = requests.get(url, timeout=30)
resp.raise_for_status()
payload = resp.json()
records.extend(payload["records"])
url = payload["next"]
print(f"pulled {len(records)} prompts")
페이지당 500개, 55,000개 이상의 레코드에서 전체 동기화는 약 110회 요청이 필요하며, 클라이언트 측에서 updated_at을 추가로 필터링하면 증분 동기화는 훨씬 적은 요청으로 가능합니다.
캐싱 및 CORS
두 엔드포인트 모두 에지 캐시되므로, 동일한 페이지(동일한 after 값)에 대한 반복 요청은 서버 측에서 저렴하고 빠르며, 사용자에게도 빠릅니다. 모든 응답에 Access-Control-Allow-Origin: *이 설정되어 있어 브라우저 JavaScript에서 fetch()로 직접 호출할 수 있으며 프록시가 필요 없습니다. API 키가 없으므로 API 키에 연결된 속도 제한도 없습니다. 합리적인 사용자로 행동하고, 매 요청마다 매니페스트를 폴링하는 대신 로컬에 캐시하세요.
오류 처리
부하가 걸리면 엔드포인트는 Retry-After 헤더(재시도 전 대기할 초 수)와 함께 503을 반환할 수 있습니다. 이를 존중하세요:
import time, requests
def get_with_retry(url):
while True:
resp = requests.get(url, timeout=30)
if resp.status_code == 503:
wait = int(resp.headers.get("Retry-After", "5"))
time.sleep(wait)
continue
resp.raise_for_status()
return resp.json()
다른 비-200 상태는 맹목적으로 재시도하기보다 로그를 남기고 중지하는 것이 좋습니다. 잘못된 after 커서는 next만 따르면 발생하지 않아야 하지만, 방어적 코드는 영원히 그렇다고 가정해서는 안 됩니다.
속성 표시
이 데이터셋의 프롬프트는 원저작자의 공개 게시물에서 집계된 것입니다. Wikiprompt는 집계자이며 권리 보유자가 아닙니다. 이 데이터로 무언가를 구축한다면 wikiprompt.org를 인용하고, 각 레코드에 대해 원본 게시물을 가리키는 original_source 필드를 인용하세요. 그 외에 공식 라이선스는 없습니다: 사이트를 속성으로 표시하고 저작자를 속성으로 표시하세요.
시도해 볼 만한 것
페이지를 가져온 후 파서를 검증할 세 개의 레코드: 데이터 물리화 이미지 프롬프트, 기념비적 그림자 건축 사진, 유목민 여행자 캐릭터 디자인. 세 개 모두 content, media, metadata를 통해 깔끔하게 왕복됩니다.
대량 내보내기가 지금 필요 이상이라면, 두 가지 더 가벼운 옵션이 있습니다: 단일 쿼리용 검색 API와 스크립트가 아닌 에이전트에 연결하는 경우 MCP 서버입니다. 둘 다 /dataset과 동일한 기본 카탈로그 위에 있으므로, 작게 시작하여 나중에 대량 내보내기로 확장해도 여기서 막다른 길은 없습니다.
Related Articles
- 최고의 Veo 2 프롬프트 (그리고 Veo 3로 옮기는 방법)
Sep 4, 2026 · 6 min read
- The Best Veo 2 Prompts (and How to Port Them to Veo 3)
Sep 4, 2026 · 6 min read
- Los Mejores Prompts de Veo 2 (y Cómo Portarlos a Veo 3)
Sep 4, 2026 · 6 min read
- As Melhores Prompts do Veo 2 (e Como Portá-los para o Veo 3)
Sep 4, 2026 · 6 min read
- Die besten Veo-2-Prompts (und wie man sie auf Veo 3 überträgt)
Sep 4, 2026 · 6 min read