seo01/Template-04/src/services/geminiService.ts
2026-05-18 01:07:24 +00:00

54 lines
2 KiB
TypeScript

import { GoogleGenAI } from "@google/genai";
const ai = new GoogleGenAI({ apiKey: process.env.GEMINI_API_KEY || '' });
export async function generateSEOArticle(topic: string) {
try {
const response = await ai.models.generateContent({
model: "gemini-3-flash-preview",
contents: `Crie um artigo de blog profissional e altamente otimizado para SEO sobre o seguinte tópico: ${topic}.
O artigo deve estar em Português do Brasil.
Retorne APENAS um JSON no seguinte formato:
{
"title": "Título otimizado com palavra-chave",
"excerpt": "Um resumo atraente do artigo",
"content": "Conteúdo completo em Markdown, com H2, H3, bullets e parágrafos curtos",
"category": "SEO para Iniciantes",
"metaTitle": "Meta title SEO",
"metaDescription": "Meta description persuasiva",
"tags": ["tag1", "tag2"],
"readTime": "X min"
}
Certifique-se de que o conteúdo seja profundo, profissional e focado em autoridade.`,
config: {
responseMimeType: "application/json"
}
});
return JSON.parse(response.text || '{}');
} catch (error) {
console.error("Erro ao gerar artigo:", error);
throw error;
}
}
export async function summarizeSearchResults(query: string, results: any[]) {
try {
const titles = results.map(r => r.title).join(', ');
const response = await ai.models.generateContent({
model: "gemini-3-flash-preview",
contents: `O usuário pesquisou por "${query}" em um blog de autoridade em SEO.
Encontramos os seguintes artigos relacionados: ${titles}.
Crie um resumo muito curto (máximo 200 caracteres) explicando por que esses tópicos são importantes para a estratégia de SEO do usuário.
Seja direto, profissional e encorajador. Use Português do Brasil.`,
});
return response.text;
} catch (error) {
console.error("Erro ao resumir busca:", error);
return null;
}
}