import OpenAI from "openai"; // the newest OpenAI model is "gpt-5" which was released August 7, 2025. do not change this unless explicitly requested by the user const openai = new OpenAI({ apiKey: process.env.OPENAI_API_KEY }); export interface MediaOutletProfile { name: string; category: string; focusSubject: string; bio: string; fullBio: string[]; } export async function generateDetailedProfile(outlet: MediaOutletProfile): Promise { try { const prompt = `Create a comprehensive, Wikipedia-style profile for the following media outlet/subject. The profile should be detailed, extensive, and well-structured with multiple sections. Write in a neutral, encyclopedic tone similar to Wikipedia articles. Media Outlet Information: - Name: ${outlet.name} - Category: ${outlet.category} - Focus Subject: ${outlet.focusSubject} - Current Bio: ${outlet.bio} - Additional Info: ${outlet.fullBio.join(' ')} Please create a detailed profile that includes: 1. **Overview/Introduction** - Comprehensive introduction paragraph 2. **Background & History** - Detailed history and formation 3. **Key Achievements** - Major accomplishments and milestones 4. **Technology & Innovation** - Technical aspects, innovations, or methodologies (if applicable) 5. **Market Position & Influence** - Position in industry/market and influence 6. **Notable Developments** - Significant events, partnerships, or developments 7. **Future Outlook** - Current projects and future direction 8. **Industry Impact** - Broader impact on the industry or field For people: Include personal background, career history, education, major contributions, and influence. For companies: Include founding story, business model, products/services, market position, and key partnerships. For topics/technologies: Include technical background, development history, applications, and significance. Make it comprehensive and informative, similar to a detailed Wikipedia article. Use HTML formatting with proper headings (h2, h3), paragraphs, and lists where appropriate. Aim for 2000-3000 words. Respond with only the HTML content, no markdown or additional formatting.`; const response = await openai.chat.completions.create({ model: "gpt-5", messages: [{ role: "user", content: prompt }], max_completion_tokens: 4000 }); return response.choices[0].message.content || ""; } catch (error) { console.error("Error generating detailed profile:", error); throw new Error(`Failed to generate profile: ${error instanceof Error ? error.message : "Unknown error"}`); } } export async function generateBatchProfiles(outlets: MediaOutletProfile[]): Promise> { const profiles: Record = {}; for (const outlet of outlets) { try { console.log(`Generating profile for ${outlet.name}...`); const profile = await generateDetailedProfile(outlet); profiles[outlet.name] = profile; // Add a small delay to avoid rate limiting await new Promise(resolve => setTimeout(resolve, 1000)); } catch (error) { console.error(`Failed to generate profile for ${outlet.name}:`, error); profiles[outlet.name] = `

Profile Generation Error

Unable to generate detailed profile for ${outlet.name}. Please try again later.

`; } } return profiles; }