firecrawl-deploy-integration
Automates the deployment of Firecrawl-powered web scraping applications to cloud platforms including Vercel and Google Cloud Run.
Install
mkdir -p .claude/skills/firecrawl-deploy-integration && curl -L -o skill.zip "https://agentskills.codes/api/skills/download/5420" && unzip -o skill.zip -d .claude/skills/firecrawl-deploy-integration && rm skill.zipInstalls to .claude/skills/firecrawl-deploy-integration
Activation
This is the description your AI agent reads to decide when to run this skill — the better it matches your request, the more reliably it fires.
Deploy Firecrawl integrations to Vercel, Cloud Run, and Docker platforms.Key capabilities
- →Configure Vercel environment variables for Firecrawl API keys
- →Deploy self-hosted Firecrawl applications using Docker Compose
- →Set up Cloud Run services with Firecrawl API key secrets
- →Establish webhook endpoints for asynchronous crawl results
- →Implement health checks for Firecrawl applications
How it works
The skill configures platform-specific secrets and deployment settings for Vercel, Cloud Run, or Docker. It provides code examples for serverless API routes, Docker Compose, and webhook handling.
Inputs & outputs
When to use firecrawl-deploy-integration
- →Configure Vercel environment variables
- →Deploy self-hosted Firecrawl via Docker
- →Set up Cloud Run secret management
- →Establish deployment pipelines for scraping tools
About this skill
Firecrawl Deploy Integration
Overview
Deploy applications using Firecrawl's web scraping API to production. Covers Vercel serverless, Cloud Run containers, self-hosted Firecrawl via Docker, and webhook endpoint deployment for async crawl results.
Prerequisites
- Firecrawl API key (
FIRECRAWL_API_KEY) - Application using
@mendable/firecrawl-js - Platform CLI (vercel, docker, or gcloud)
Instructions
Step 1: Configure Platform Secrets
set -euo pipefail
# Vercel
vercel env add FIRECRAWL_API_KEY production
# Cloud Run
echo -n "$FIRECRAWL_API_KEY" | gcloud secrets create firecrawl-api-key --data-file=-
# Docker
# Use --env-file or docker secrets
Step 2: Vercel Serverless API Route
// app/api/scrape/route.ts (Next.js App Router)
import FirecrawlApp from "@mendable/firecrawl-js";
import { NextRequest, NextResponse } from "next/server";
const firecrawl = new FirecrawlApp({
apiKey: process.env.FIRECRAWL_API_KEY!,
});
export async function POST(req: NextRequest) {
const { url, formats = ["markdown"] } = await req.json();
if (!url) {
return NextResponse.json({ error: "URL required" }, { status: 400 });
}
try {
const result = await firecrawl.scrapeUrl(url, {
formats,
onlyMainContent: true,
waitFor: 3000,
});
return NextResponse.json({
success: result.success,
markdown: result.markdown,
title: result.metadata?.title,
sourceURL: result.metadata?.sourceURL,
});
} catch (error: any) {
return NextResponse.json(
{ error: error.message, status: error.statusCode },
{ status: error.statusCode || 500 }
);
}
}
Step 3: Self-Hosted Firecrawl (Docker Compose)
# docker-compose.yml
services:
firecrawl:
image: mendableai/firecrawl:latest
ports:
- "3002:3002"
environment:
- PORT=3002
- USE_DB_AUTHENTICATION=false
- REDIS_URL=redis://redis:6379
- REDIS_RATE_LIMIT_URL=redis://redis:6379
- NUM_WORKERS_PER_QUEUE=2
- BULL_AUTH_KEY=${BULL_AUTH_KEY:-changeme}
depends_on:
redis:
condition: service_healthy
redis:
image: redis:7-alpine
ports:
- "6379:6379"
healthcheck:
test: ["CMD", "redis-cli", "ping"]
interval: 5s
timeout: 3s
retries: 5
app:
build: .
ports:
- "3000:3000"
environment:
- FIRECRAWL_API_KEY=fc-self-hosted
- FIRECRAWL_API_URL=http://firecrawl:3002
depends_on:
- firecrawl
// Point app to self-hosted Firecrawl
const firecrawl = new FirecrawlApp({
apiKey: process.env.FIRECRAWL_API_KEY!,
apiUrl: process.env.FIRECRAWL_API_URL || "https://api.firecrawl.dev",
});
Step 4: Cloud Run Deployment
set -euo pipefail
# Build and deploy
gcloud run deploy firecrawl-app \
--source . \
--region us-central1 \
--set-secrets "FIRECRAWL_API_KEY=firecrawl-api-key:latest" \
--memory 512Mi \
--timeout 300 \
--allow-unauthenticated
Step 5: Webhook Endpoint for Async Crawls
// app/api/webhooks/firecrawl/route.ts
import crypto from "crypto";
import { NextRequest, NextResponse } from "next/server";
export async function POST(req: NextRequest) {
const body = await req.text();
// Verify webhook signature
const signature = req.headers.get("x-firecrawl-signature");
if (signature && process.env.FIRECRAWL_WEBHOOK_SECRET) {
const expected = crypto
.createHmac("sha256", process.env.FIRECRAWL_WEBHOOK_SECRET)
.update(body)
.digest("hex");
if (signature !== expected) {
return NextResponse.json({ error: "Invalid signature" }, { status: 401 });
}
}
const { type, id, data } = JSON.parse(body);
switch (type) {
case "crawl.completed":
console.log(`Crawl ${id} complete: ${data.length} pages`);
await processPages(data);
break;
case "crawl.page":
console.log(`Page scraped: ${data[0]?.metadata?.sourceURL}`);
break;
case "crawl.started":
console.log(`Crawl ${id} started`);
break;
}
return NextResponse.json({ received: true });
}
Step 6: Health Check
export async function GET() {
try {
const result = await firecrawl.scrapeUrl("https://example.com", {
formats: ["markdown"],
});
return NextResponse.json({
status: result.success ? "healthy" : "degraded",
});
} catch {
return NextResponse.json({ status: "unhealthy" }, { status: 503 });
}
}
Error Handling
| Issue | Cause | Solution |
|---|---|---|
| Vercel timeout | Scrape takes > 10s | Use background functions or async crawl |
| Self-hosted OOM | Playwright browser memory | Increase container memory to 2GB+ |
| Cloud Run cold start | First request slow | Set min instances to 1 |
| Webhook not received | URL not publicly accessible | Use ngrok in dev, verify HTTPS in prod |
Resources
Next Steps
For webhook handling, see firecrawl-webhooks-events.
When not to use it
- →When the scrape takes longer than 10 seconds on Vercel
- →When the application requires more than 512MiB memory on Cloud Run
- →When the webhook URL is not publicly accessible
Prerequisites
Limitations
- →Vercel deployments may timeout if scrapes exceed 10 seconds
- →Self-hosted Docker instances may run out of memory with Playwright browser
- →Cloud Run deployments can experience cold starts
How it compares
This skill automates the setup of Firecrawl deployments across various platforms, unlike manual configuration which requires platform-specific knowledge for each environment.
Compared to similar skills
firecrawl-deploy-integration side by side with the closest alternatives in the catalog.
| Skill | Installs | Updated | Safety | Difficulty |
|---|---|---|---|---|
| firecrawl-deploy-integration (this skill) | 1 | 25d | Review | Intermediate |
| evernote-deploy-integration | 0 | 25d | Review | Intermediate |
| exa-deploy-integration | 0 | 25d | Review | Advanced |
| azure-partner-solutions | 0 | 4mo | No flags | Advanced |
Try saying
Example prompts that trigger this skill in your AI assistant.
More by jeremylongshore
View all by jeremylongshore →You might also like
evernote-deploy-integration
jeremylongshore
Deploy Evernote integrations to production environments. Use when deploying to cloud platforms, configuring production, or setting up deployment pipelines. Trigger with phrases like "deploy evernote", "evernote production deploy", "release evernote", "evernote cloud deployment".
exa-deploy-integration
jeremylongshore
Deploy Exa integrations to Vercel, Fly.io, and Cloud Run platforms. Use when deploying Exa-powered applications to production, configuring platform-specific secrets, or setting up deployment pipelines. Trigger with phrases like "deploy exa", "exa Vercel", "exa production deploy", "exa Cloud Run", "exa Fly.io".
azure-partner-solutions
RobGibbens
Expert knowledge for Azure Partner Solutions development including troubleshooting, decision making, architecture & design patterns, security, configuration, and integrations & coding patterns. Use when building, debugging, or optimizing Azure Partner Solutions applications. Not for Azure Industry (
deployment-pipeline-design
wshobson
Design multi-stage CI/CD pipelines with approval gates, security checks, and deployment orchestration. Use when architecting deployment workflows, setting up continuous delivery, or implementing GitOps practices.
terraform-module-library
wshobson
Build reusable Terraform modules for AWS, Azure, and GCP infrastructure following infrastructure-as-code best practices. Use when creating infrastructure modules, standardizing cloud provisioning, or implementing reusable IaC components.
ecs
itsmostafa
AWS ECS container orchestration for running Docker containers. Use when deploying containerized applications, configuring task definitions, setting up services, managing clusters, or troubleshooting container issues.