Spaces:
Build error
Build error
| import { NextRequest, NextResponse } from 'next/server'; | |
| export async function POST(req: NextRequest) { | |
| try { | |
| const { query } = await req.json(); | |
| if (!query) { | |
| return NextResponse.json({ error: 'Query is required' }, { status: 400 }); | |
| } | |
| // Use Firecrawl search to get top 10 results with screenshots | |
| const searchResponse = await fetch('https://api.firecrawl.dev/v1/search', { | |
| method: 'POST', | |
| headers: { | |
| 'Content-Type': 'application/json', | |
| 'Authorization': `Bearer ${process.env.FIRECRAWL_API_KEY}`, | |
| }, | |
| body: JSON.stringify({ | |
| query, | |
| limit: 10, | |
| scrapeOptions: { | |
| formats: ['markdown', 'screenshot'], | |
| onlyMainContent: true, | |
| }, | |
| }), | |
| }); | |
| if (!searchResponse.ok) { | |
| throw new Error('Search failed'); | |
| } | |
| const searchData = await searchResponse.json(); | |
| // Format results with screenshots and markdown | |
| const results = searchData.data?.map((result: any) => ({ | |
| url: result.url, | |
| title: result.title || result.url, | |
| description: result.description || '', | |
| screenshot: result.screenshot || null, | |
| markdown: result.markdown || '', | |
| })) || []; | |
| return NextResponse.json({ results }); | |
| } catch (error) { | |
| console.error('Search error:', error); | |
| return NextResponse.json( | |
| { error: 'Failed to perform search' }, | |
| { status: 500 } | |
| ); | |
| } | |
| } |