import { GoogleGenAI, Type } from "@google/genai"; // Función auxiliar para obtener la instancia de IA de forma segura const getAIInstance = () => { const apiKey = process.env.API_KEY; if (!apiKey) { throw new Error("API Key no configurada"); } return new GoogleGenAI({ apiKey }); }; /** * Genera detalles completos para una idea de video usando Gemini 3 Flash. */ export const generateIdeaDetails = async (topic: string, niche: string) => { try { const ai = getAIInstance(); const response = await ai.models.generateContent({ model: "gemini-3-flash-preview", contents: `Actua como un experto estratega de contenido para YouTube. Nicho: ${niche} Tema propuesto: ${topic} Genera un plan de contenido optimizado. Incluye un titulo con alto CTR, una descripcion con palabras clave y un guion estructurado.`, config: { responseMimeType: "application/json", responseSchema: { type: Type.OBJECT, properties: { title: { type: Type.STRING, description: "Un titulo atractivo y optimizado para SEO." }, description: { type: Type.STRING, description: "Descripcion del video incluyendo llamadas a la accion." }, script: { type: Type.STRING, description: "Estructura detallada: Intro (gancho), Desarrollo y Outro." }, tags: { type: Type.ARRAY, items: { type: Type.STRING }, description: "Lista de etiquetas relevantes." } }, required: ["title", "description", "script", "tags"] } } }); const text = response.text; if (!text) throw new Error("La IA devolvio una respuesta vacia."); return JSON.parse(text); } catch (error) { console.error("Error en generateIdeaDetails:", error); return { title: topic, description: "No se pudo generar la descripcion. Verifica tu conexion.", script: "Guion no disponible.", tags: ["youtube", "video"] }; } }; /** * Provee consejos generales para el crecimiento del canal basados en el nicho. */ export const getChannelAdvice = async (niche: string) => { try { const ai = getAIInstance(); const response = await ai.models.generateContent({ model: "gemini-3-flash-preview", contents: `Eres un consultor de YouTube senior. Mi nicho es: ${niche}. Dame los 3 pilares fundamentales especificos para este nicho que me haran destacar. Responde de forma clara y motivadora usando Markdown.`, }); return response.text || "No se pudo obtener consejos en este momento."; } catch (error) { console.error("Error en getChannelAdvice:", error); return "Ocurrio un error al consultar al asesor virtual. Asegurate de que la API Key sea valida."; } };