generated from autoblog/Seo
54 lines
2 KiB
TypeScript
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;
|
|
}
|
|
}
|