自托管站点AI搜索、LLMs.txt、MCP服务器爬取您的内容。一键在Vercel上部署。 <br>
<p align="center">
[](https://vercel.com/new/clone?repository-url=https%3A%2F%2Fgithub.com%2Fmadarco%2Fragrabbit&env=OPENAI_API_KEY,AUTH_USERNAME,AUTH_PASSWORD,AUTH_SECRET&envDescription=获取一个OpenAI API密钥,并设置AUTH_USERNAME和AUTH_PASSWORD以所需的凭据来保护管理部分。同时确保启用PostgreSQL数据库集成&envLink=https%3A%2F%2Fplatform.openai.com%2Fapi-keys&demo-title=RagRabbit%20-%20AI%20站点搜索和LLMs.txt&demo-description=几分钟内实现站点AI搜索和LLMs.txt,开源并可在Vercel上一键部署&demo-url=https%3A%2F%2Fragrabbit.vercel.app%2F&demo-image=https%3A%2F%2Fragrabbit.vercel.app%2Fopengraph-image.png&stores=%5B%7B%22type%22%3A%22postgres%22%7D%5D&root-directory=apps/saas)
RagRabbit 是一个使用Llamaindex和pgVector的Next.js Turborepo应用程序。
特性:
npx @ragrabbit/mcp访问Claude Desktop和Cursor IDE中的文档集成:

要在Vercel上安装:
[](https://vercel.com/new/clone?repository-url=https%3A%2F%2Fgithub.com%2Fmadarco%2Fragrabbit&env=OPENAI_API_KEY,AUTH_USERNAME,AUTH_PASSWORD,AUTH_SECRET&envDescription=获取一个OpenAI API密钥,并设置AUTH_USERNAME和AUTH_PASSWORD以所需的凭据来保护管理部分。同时确保启用PostgreSQL数据库集成&envLink=https%3A%2F%2Fplatform.openai.com%2Fapi-keys&demo-title=RagRabbit%20-%20AI%20站点搜索和LLMs.txt&demo-description=几分钟内实现站点AI搜索和LLMs.txt,开源并可在Vercel上一键部署&demo-url=https%3A%2F%2Fragrabbit.vercel.app%2F&demo-image=https%3A%2F%2Fragrabbit.vercel.app%2Fopengraph-image.png&stores=%5B%7B%22type%22%3A%22postgres%22%7D%5D&root-directory=apps/saas)
要求:
设置以下环境变量:
对于用户名/密码登录:
对于电子邮件登录:
详见 .env.example 的完整列表。
使用索引部分添加新的网址/网站进行索引,可以是一个单独的网址或递归爬取整个网站:

然后启动作业运行器(保持标签打开直到完成)

在LLMs.txt部分,您可以预览生成的LLMs.txt文件:

您可以通过以下代码片段将小部件嵌入到您的网站中:
在页面底部嵌入一个按钮:
<script src="https://<已部署的应用程序>/widget.js"></script>

在页面任何位置插入一个搜索框:

<script src="https://ragrabbit.com/widget.js?type=search"></script>
<ragrabbit-search></ragrabbit-search>
"use client";
import Script from "next/script";
export function RagRabbitSearch() {
return (
<>
<Script src="/widget.js?type=search" strategy="lazyOnload" />
<style>{`
ragrabbit-search .ragrabbit-search-input {
padding: 6px 12px;
}
`}</style>
<div className="ml-auto min-w-[300px] flex-1 sm:flex-initial">
{/* @ts-ignore - 外部脚本挂载的自定义元素 */}
<ragrabbit-search></ragrabbit-search>
</div>
</>
);
}
MCP服务器允许任何支持的AI客户端使用语义搜索从您的文档中检索页面。
添加一个自定义的mcp服务器,命名为您的产品名称,这样Claude AI在查找相关信息时就可以使用它。
在claude_desktop_config.json(Claude -> 设置 -> 开发者 -> 编辑配置)中:
{
"mcpServers": {
"<您的文档名称无空格>": {
"command": "npx",
"args": ["@ragrabbit/mcp", "http://<RagRabbit安装>/", "<您的文档名称>"]
}
}
}
进入Cursor -> 设置 -> Cursor设置 -> MCP
添加一个新的MCP类型为命令,命令如下:
npx @ragrabbit/mcp", "http://<RagRabbit安装>/", "<您的文档名称>"
参数:
ragrabbit-url:(必需)您的RagRabbit实例的基本URL,例如https://my-ragrabbit.vercel.com/name:(必需)文档搜索服务的自定义名称(默认为“RagRabbit”),以便AI知道在查找信息时使用它。您可以通过向widget.js脚本标签添加以下参数来配置聊天按钮:
<script src="https://ragrabbit.com/widget.js?buttonText=询问AI"></script>
您可以通过添加以下参数并使用mountSearch调用来配置搜索小部件:
<div id="search-container"></div>
<script>
window.mountSearch("search-container", { searchPlaceholder: "搜索文档..." });
</script>
创建一个组件以替换搜索对话框:
pnpm add @ragrabbit/search-react
"use client";
import type { SharedProps } from "fumadocs-ui/components/dialog/search";
import { RagRabbitModal } from "@ragrabbit/search-react";
export default function SearchDialog({ open, onOpenChange }: SharedProps) {
return <RagRabbitModal
domain="http://localhost:3000/"
open={open}
onOpenChange={onOpenChange}
/>;
}
然后在layout.tsx中设置它:
<RootProvider
search={{
SearchDialog,
}}
>
...
</RootProvider>
可选地添加浮动聊天按钮:
"use client";
import { RagRabbitChatButton } from "@ragrabbit/search-react";
export default function ChatButton() {
return <RagRabbitChatButton domain="http://localhost:3000/" />;
}
并在layout.tsx中添加它:
<body className="flex flex-col min-h-screen">
<ChatButton />
...
# 启动数据库(需要Docker)
pnpm dev:utils # 启动带有pgvector的postgresql、Storybook和Drizzle ORM Studio
# 启动应用
cd apps/saas
pnpm dev
RagRabbit是一个使用Turborepo的Next.js单体仓库,具有模块化设计和独立包。
apps/
├── docs -> 文档站点
├── saas -> 主要应用
└── web -> 网站
packages/
├── db -> 使用Drizzle ORM的数据库
├── auth -> 使用Auth.js的认证
├── core -> 共享工具
├── design -> 设计系统
├── rag -> 包含LlamaIndexTS的LLM和RAG包
├── jobs -> 使用Trigger.dev的作业运行器
└── storybook -> 一个Next.js Storybook应用
.cursorrules -> 细调的Cursor规则,包含所有与单体仓库工作的位置
Marco D'Alia - @madarco - LinkedIn
MIT