Blog›Guides

開発者向けWikiprompt /datasetエンドポイントガイド

`/dataset`マニフェストと`/dataset/prompts`エンドポイントの正確なリファレンス形式のウォークスルー:レスポンス構造、全フィールド、キーセットページネーション、キャッシング、エラーハンドリング。

開発者向けWikiprompt /datasetエンドポイントガイド

開発者のためのWikiprompt /datasetエンドポイントガイド

Wikipromptは、ChatGPT、Claude、Gemini、GPT Image、Midjourney、Seedance、Veo、Kling、Nano Banana、Grokなどをカバーする、公開された厳選されたAIプロンプトのカタログです。ライブサイトをスクレイピングしてプログラム的にカタログを取得する代わりに、専用の一括エクスポート/datasetが用意されています。この投稿では、サードパーティAPIを文書化する方法で、レスポンス構造、フィールドの意味、ページネーションの仕組み、キャッシュ、エラー処理を、実行可能な例とともに説明します。

2つのエンドポイント、1つの役割

必要なURLは正確に2つです:

  • 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`:slugは安定した識別子です。urlは正規ページで、後でリンクバックや単一レコードの再クロールに役立ちます。
  • `content`:実際のプロンプトテキストです。これはほとんどの統合が関心を持つフィールドで、他のすべてはその周りのメタデータです。
  • `category`:creative、marketing、personal、productivity、coding、education、business、research、otherのいずれかです。
  • `media`:プロンプトが視覚的な出力を生成した場合の画像/動画URLの配列です。テキストのみのプロンプトでは空です。
  • `model`:プロンプトが対象とする、または生成に使用されたAIモデルを自由テキスト文字列("Midjourney"、"GPT-4o"、"Veo"など)で示します。
  • `metadata`:media_type、aspect_ratio、style、および創造性や有用性などの品質次元をスコアリングするassessmentブロックを含む構造化オブジェクトです。画像/動画の評価を持たないプレーンテキストプロンプトではnullです。
  • `original_source`:プロンプトの元となった元の投稿へのリンクです。以下の帰属に関する注記を参照してください。このフィールドは、データを下流で再利用する場合に重要です。
  • `created_at` / `updated_at`:ISO 8601タイムスタンプです。updated_atは、レコードが後で編集または再エンリッチされると移動します。
  • ページネーションの仕組み

    エンドポイントはページ番号ではなくキーセットページネーションを使用します。2つのパラメータが制御します:

  • limit:1ページあたりのレコード数、デフォルト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")

    1ページ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フィールドを引用してください。それ以外に正式なライセンスはありません:サイトを帰属し、著者を帰属してください。

    試す価値あり

    ページを取得したら、パーサーを検証するための3つのレコードがあります:データ物理化画像プロンプト、記念碑的な影の建築写真、神秘的な遊牧民トラベラーキャラクターデザインです。3つすべてがcontent、media、metadataを介してクリーンに往復します。

    一括エクスポートが今必要なものより多い場合は、2つの軽量オプションがあります:単一クエリ用の検索APIと、スクリプトではなくエージェントに配線する場合のMCPサーバーです。どちらも/datasetと同じ基盤カタログの上にあり、小規模から始めて後で一括エクスポートに成長しても、ここで行き止まりになるものはありません。

    Tags
    dataset·api·developer-guide·pagination·open-data·reference