前提条件
- Nuxt 3+ 项目
- 一个 Firecrawl API 密钥 — 免费获取
安装 SDK
npm install @mendable/firecrawl-js
.env 中:
FIRECRAWL_API_KEY=fc-YOUR-API-KEY
进行网页搜索
server/api/search.post.ts:
import Firecrawl from "@mendable/firecrawl-js";
const firecrawl = new Firecrawl({
apiKey: process.env.FIRECRAWL_API_KEY,
});
export default defineEventHandler(async (event) => {
const { query } = await readBody(event);
const results = await firecrawl.search(query, { limit: 5 });
return results;
});
<script setup>
const query = ref("");
const { data, execute } = useFetch("/api/search", {
method: "POST",
body: { query },
immediate: false,
});
</script>
<template>
<div>
<input v-model="query" placeholder="Search the web..." />
<button @click="execute()">Search</button>
<ul v-if="data?.web">
<li v-for="result in data.web" :key="result.url">
<a :href="result.url">{{ result.title }}</a>
</li>
</ul>
</div>
</template>
抓取页面
server/api/scrape.post.ts:
import Firecrawl from "@mendable/firecrawl-js";
const firecrawl = new Firecrawl({
apiKey: process.env.FIRECRAWL_API_KEY,
});
export default defineEventHandler(async (event) => {
const { url } = await readBody(event);
const result = await firecrawl.scrape(url);
return result;
});
<script setup>
const url = ref("https://example.com");
const { data, execute } = useFetch("/api/scrape", {
method: "POST",
body: { url },
immediate: false,
});
</script>
<template>
<div>
<input v-model="url" placeholder="Enter URL" />
<button @click="execute()">Scrape</button>
<pre v-if="data">{{ data.markdown }}</pre>
</div>
</template>
与页面交互
server/api/interact.post.ts:
import Firecrawl from "@mendable/firecrawl-js";
const firecrawl = new Firecrawl({
apiKey: process.env.FIRECRAWL_API_KEY,
});
export default defineEventHandler(async (event) => {
const result = await firecrawl.scrape("https://www.amazon.com", {
formats: ["markdown"],
});
const scrapeId = result.metadata?.scrapeId;
await firecrawl.interact(scrapeId, {
prompt: "Search for iPhone 16 Pro Max",
});
const response = await firecrawl.interact(scrapeId, {
prompt: "Click on the first result and tell me the price",
});
await firecrawl.stopInteraction(scrapeId);
return { output: response.output };
});
后续步骤
抓取文档
涵盖所有抓取选项,包括 formats、actions 和代理
搜索文档
进行网页搜索并获取完整页面内容
交互文档
点击、填写表单并提取动态内容
Node SDK 参考
完整的 SDK 参考,涵盖爬取、map、batch scrape 等功能

