Blog›Guides

构建基于Wikiprompt数据集的AI应用

开发者指南:基于Wikiprompt公开的55,000+提示词数据集,构建提示词搜索界面、每日提示词机器人、浏览器扩展或Discord机器人,包含数据摄取代码和归属说明。

构建基于Wikiprompt数据集的AI应用

在Wikiprompt数据集上构建AI应用

每个尝试构建“提示词库”应用的独立开发者都会在第一天撞上同一堵墙:你需要种子内容,而爬取既慢又脆弱,还会对目标服务器不友好。Wikiprompt刚刚拆掉了这堵墙。整个目录,超过55,000条提示词,覆盖ChatGPT、Claude、Gemini、Midjourney、GPT Image、Veo、Kling、Seedance、Nano Banana、Grok等,现在以公开批量数据集的形式提供。无需密钥,无需限流协商,无需爬取。就是JSON。

这篇帖子是构建日志,不是新闻稿。四个你本周末就能上线的小应用,以及实现它们所需的确切管道。

你实际要处理的内容

先访问清单文件:

curl "https://www.wikiprompt.org/dataset"

它返回total_prompts、每行记录中可预期的record_fields,以及分页方案。真实数据位于/dataset/prompts,使用键集游标分页:每页给你一个next URL,你跟随它直到next返回null。每页最多500条记录。

curl "https://www.wikiprompt.org/dataset/prompts?limit=500"

每条记录是一个小而实用的对象:slug、url、title、description、content(你会粘贴到模型里的实际提示词文本)、category、tags、media(当提示词生成图像或视频时的URL)、model(它针对或运行于哪个模型)、metadata(结构化字段,如媒体类型、宽高比、风格和质量评估)、author、original_source(它来源的原始推文或帖子),以及时间戳。这些足以构建一个真实UI,而无需任何额外的API调用。

这是Python中的完整摄取循环,大约15行代码就能写入本地SQLite缓存:

import requests, sqlite3

db = sqlite3.connect("wikiprompt.db")

db.execute("""create table if not exists prompts(

slug text primary key, title text, description text,

content text, category text, model text, url text)""")

url = "https://www.wikiprompt.org/dataset/prompts?limit=500"

while url:

data = requests.get(url).json()

for p in data["records"]:

db.execute(

"insert or replace into prompts values (?,?,?,?,?,?,?)",

(p["slug"], p["title"], p["description"],

p["content"], p["category"], p.get("model"), p["url"]),

)

db.commit()

url = data.get("next")

运行一次,你就有了整个目录的本地可查询副本。CORS完全开放(Access-Control-Allow-Origin: *),响应经过边缘缓存,所以从浏览器运行也很友好,不只是后端任务。

四件值得构建的东西

一个提示词搜索UI。 数据集免费提供category、tags、model和metadata,这意味着分面搜索基本上就是一个SQL WHERE子句的事:“Midjourney提示词,标签为人像”或“Claude的编码提示词”可以解析为一个过滤器,而不是一个研究项目。如果你不想自己构建索引,wikiprompt已经运行了一个:搜索API接受?q=并返回排序后的JSON,足以在你写一行检索代码之前就原型化一个搜索框。

一个“每日提示词”机器人。 定时任务,从你的本地缓存中随机选一行(或按category=creative过滤以获取主题化内容),发布title + content + url回到来源。media字段意味着你可以附加实际输出图像或视频到帖子,而不仅仅是文本。这大约40行代码,同样适用于Slack机器人、Telegram机器人,或一个发布到X的cron任务。

一个浏览器扩展。 右键点击任何文本字段,“插入提示词”,按类别或模型搜索你的本地缓存,粘贴content。由于初始同步后数据是本地的,这可以离线且即时工作,每次按键无需网络往返。

一个Discord机器人。 /prompt image midjourney斜杠命令,按category和model过滤你的缓存,回复title、content,并将媒体作为嵌入内容。如果有人想看原始内容,在页脚链接original_source,这样归属在同一消息中就覆盖了。

真正使用metadata字段

对于任何与媒体相关的内容,metadata是有趣信息所在:宽高比、风格标签、质量评估。如果你在构建一个排序或推荐提示词的应用(而不仅仅是列出它们),这就是你的信号。一个“最佳Midjourney人像提示词,3:4宽高比,高质量评分”的过滤器,一旦你摄取了该字段,就是几个额外的WHERE子句,无需单独的评分管道。

为了体验一条好的提示词记录的完整流程,浏览几个实时页面:一个数据物理化图像提示词、一个未来主义蛛形纲角色转换,以及一个神秘游牧旅行者角色设计。每一个在数据集中也是一条完整记录,同样的字段,同样的content,你可以直接复制到模型中。

归属不是可选的,而且也不难

Wikiprompt聚合了原始作者公开帖子的提示词;它不是许可证持有者,而是图书管理员。如果你的应用展示一条提示词,请同时显示original_source,并注明wikiprompt.org是你获取目录的来源。这就是约定,数据集让遵守它变得轻而易举,因为original_source已经存在于每条记录中。不要仅仅因为你的模式还没有对应列,就在摄取时剥离它。

如果你不想运行自己的索引

根据你想拥有多少基础设施,有三个选项。如果你想完全控制,通过你自己的搜索/推荐层运行批量数据集。如果你只需要结果而不是管道,直接调用搜索API。或者,如果你在构建一个代理而不是应用,将其指向MCP服务器,它暴露搜索、类别和单个提示词作为工具,Claude和其他代理可以原生调用。还有llms.txt,如果你想一次获取就让模型理解整个表面区域。

从这里开始

curl "https://www.wikiprompt.org/dataset/prompts?limit=500" | head -c 2000

看看返回的内容,从上面四个想法中选一个,你就能在咖啡冷掉之前做出能用的东西。困难的部分,超过55,000条跨十几个模型的精选提示词,已经完成了。你用它们构建什么,才是有趣的部分。

Tags
open-data·dataset·api·developers·tutorial·discord-bot·ai-prompts