بنقرة واحدة
blog-a-google-slides
Convierte entradas de blog en presentaciones visuales sorprendentes para Google Slides
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
القائمة
Convierte entradas de blog en presentaciones visuales sorprendentes para Google Slides
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
استنادا إلى تصنيف SOC المهني
Central Super-Skill that orchestrates all Skill Cells of the Conglomerate. Acts as a single entry point and intelligent router to specialized groups.
Enlace A2A del Grupo Backend. Gestiona la comunicación con otros grupos del Conglomerado.
Líder del Grupo Backend. Planifica y delega tareas de APIs, bases de datos, y arquitectura servidor a los especialistas del grupo.
Enlace A2A del Grupo Frontend. Gestiona la comunicación con otros grupos del Conglomerado.
Líder del Grupo Frontend. Planifica y delega tareas de UI/UX, React, Next.js, y desarrollo cliente a los especialistas del grupo.
Especialista en diseño web responsive y rápido usando Bootstrap 5.x. Enfocado en utilidades, personalización SASS y componentes accesibles.
| name | Blog a Google Slides |
| description | Convierte entradas de blog en presentaciones visuales sorprendentes para Google Slides |
Esta habilidad transforma entradas de blog en presentaciones profesionales y visualmente impactantes para Google Slides. El resultado incluye un script de Google Apps Script listo para ejecutar que genera automáticamente las diapositivas.
Lee y analiza la entrada de blog identificando:
| Elemento | Uso en la Presentación |
|---|---|
| Título principal | Diapositiva de portada |
| Subtítulos/H2 | Diapositivas de sección |
| Párrafos clave | Puntos de contenido |
| Listas | Bullets visuales |
| Citas destacadas | Diapositivas de cita |
| Datos/estadísticas | Diapositivas de impacto visual |
| Conclusiones | Diapositiva de cierre |
Crea una estructura que siga este flujo:
[!IMPORTANT] Las presentaciones deben ser visualmente sorprendentes. Aplica estos principios:
Sugiere una paleta coherente basada en el tema del blog:
const PALETAS = {
tecnologia: {
primario: '#1a73e8', // Azul Google
secundario: '#34a853', // Verde éxito
acento: '#ea4335', // Rojo atención
fondo: '#f8f9fa', // Gris claro
texto: '#202124' // Negro suave
},
negocios: {
primario: '#1e3a5f', // Azul corporativo
secundario: '#c9a227', // Dorado
acento: '#e74c3c', // Rojo
fondo: '#ffffff',
texto: '#2c3e50'
},
creativo: {
primario: '#6c5ce7', // Púrpura vibrante
secundario: '#00cec9', // Turquesa
acento: '#fd79a8', // Rosa
fondo: '#dfe6e9',
texto: '#2d3436'
},
salud: {
primario: '#00b894', // Verde menta
secundario: '#0984e3', // Azul cielo
acento: '#fdcb6e', // Amarillo suave
fondo: '#ffffff',
texto: '#2d3436'
}
};
Genera un script completo que el usuario pueda ejecutar en Google Apps Script:
/**
* Script generado por la habilidad Blog a Slides
* Ejecuta la función crearPresentacion() para generar las diapositivas
*/
function crearPresentacion() {
// Crear nueva presentación
const presentacion = SlidesApp.create('Título de la Presentación');
// Configurar dimensiones (16:9)
const slides = presentacion.getSlides();
// Eliminar diapositiva en blanco inicial
if (slides.length > 0) {
slides[0].remove();
}
// Definir colores del tema
const COLORES = {
primario: '#1a73e8',
secundario: '#34a853',
fondo: '#ffffff',
texto: '#202124'
};
// === DIAPOSITIVA 1: PORTADA ===
agregarPortada(presentacion, COLORES);
// === DIAPOSITIVAS DE CONTENIDO ===
// [Agregar según el análisis del blog]
// === DIAPOSITIVA FINAL ===
agregarCierre(presentacion, COLORES);
Logger.log('Presentación creada: ' + presentacion.getUrl());
return presentacion.getUrl();
}
function agregarPortada(presentacion, colores) {
const slide = presentacion.appendSlide(SlidesApp.PredefinedLayout.BLANK);
// Fondo con gradiente o color sólido
slide.getBackground().setSolidFill(colores.primario);
// Título principal
const titulo = slide.insertTextBox('TÍTULO IMPACTANTE');
titulo.setTop(200).setLeft(50).setWidth(620).setHeight(100);
titulo.getText().getTextStyle()
.setFontFamily('Montserrat')
.setFontSize(48)
.setBold(true)
.setForegroundColor('#ffffff');
titulo.getText().getParagraphStyle().setParagraphAlignment(SlidesApp.ParagraphAlignment.CENTER);
// Subtítulo
const subtitulo = slide.insertTextBox('Subtítulo descriptivo');
subtitulo.setTop(320).setLeft(50).setWidth(620).setHeight(60);
subtitulo.getText().getTextStyle()
.setFontFamily('Open Sans')
.setFontSize(24)
.setForegroundColor('#e8eaed');
subtitulo.getText().getParagraphStyle().setParagraphAlignment(SlidesApp.ParagraphAlignment.CENTER);
}
function agregarDiapositiva(presentacion, titulo, puntos, colores) {
const slide = presentacion.appendSlide(SlidesApp.PredefinedLayout.BLANK);
slide.getBackground().setSolidFill(colores.fondo);
// Título de sección
const tituloBox = slide.insertTextBox(titulo);
tituloBox.setTop(40).setLeft(50).setWidth(620).setHeight(60);
tituloBox.getText().getTextStyle()
.setFontFamily('Montserrat')
.setFontSize(36)
.setBold(true)
.setForegroundColor(colores.primario);
// Puntos de contenido
let yPos = 130;
puntos.forEach((punto, index) => {
const puntoBox = slide.insertTextBox('• ' + punto);
puntoBox.setTop(yPos).setLeft(70).setWidth(580).setHeight(50);
puntoBox.getText().getTextStyle()
.setFontFamily('Open Sans')
.setFontSize(20)
.setForegroundColor(colores.texto);
yPos += 55;
});
}
function agregarCita(presentacion, cita, autor, colores) {
const slide = presentacion.appendSlide(SlidesApp.PredefinedLayout.BLANK);
slide.getBackground().setSolidFill(colores.secundario);
// Cita grande centrada
const citaBox = slide.insertTextBox('"' + cita + '"');
citaBox.setTop(150).setLeft(60).setWidth(600).setHeight(150);
citaBox.getText().getTextStyle()
.setFontFamily('Playfair Display')
.setFontSize(32)
.setItalic(true)
.setForegroundColor('#ffffff');
citaBox.getText().getParagraphStyle().setParagraphAlignment(SlidesApp.ParagraphAlignment.CENTER);
// Autor
const autorBox = slide.insertTextBox('— ' + autor);
autorBox.setTop(320).setLeft(60).setWidth(600).setHeight(40);
autorBox.getText().getTextStyle()
.setFontFamily('Open Sans')
.setFontSize(18)
.setForegroundColor('#e8eaed');
autorBox.getText().getParagraphStyle().setParagraphAlignment(SlidesApp.ParagraphAlignment.CENTER);
}
function agregarCierre(presentacion, colores) {
const slide = presentacion.appendSlide(SlidesApp.PredefinedLayout.BLANK);
slide.getBackground().setSolidFill(colores.primario);
const gracias = slide.insertTextBox('¡Gracias!');
gracias.setTop(180).setLeft(50).setWidth(620).setHeight(80);
gracias.getText().getTextStyle()
.setFontFamily('Montserrat')
.setFontSize(56)
.setBold(true)
.setForegroundColor('#ffffff');
gracias.getText().getParagraphStyle().setParagraphAlignment(SlidesApp.ParagraphAlignment.CENTER);
const contacto = slide.insertTextBox('contacto@ejemplo.com | @usuario');
contacto.setTop(280).setLeft(50).setWidth(620).setHeight(40);
contacto.getText().getTextStyle()
.setFontFamily('Open Sans')
.setFontSize(20)
.setForegroundColor('#e8eaed');
contacto.getText().getParagraphStyle().setParagraphAlignment(SlidesApp.ParagraphAlignment.CENTER);
}
Proporciona al usuario:
crearPresentacion[!TIP] Puedes modificar los colores en el objeto
COLORESpara personalizar la paleta.
[!WARNING] Google Slides tiene límites de API. Si el blog es muy largo, divide en múltiples presentaciones.
[!CAUTION] Las imágenes deben agregarse manualmente o mediante URLs públicas. El script solo crea la estructura.
Para presentaciones aún más impactantes, sugiere al usuario:
| Elemento | Recurso Gratuito |
|---|---|
| Iconos | Flaticon, Heroicons |
| Fotos | Unsplash, Pexels |
| Paletas | Coolors, ColorHunt |
| Mockups | Smartmockups |
| Problema | Solución |
|---|---|
| Error de permisos | Autoriza la app en la primera ejecución |
| Script no corre | Verifica que seleccionaste la función correcta |
| Colores no aparecen | Asegúrate de usar formato hexadecimal (#RRGGBB) |
| Texto cortado | Reduce el tamaño de fuente o el contenido |