marketing-informe-pdf — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited marketing-informe-pdf (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Generar un informe de marketing profesional y visualmente cuidado en PDF usando el script Python scripts/generar_informe_pdf.py. La skill recoge toda la data disponible de auditorias, la estructura en el JSON esperado, invoca el script y produce un PDF con marca, medidores de score, barras, tablas comparativas, hallazgos y plan de accion priorizado.
/marketing informe-pdf o /marketing informe-pdf <dominio>| Formato | Mejor para | Pros | Contras |
|---|---|---|---|
| Presentaciones a cliente, adjunto en email, sales collateral | Aspecto profesional, formato consistente, graficos, printable | Mas dificil de editar, requiere script | |
| Markdown | Uso interno, referencia rapida, edicion iterativa, git | Facil de editar, legible en cualquier editor, git-friendly | Menos pulido visual, sin graficos |
Regla: si el informe va a cliente o prospecto, usa PDF. Para interno o edicion posterior, Markdown.
Revisa archivos de skills previas en el directorio del proyecto:
Fuentes primarias:
AUDITORIA-MARKETING.md — auditoria globalLANDING-CRO.md — analisis CROAUDITORIA-SEO.md — hallazgos SEOVOZ-MARCA.md — analisis de voz de marcaINFORME-COMPETIDORES.md — comparativa competitivaANALISIS-FUNNEL.md — analisis de funnelCALENDARIO-REDES.md — auditoria de redesSECUENCIAS-EMAIL.md — auditoria de emailCAMPANAS-ADS.md — auditoria de adsSi no hay data previa:
/marketing auditoria <url>scripts/analizar_pagina.py para recoger datos automaticos: python3 scripts/analizar_pagina.py <url>El script scripts/generar_informe_pdf.py espera un JSON con esta estructura exacta:
{
"url": "https://ejemplo.com",
"date": "1 de marzo de 2026",
"brand_name": "Ejemplo S.L.",
"overall_score": 62,
"executive_summary": "Resumen de 2-4 frases sobre salud de marketing, oportunidades clave e impacto estimado de implementar las recomendaciones.",
"categories": {
"Contenido y Mensaje": {
"score": 68,
"weight": "25%"
},
"Optimizacion de Conversion": {
"score": 52,
"weight": "25%"
},
"SEO y Descubrimiento": {
"score": 74,
"weight": "15%"
},
"Posicionamiento Competitivo": {
"score": 48,
"weight": "15%"
},
"Marca y Confianza": {
"score": 70,
"weight": "10%"
},
"Crecimiento y Estrategia": {
"score": 55,
"weight": "10%"
}
},
"findings": [
{
"severity": "Critico",
"finding": "Descripcion del hallazgo mas importante"
},
{
"severity": "Alto",
"finding": "Descripcion de hallazgo de alta prioridad"
},
{
"severity": "Medio",
"finding": "Descripcion de hallazgo de prioridad media"
},
{
"severity": "Bajo",
"finding": "Descripcion de hallazgo menor"
}
],
"quick_wins": ["Primer quick win", "Segundo quick win", "Tercer quick win"],
"medium_term": [
"Primera accion medio plazo",
"Segunda accion medio plazo",
"Tercera accion medio plazo"
],
"strategic": [
"Primera accion estrategica",
"Segunda accion estrategica",
"Tercera accion estrategica"
],
"competitors": [
{
"name": "Competidor A",
"positioning": "Posicion en el mercado",
"pricing": "Modelo de pricing",
"social_proof": "Senales de confianza",
"content": "Enfoque de contenido"
},
{
"name": "Competidor B",
"positioning": "Posicion en el mercado",
"pricing": "Modelo de pricing",
"social_proof": "Senales de confianza",
"content": "Enfoque de contenido"
}
]
}#### url (string, obligatorio)
URL completa con protocolo.
#### date (string, obligatorio)
Fecha de generacion. Formato: "DD de Mes de AAAA" (ej. "1 de marzo de 2026").
#### brand_name (string, obligatorio)
Nombre de la empresa/marca. Aparece en headers de la tabla competitiva.
#### overall_score (entero, 0-100, obligatorio)
Media ponderada de las 6 categorias. Calculo:
overall_score = (contenido * 0,25) + (conversion * 0,25) + (seo * 0,15) + (competitivo * 0,15) + (marca * 0,10) + (crecimiento * 0,10)Justificacion de pesos: priorizamos conversion sobre SEO porque la mayoria de webs B2B en Espana viven de trafico de pago + outbound, no de SEO organico.
#### executive_summary (string, obligatorio)
2-4 frases cubriendo:
Breve y potente. Aparece en portada debajo del gauge.
#### categories (object, obligatorio)
Exactamente 6 categorias:
| Categoria | Que mide | Guia de scoring |
|---|---|---|
| Contenido y Mensaje | Calidad de copy, value prop, claridad de headline, texto de CTAs, consistencia de voz de marca | 80+: claro, orientado a beneficio, especifico. 60-79: correcto pero generico. <60: vago, feature-focused |
| Optimizacion de Conversion | Social proof, formularios, ubicacion de CTAs, gestion de objeciones, urgencia | 80+: multiples pruebas, forms optimizados, CTAs claros. 60-79: algunos elementos. <60: faltan criticos |
| SEO y Descubrimiento | Titles, meta, headers, schema, linking interno, velocidad | 80+: optimizado. 60-79: presente con gaps. <60: issues mayores o ausencias |
| Posicionamiento Competitivo | Diferenciacion, transparencia de pricing, contenido comparativo, conciencia de mercado | 80+: posicion clara, comparativas. 60-79: algo de diferenciacion. <60: sin posicionamiento |
| Marca y Confianza | Calidad de diseno, trust badges, indicadores de seguridad, aspecto profesional | 80+: diseno moderno, senales de confianza. 60-79: diseno correcto. <60: desfasado |
| Crecimiento y Estrategia | Captura de leads, email marketing, estrategia de contenido, canales de adquisicion | 80+: estrategia multicanal. 60-79: algunos canales activos. <60: sin estrategia clara |
#### findings (array, obligatorio)
Array de hallazgos con severity y finding.
Niveles de severidad:
Critico — perdida directa de ingresos o clientes. Corregir ya.Alto — impacto significativo en crecimiento. 1-2 semanas.Medio — oportunidad relevante. 1 mes.Bajo — nice-to-have. Cuando haya tiempo.Como escribir hallazgos efectivos:
5-10 hallazgos. Ordena de mas a menos severo.
#### quick_wins (array, obligatorio)
3-5 acciones ejecutables en una semana con esfuerzo minimo. Cada una concreta y accionable.
Buen quick win: "Reescribir el headline de home de 'Bienvenido a nuestra plataforma' a 'Reduce tu tiempo de reporting un 75% — analytics automatico para equipos de growth'"
Mal quick win: "Mejorar el headline" (demasiado vago)
#### medium_term (array, obligatorio)
3-5 acciones de 1-3 meses.
#### strategic (array, obligatorio)
3-5 acciones de 3-6 meses. Cambios de fundacion.
#### competitors (array, opcional)
Hasta 3 competidores para la tabla comparativa. Si no hay data, omite el campo y el script se salta la seccion.
Escribe la data en un fichero JSON temporal:
cat > /tmp/datos_informe.json << 'JSONEOF'
{
... JSON ensamblado ...
}
JSONEOFCheck de requisitos: Verifica que reportlab esta instalado:
python3 -c "import reportlab" 2>/dev/null || pip3 install reportlabGenerar el informe:
python3 scripts/generar_informe_pdf.py /tmp/datos_informe.json "INFORME-MARKETING-<dominio>.pdf"Sustituye <dominio> por el dominio del cliente (sin protocolo ni www), usando guiones en vez de puntos. Ejemplos:
ejemplo.com -> INFORME-MARKETING-ejemplo-com.pdfmiapp.io -> INFORME-MARKETING-miapp-io.pdfModo demo (sin argumentos): Ejecutar el script sin argumentos genera un informe de ejemplo con placeholders:
python3 scripts/generar_informe_pdf.py
# Genera: INFORME-MARKETING-ejemplo.pdfComprueba que el PDF se genero:
ls -la "INFORME-MARKETING-<dominio>.pdf"Reporta la ruta y el tamano al usuario.
Borra el JSON temporal:
rm /tmp/datos_informe.jsonEl PDF generado incluye:
Paleta profesional del PDF:
| Elemento | Color | Hex |
|---|---|---|
| Primario (headers, titulos) | Azul oscuro | #1B2A4A |
| Acento (enlaces, highlights) | Azul | #2D5BFF |
| Highlight (atencion) | Naranja | #FF6B35 |
| Exito (scores altos) | Verde | #00C853 |
| Advertencia (scores medios) | Ambar | #FFB300 |
| Danger (scores bajos, critico) | Rojo | #FF1744 |
| Fondo claro | Gris claro | #F5F7FA |
| Texto body | Gris oscuro | #2C3E50 |
| Texto secundario | Gris medio | #7F8C9B |
| Bordes | Borde claro | #E0E6ED |
| Issue | Solucion |
|---|---|
ModuleNotFoundError: No module named 'reportlab' | pip3 install reportlab |
| Script genera PDF vacio | Revisa que el JSON tiene todos los campos obligatorios |
| Gauge no renderiza | overall_score debe ser un numero 0-100 |
| Tabla de competidores ausente | Asegura que competitors tiene name, positioning, pricing, social_proof, content |
| PDF de una sola pagina | Revisa errores de parseo JSON: python3 -c "import json; json.load(open('/tmp/datos_informe.json'))" |
| Fuentes raras | El script usa Helvetica (nativa de reportlab). Sin fuentes custom. |
Mejor workflow combinado:
/marketing auditoria <url> — data de auditoria completa/marketing competidores <url> — data comparativa/marketing seo <url> — hallazgos SEO detallados/marketing landing <url> — analisis CRO/marketing informe-pdf <url> — compila todo en PDFLa skill del PDF busca automaticamente los outputs de estas skills e incorpora la data al JSON.
INFORME-MARKETING-<dominio>.pdf~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.