计划执行与检查节点
executing-plans
按既定实施计划完成工作,保持过程检查和反馈。
firecrawl-cost-tuning【效率与协作】Optimize FireCrawl costs through tier selection, sampling, and usage monitoring. Use when analyzing FireCrawl billing, reducing API costs, or implementing usage monitoring and budget alerts. Trigger with phrases like "firecrawl cost", "firecrawl billing", "reduce firecrawl costs", "firecrawl pricing", "firecrawl expensive", "firecrawl budget".
独立 GitHub 快照 · 自动分类 · 以原作者文档为准
Optimize FireCrawl costs through smart tier selection, sampling, and usage monitoring.
| Tier | Monthly Cost | Included | Overage |
|---|---|---|---|
| Free | $0 | 1,000 requests | N/A |
| Pro | $99 | 100,000 requests | $0.001/request |
| Enterprise | Custom | Unlimited | Volume discounts |
interface UsageEstimate {
requestsPerMonth: number;
tier: string;
estimatedCost: number;
recommendation?: string;
}
function estimateFireCrawlCost(requestsPerMonth: number): UsageEstimate {
if (requestsPerMonth <= 1000) {
return { requestsPerMonth, tier: 'Free', estimatedCost: 0 };
}
if (requestsPerMonth <= 100000) {
return { requestsPerMonth, tier: 'Pro', estimatedCost: 99 };
}
const proOverage = (requestsPerMonth - 100000) * 0.001;
const proCost = 99 + proOverage;
return {
requestsPerMonth,
tier: 'Pro (with overage)',
estimatedCost: proCost,
recommendation: proCost > 500
? 'Consider Enterprise tier for volume discounts'
: undefined,
};
}
class FireCrawlUsageMonitor {
private requestCount = 0;
private bytesTransferred = 0;
private alertThreshold: number;
constructor(monthlyBudget: number) {
this.alertThreshold = monthlyBudget * 0.8; // 80% warning
}
track(request: { bytes: number }) {
this.requestCount++;
this.bytesTransferred += request.bytes;
if (this.estimatedCost() > this.alertThreshold) {
this.sendAlert('Approaching FireCrawl budget limit');
}
}
estimatedCost(): number {
return estimateFireCrawlCost(this.requestCount).estimatedCost;
}
private sendAlert(message: string) {
// Send to Slack, email, PagerDuty, etc.
}
}
function shouldSample(samplingRate = 0.1): boolean {
return Math.random() < samplingRate;
}
// Use for non-critical telemetry
if (shouldSample(0.1)) { // 10% sample
await firecrawlClient.trackEvent(event);
}
// Instead of N individual calls
await Promise.all(ids.map(id => firecrawlClient.get(id)));
// Use batch endpoint (1 call)
await firecrawlClient.batchGet(ids);
const client = new FireCrawlClient({
compression: true, // Enable gzip
});
# Set up billing alerts in FireCrawl dashboard
# Or use API if available:
# Check FireCrawl documentation for billing APIs
-- If tracking usage in your database
SELECT
DATE_TRUNC('day', created_at) as date,
COUNT(*) as requests,
SUM(response_bytes) as bytes,
COUNT(*) * 0.001 as estimated_cost
FROM firecrawl_api_logs
WHERE created_at >= NOW() - INTERVAL '30 days'
GROUP BY 1
ORDER BY 1;
Review FireCrawl dashboard for usage patterns and costs.
Use the cost estimation function to find the right tier.
Add usage tracking to catch budget overruns early.
Enable batching, caching, and sampling where appropriate.
| Issue | Cause | Solution |
|---|---|---|
| Unexpected charges | Untracked usage | Implement monitoring |
| Overage fees | Wrong tier | Upgrade tier |
| Budget exceeded | No alerts | Set up alerts |
| Inefficient usage | No batching | Enable batch requests |
// Estimate monthly cost for your usage
const estimate = estimateFireCrawlCost(yourMonthlyRequests);
console.log(`Tier: ${estimate.tier}, Cost: ${estimate.estimatedCost}`);
if (estimate.recommendation) {
console.log(`💡 ${estimate.recommendation}`);
}
For architecture patterns, see firecrawl-reference-architecture.