Files
SanatiLeads/app/api/analyze-manual/route.ts
2026-02-02 15:58:45 +00:00

60 lines
1.8 KiB
TypeScript

import { NextRequest, NextResponse } from 'next/server'
import { z } from 'zod'
import { analyzeFromText } from '@/lib/scraper'
import { performDeepAnalysis } from '@/lib/analysis-pipeline'
const bodySchema = z.object({
productName: z.string().min(1),
description: z.string().min(1),
features: z.string()
})
export async function POST(request: NextRequest) {
try {
const body = await request.json()
const { productName, description, features } = bodySchema.parse(body)
if (!process.env.OPENAI_API_KEY) {
return NextResponse.json(
{ error: 'OpenAI API key not configured' },
{ status: 500 }
)
}
console.log('📝 Creating content from manual input...')
const scrapedContent = await analyzeFromText(productName, description, features)
console.log('🤖 Starting enhanced analysis...')
const analysis = await performDeepAnalysis(scrapedContent)
console.log(` ✓ Analysis complete: ${analysis.features.length} features, ${analysis.keywords.length} keywords`)
return NextResponse.json({
success: true,
data: analysis,
stats: {
features: analysis.features.length,
keywords: analysis.keywords.length,
personas: analysis.personas.length,
useCases: analysis.useCases.length,
competitors: analysis.competitors.length,
dorkQueries: analysis.dorkQueries.length
}
})
} catch (error: any) {
console.error('❌ Manual analysis error:', error)
if (error.name === 'ZodError') {
return NextResponse.json(
{ error: 'Please provide product name and description' },
{ status: 400 }
)
}
return NextResponse.json(
{ error: error.message || 'Failed to analyze' },
{ status: 500 }
)
}
}