Blog›Guides

开发者指南:Wikiprompt /dataset 端点

一份精确的、参考风格的 `/dataset` 清单和 `/dataset/prompts` 端点指南:响应结构、每个字段、键集分页、缓存和错误处理。

开发者指南:Wikiprompt /dataset 端点

开发者指南:Wikiprompt /dataset 端点

Wikiprompt 是一个公开、精选的 AI 提示词目录,涵盖 ChatGPT、Claude、Gemini、GPT Image、Midjourney、Seedance、Veo、Kling、Nano Banana、Grok 等。与其通过抓取实时网站来以编程方式获取该目录,现在有一个专用的批量导出端点:/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": "实际的提示词文本在这里,逐字呈现",

    "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"

    }

    字段参考

    每条记录都携带相同的十四个字段。值得特别指出的:

  • `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 会变动。
  • 分页机制

    端点使用键集分页,而不是页码。两个参数控制它:

  • 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 密钥,所以没有与密钥关联的速率限制;请做一个合理的公民,在本地缓存清单,而不是在每次请求时轮询它。

    错误处理

    在负载下,端点可能返回 503 并带有 Retry-After 头(重试前等待的秒数)。请尊重它:

    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 状态码都值得记录并停止,而不是盲目重试。如果你只跟随 next,格式错误的 after 游标不应该发生,但防御性代码不应永远假设如此。

    归属

    此数据集中的提示词聚合自原始作者的公开帖子。Wikiprompt 是聚合者,而不是权利持有者。如果你用这些数据构建东西,请引用 wikiprompt.org,并且每条记录都要引用指向原始帖子的 original_source 字段。除此之外没有附加正式许可证:归属网站并归属作者。

    值得尝试

    一旦你拉取了一页,有三条记录可以用来检查你的解析器:一个数据物理化图像提示词、一个纪念性阴影建筑照片 和 一个神秘游牧旅行者角色设计。这三条都能干净地通过 content、media 和 metadata 往返。

    如果批量导出目前超出你的需求,还有两个更轻量的选项:搜索 API 用于单个查询,以及 MCP 服务器 如果你要将其接入代理而不是脚本。两者都基于与 /dataset 相同的底层目录,所以如果你从小处开始并随后扩展到批量导出,这里没有任何死胡同。

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