Moz Pro: Guía Completa para Agencias SEO 2025

Moz Pro es una de las suites SEO más veteranas y respetadas de la industria. Creadores del famoso Domain Authority (DA), ofrecen herramientas pensadas específicamente para agencias que gestionan múltiples clientes con necesidades profesionales.

La realidad: Moz Pro es usado por más de 35,000 agencias y empresas globalmente. Su enfoque: métricas claras, datos accionables, interfaz orientada a reportes cliente, y estabilidad probada durante 15+ años.

En esta guía exhaustiva aprenderás a dominar Moz Pro: Domain Authority y cómo interpretarlo, Link Explorer para linkbuilding, Keyword Explorer con métricas únicas, Site Crawl para auditorías técnicas, Rank Tracking multi-cliente, y cómo integrar todo en workflow agencia.

🚀 ¿Gestionas SEO para múltiples clientes?

Te ayudo a implementar procesos SEO escalables para agencias usando Moz Pro y otras herramientas profesionales.

Consultoría para agencias SEO

🎯 Qué es Moz Pro y Por Qué las Agencias lo Eligen

Historia y Filosofía Moz

Fundada en 2004 por Rand Fishkin (famoso por Whiteboard Friday), Moz es una de las empresas SEO más influyentes. Crearon el concepto de Domain Authority (DA), métrica adoptada universalmente como estándar industria.

Filosofía Moz: Transparencia, educación (Moz Blog = referencia SEO), métricas confiables, enfoque ético (white-hat SEO).

Componentes Principales Moz Pro

  • Domain Authority (DA): Métrica 0-100 predicción capacidad ranking dominio
  • Page Authority (PA): Similar a DA pero a nivel página individual
  • Link Explorer: Base datos 40+ billones enlaces, análisis backlinks profundo
  • Keyword Explorer: Investigación keywords con métricas únicas (Priority, Difficulty)
  • Site Crawl: Auditorías técnicas SEO automatizadas
  • Rank Tracking: Seguimiento posiciones keywords desktop/mobile/local
  • On-Page Grader: Análisis optimización on-page por keyword específica

Moz Pro vs Competencia (Agencias)

📊 Comparativa Herramientas SEO para Agencias:

  • Moz Pro: Mejor para reportes cliente, métricas claras (DA/PA), estabilidad. Precio medio ($179-599/mes)
  • Semrush: Más funcionalidades marketing (PPC, social). Mejor datos competencia. Precio $129-499/mes
  • Ahrefs: Mejor análisis backlinks, base datos mayor. Enfoque técnico SEO. Precio $99-999/mes
  • Agencia típica: Moz Pro (reportes cliente) + Ahrefs/Semrush (análisis profundo) + GSC (datos reales)
  • Ventaja única Moz: Domain Authority = métrica entendible para clientes no-SEO

📈 Domain Authority (DA): La Métrica que Define Moz

Qué es Domain Authority

Domain Authority (DA) es una métrica 0-100 que predice la capacidad de un dominio completo de rankear en resultados búsqueda. Cuanto mayor DA, mayor autoridad y potencial ranking.

Cómo se calcula: Algoritmo machine learning entrenado con datos Google. Factores principales:

  • Cantidad backlinks (enlaces entrantes)
  • Calidad backlinks (DA dominios que enlazan)
  • Diversidad linking domains (dominios únicos)
  • Perfil anchor text
  • Spam score
  • Edad dominio
  • Estructura interna links

Importante: DA NO es usado por Google. Es métrica Moz predictiva, NO factor ranking directo.

Interpretar Domain Authority

Escala DA:

  • DA 0-20: Dominios nuevos, poca autoridad, difícil competir nichos establecidos
  • DA 21-40: Autoridad moderada, sitios establecidos pero no líderes
  • DA 41-60: Buena autoridad, competitivos en la mayoría nichos
  • DA 61-80: Alta autoridad, sitios muy establecidos, marcas reconocidas
  • DA 81-100: Autoridad máxima (Google.com DA 95, Facebook DA 96, NYTimes DA 95)

Contexto importante: DA es relativo y comparativo. Un DA 35 excelente en nicho poco competido, insuficiente en nicho ultra-competido.

Mejorar Domain Authority (Estratégicamente)

NO persigas DA como objetivo directo. Mejora factores que indirectamente aumentan DA:

  1. Conseguir backlinks calidad: De dominios DA 40+ (guest posting, digital PR, menciones prensa)
  2. Diversificar linking domains: 100 dominios únicos > 500 enlaces desde 10 dominios
  3. Eliminar/disavow enlaces tóxicos: Reduce spam score
  4. Crear contenido linkeable: Recursos, estudios, infografías que atraigan enlaces naturales
  5. Optimizar linking interno: Distribuye autoridad entre páginas
  6. Paciencia: DA aumenta lentamente (meses/años, no semanas)

Page Authority (PA)

Similar a DA pero a nivel página individual. Útil para predecir capacidad ranking URLs específicas.

Uso estratégico PA:

  • Analizar competencia en SERPs: Si top 10 tienen PA 40-50, necesitas PA similar para competir
  • Identificar páginas fuertes/débiles tu sitio
  • Priorizar internal linking a páginas importantes bajas en PA
  • Decidir qué páginas merecen esfuerzo linkbuilding externo

"Cliente agencia turismo: DA inicial 28, competidores DA 45-55. Estrategia 14 meses: linkbuilding ético (guest posts medios turismo, colaboraciones bloggers, menciones prensa local digital). Conseguidos 87 backlinks nuevos desde dominios DA 35-60. Resultado: DA aumentó 28→42. Pero lo importante: rankings mejoraron promedio 12 posiciones keywords principales. Tráfico orgánico +180%. DA correlacionó con mejoras reales. La métrica funcionó como North Star para estrategia linkbuilding."

🔍 Keyword Explorer: Research con Métricas Únicas

Métricas Keyword Explorer

Moz Keyword Explorer destaca por métricas únicas ausentes en otras herramientas:

  • Volume: Búsquedas mensuales estimadas
  • Difficulty: 0-100 dificultad rankear (basada en DA/PA competencia)
  • Organic CTR: % estimado clicks resultados orgánicos (importante: si CTR bajo, SERP features roban clicks)
  • Priority: 0-100 métrica combinada (volumen + dificultad + CTR) → prioriza qué keywords atacar primero

Búsqueda Keyword Research

Paso 1: Keyword Explorer → Introduce keyword seed

Paso 2: Analiza métricas principales

Ejemplo: "marketing digital agencias"

  • Volume: 1,600 búsquedas/mes
  • Difficulty: 52 (medio-alto)
  • Organic CTR: 45% (54% clicks van a ads/SERP features)
  • Priority: 58 (prioridad media-alta considerando todos factores)

Paso 3: Explora "Keyword Suggestions"

4 tipos sugerencias:

  • Keyword Suggestions: Related keywords por relevancia semántica
  • Related Questions: Preguntas usuarios (oro para contenido FAQ)
  • Search Suggestions: Autocompletado Google (long-tail reales)
  • SERP Analysis: Keywords para las que rankea top 10 actual (oportunidades)

Usar Métrica Priority (Game-Changer Agencias)

Priority Score combina volumen, dificultad, y CTR en métrica única 0-100.

Cómo funciona:

  • Volumen alto + dificultad baja + CTR alto = Priority alta (90-100)
  • Volumen bajo + dificultad alta + CTR bajo = Priority baja (0-20)

Workflow agencia eficiente:

  1. Keyword research exporta 200-500 keywords
  2. Ordena por Priority descendente
  3. Filtra Priority 60+ (mejores oportunidades)
  4. Selecciona top 30-50 keywords esas
  5. Asigna a creación contenido priorizado

Ahorro tiempo brutal: En lugar de analizar manualmente cada keyword balanceando factores, Priority automatiza decisión.

Organic CTR: La Métrica Olvidada

Organic CTR muestra % estimado clicks a resultados orgánicos (vs ads, featured snippets, knowledge panels, etc.).

Por qué CRÍTICO:

  • Keyword 10,000 búsquedas pero Organic CTR 15% = solo 1,500 clicks disponibles
  • Keyword 2,000 búsquedas pero Organic CTR 70% = 1,400 clicks disponibles

Estrategia:

  • CTR <30%: SERP dominada por ads/features. Difícil capturar tráfico incluso rankeando alto. Prioridad baja.
  • CTR 30-50%: Moderado. Rankear top 3 aún rentable.
  • CTR 50-70%: Bueno. Mayoría clicks disponibles para orgánico.
  • CTR 70%+: Excelente. Pocos ads/features. Máximo potencial tráfico.

SERP Analysis: Análisis Competencia

Paso 1: Keyword Explorer → Keyword específica → "SERP Analysis"

Moz muestra top 10 actual Google con métricas cada resultado:

  • DA dominio
  • PA página específica
  • Linking Domains a esa página
  • On-Page Grade (A-F optimización on-page)

Análisis competitivo:

  1. Revisa DA promedio top 10 (benchmark autoridad necesaria)
  2. Revisa PA promedio (autoridad página específica)
  3. Revisa Linking Domains promedio (backlinks necesarios esa URL)
  4. Identifica "debilidad" en top 10 (ej. posición #8 tiene DA 35, PA 28, 5 backlinks = vulnerable, superable)

Decisión GO/NO-GO:

  • Tu DA ≥ DA promedio top 10: GO (competitivo)
  • Tu DA < DA promedio pero diferencia <15 puntos: GO con linkbuilding intenso
  • Tu DA mucho menor (gap 20+ puntos): NO-GO o largo plazo (primero mejorar DA)

🔧 Site Crawl: Auditorías Técnicas Automatizadas

Configurar Site Crawl

Paso 1: Campaigns → Crear nueva campaña cliente

Paso 2: Configura:

  • Domain: Dominio cliente
  • Campaign Name: Nombre descriptivo
  • Search Engines: Google (principal), Bing (opcional)
  • Location: País/ciudad target SEO local

Paso 3: Site Crawl automático semanal

Moz rastrea sitio detectando:

  • Errores técnicos (404s, 500s, redirect chains)
  • Problemas on-page (duplicates, missing elements)
  • Oportunidades optimización

Tipos Problemas Detectados

Errores Críticos (High Priority)

  • 4XX Client Errors: Páginas 404, 403, etc. (enlaces rotos)
  • 5XX Server Errors: Servidor caído/error
  • Duplicate Content: Contenido idéntico múltiples URLs
  • Redirect Chains: Múltiples redirects secuenciales (A→B→C)
  • Missing Title Tags: Páginas sin </li> <li><strong>Duplicate Title Tags:</strong> Múltiples páginas mismo título</li> </ul> <h4>Avisos (Medium Priority)</h4> <ul> <li><strong>Missing Meta Descriptions:</strong> Sin meta description</li> <li><strong>Duplicate Meta Descriptions:</strong> Meta duplicadas</li> <li><strong>Thin Content:</strong> Páginas <200 palabras</li> <li><strong>Missing H1:</strong> Sin heading principal</li> <li><strong>Multiple H1s:</strong> Más de un H1</li> </ul> <h4>Avisos (Low Priority)</h4> <ul> <li><strong>Missing Alt Text:</strong> Imágenes sin alt</li> <li><strong>Large Page Size:</strong> Páginas pesadas</li> <li><strong>Long Titles:</strong> Títulos >60 caracteres (truncados)</li> </ul> <h3>Priorización Fixes (Metodología Agencia)</h3> <p><strong>Framework impacto/esfuerzo:</strong></p> <table class="w-full my-6 text-sm"> <thead> <tr class="border-b-2 border-brand-blue"> <th class="text-left py-2">Problema</th> <th class="text-left py-2">Impacto SEO</th> <th class="text-left py-2">Esfuerzo Fix</th> <th class="text-left py-2">Prioridad</th> </tr> </thead> <tbody> <tr class="border-b"> <td class="py-2">404 errors</td> <td>Alto</td> <td>Bajo (redirects 301)</td> <td>🔴 Crítica</td> </tr> <tr class="border-b"> <td class="py-2">Duplicate content</td> <td>Alto</td> <td>Medio (canonicals)</td> <td>🔴 Crítica</td> </tr> <tr class="border-b"> <td class="py-2">Duplicate titles</td> <td>Alto</td> <td>Medio (reescribir)</td> <td>🟠 Alta</td> </tr> <tr class="border-b"> <td class="py-2">Missing metas</td> <td>Medio</td> <td>Bajo (escribir)</td> <td>🟡 Media</td> </tr> <tr class="border-b"> <td class="py-2">Missing alts</td> <td>Bajo</td> <td>Bajo (añadir)</td> <td>🟢 Baja</td> </tr> </tbody> </table> <p><strong>Sprint arreglos:</strong> Semana 1 críticos, semana 2-3 altos, semana 4 medios, optimizaciones continuas bajos.</p> <h3>On-Page Grader</h3> <p> Funcionalidad única Moz: <strong>analiza optimización específica página para keyword target</strong>. </p> <p><strong>Paso 1:</strong> Site Crawl → Selecciona URL → "Grade This Page"</p> <p><strong>Paso 2:</strong> Introduce keyword objetivo para esa página</p> <p><strong>Paso 3:</strong> Moz analiza 30+ factores on-page, da grade A-F</p> <p><strong>Factores analizados:</strong></p> <ul> <li>Keyword en title, H1, URL, meta description</li> <li>Densidad keyword (ni muy baja ni keyword stuffing)</li> <li>Longitud contenido</li> <li>Presencia multimedia (imágenes, videos)</li> <li>Internal linking</li> <li>Velocidad página</li> <li>Mobile-friendly</li> </ul> <p><strong>Valor agencia:</strong> Reportes cliente mostrando "antes/después" grades (ej. "Tu página era F, optimizamos a A, resultados: +12 posiciones").</p> </div> <div id="rank-tracking"> <h2>📊 Rank Tracking: Seguimiento Multi-Cliente</h2> <h3>Configurar Rank Tracking</h3> <p><strong>Por campaña cliente:</strong></p> <ol> <li>Campaign → Rankings → Añade keywords</li> <li>Especifica ubicación geográfica (importante SEO local)</li> <li>Desktop vs Mobile (trackea ambos)</li> <li>Frecuencia actualización (semanal estándar, diaria planes premium)</li> </ol> <p><strong>Límites keywords:</strong> Depende plan Moz Pro (150-5000 keywords totales todas campañas).</p> <h3>Dashboards Rankings</h3> <p><strong>Vistas disponibles:</strong></p> <ul> <li><strong>Ranking Overview:</strong> Evolución promedio posiciones</li> <li><strong>Keywords Detail:</strong> Posición exacta cada keyword + cambios vs período anterior</li> <li><strong>Visibility Score:</strong> Métrica 0-100 visibilidad general (pondera posiciones × volumen)</li> <li><strong>SERP Features:</strong> Qué features aparecen (featured snippets, People Also Ask, etc.)</li> <li><strong>Competitors:</strong> Comparación rankings vs competidores</li> </ul> <h3>Análisis Accionable</h3> <p><strong>Keywords posiciones 11-20 (página 2):</strong></p> <ul> <li>Oportunidad mejorar a top 10 (mayor impacto tráfico)</li> <li>Acción: Revisar contenido, mejorar on-page, conseguir 3-5 backlinks, internal linking</li> </ul> <p><strong>Keywords posiciones 4-10:</strong></p> <ul> <li>Apuntar a top 3 (capturan 60% clicks)</li> <li>Acción: Mejorar title CTR, expandir contenido, actualizar fecha, conseguir backlinks autoridad</li> </ul> <p><strong>Keywords caídas significativas (>5 posiciones):</strong></p> <ul> <li>Investigar causa: competencia nueva, algoritmo update, contenido desactualizado</li> <li>Acción: Actualizar contenido, revisar backlinks perdidos, mejorar UX signals</li> </ul> <h3>Reportes Cliente Automatizados</h3> <p><strong>Moz permite reportes automáticos PDF/email:</strong></p> <ul> <li>Frecuencia: semanal/mensual</li> <li>White-label (tu branding agencia)</li> <li>Métricas incluidas: rankings, DA evolution, backlinks nuevos, site health</li> </ul> <p><strong>Template reporte mensual agencia:</strong></p> <ol> <li><strong>Executive Summary:</strong> Highlights mes (keywords mejoradas, DA, tráfico estimado)</li> <li><strong>Rankings Evolution:</strong> Tabla keywords principales + cambios</li> <li><strong>Visibility Score Trend:</strong> Gráfico evolución visibilidad</li> <li><strong>Backlinks Update:</strong> Nuevos enlaces conseguidos</li> <li><strong>Site Health:</strong> Errores arreglados, score actual</li> <li><strong>Next Month Actions:</strong> Plan optimizaciones próximo mes</li> </ol> </div> <div id="workflow-agencia"> <h2>🚀 Workflow Completo Agencia con Moz Pro</h2> <h3>Onboarding Nuevo Cliente</h3> <p><strong>Día 1-3: Auditoría Inicial</strong></p> <ol> <li>Crear campaña Moz Pro (dominio cliente)</li> <li>Link Explorer → Analizar DA, backlinks actuales, spam score</li> <li>Site Crawl → Detectar errores técnicos</li> <li>Keyword Explorer → Research keywords nicho cliente</li> <li>Benchmark competencia (DA, backlinks, keywords)</li> </ol> <p><strong>Entregable:</strong> Informe auditoría completo (estado actual, problemas detectados, oportunidades, roadmap 90 días).</p> <h3>Mes 1-3: Fundamentos</h3> <p><strong>Fixes técnicos:</strong></p> <ul> <li>Arreglar errores Site Crawl (404s, duplicates, missing elements)</li> <li>Optimizar on-page páginas principales (On-Page Grader → grade A)</li> <li>Limpiar backlinks tóxicos (Spam Score >50%)</li> </ul> <p><strong>Keyword strategy:</strong></p> <ul> <li>Seleccionar 20-30 keywords objetivo (Priority 60+)</li> <li>Asignar keywords a páginas existentes o nuevas</li> <li>Configurar Rank Tracking</li> </ul> <p><strong>Linkbuilding inicial:</strong></p> <ul> <li>Link Intersect → Identificar 50 prospectos</li> <li>Outreach inicial conseguir 5-10 backlinks</li> </ul> <h3>Mes 4-12: Escalado</h3> <p><strong>Contenido:</strong></p> <ul> <li>Crear 2-4 artículos/mes keywords informacionales (Keyword Explorer suggestions)</li> <li>Actualizar contenido existente bajando posiciones</li> </ul> <p><strong>Linkbuilding sostenido:</strong></p> <ul> <li>5-15 backlinks/mes según presupuesto cliente</li> <li>Monitorear DA evolución mensual (objetivo +5-10 puntos/año)</li> </ul> <p><strong>Optimización continua:</strong></p> <ul> <li>Site Crawl mensual (mantener salud técnica)</li> <li>On-Page Grader páginas nuevas</li> <li>Ajustar estrategia según Rank Tracking trends</li> </ul> <h3>Reportes Cliente</h3> <p><strong>Semanal (interno agencia):</strong> Revisar rankings, detectar anomalías</p> <p><strong>Mensual (cliente):</strong> Reporte completo PDF con métricas clave, progreso, próximos pasos</p> <p><strong>Trimestral (estratégico):</strong> Revisión estrategia, ajustes roadmap, análisis ROI</p> </div> <div id="planes-precios"> <h2>💰 Planes y Precios Moz Pro</h2> <h3>Planes Disponibles (2025)</h3> <p><strong>Starter ($79/mes o $790/año):</strong></p> <ul> <li>3 campañas</li> <li>300 keywords tracked</li> <li>Site Crawl 10,000 páginas</li> <li>5,000 queries Keyword Explorer/mes</li> <li>Ideal: Freelancers, pequeñas agencias</li> </ul> <p><strong>Standard ($179/mes o $1,790/año):</strong></p> <ul> <li>10 campañas</li> <li>1,500 keywords tracked</li> <li>Site Crawl 100,000 páginas</li> <li>15,000 queries Keyword Explorer/mes</li> <li>Ideal: Agencias medianas (8-15 clientes)</li> </ul> <p><strong>Medium ($299/mes o $2,990/año):</strong></p> <ul> <li>25 campañas</li> <li>3,000 keywords tracked</li> <li>Site Crawl 200,000 páginas</li> <li>30,000 queries Keyword Explorer/mes</li> <li>Ideal: Agencias grandes (20-30 clientes)</li> </ul> <p><strong>Large ($599/mes o $5,990/año):</strong></p> <ul> <li>50 campañas</li> <li>5,000 keywords tracked</li> <li>Site Crawl 500,000 páginas</li> <li>60,000 queries Keyword Explorer/mes</li> <li>Soporte prioritario</li> <li>Ideal: Agencias enterprise (40+ clientes)</li> </ul> <div class="highlight-box"> <h4 class="font-display text-xl font-semibold text-brand-black mb-3"> 🎯 ¿Qué Plan Elegir para Agencia? </h4> <ul> <li><strong>Cálculo:</strong> ~1 campaña por cliente + buffer. Si 8 clientes → Standard (10 campañas)</li> <li><strong>Keywords:</strong> ~50-150 keywords/cliente. 10 clientes × 100 = 1,000 keywords → Standard suficiente</li> <li><strong>Upgrade indicators:</strong> Alcanzas 80% límite campañas/keywords → sube plan</li> <li><strong>Ahorro anual:</strong> ~10% vs mensual (paga año adelantado)</li> </ul> </div> </div> <div id="conclusion"> <h2>🎯 Conclusión: Moz Pro como Herramienta Core Agencia</h2> <p> Moz Pro brilla en <strong>simplicidad, métricas claras (DA/PA), y enfoque reportes cliente</strong>. No tiene la base datos más grande (esa es Ahrefs) ni las más funcionalidades (esa es Semrush), pero ofrece balance perfecto profesionalismo-usabilidad para agencias. </p> <p> Domain Authority se convirtió en estándar industria porque es <strong>métrica entendible para clientes no-técnicos</strong>. "Mejoramos tu DA de 28 a 42" resuena más que explicar "conseguimos 87 backlinks desde dominios autoridad variada". </p> <p> Para agencias que priorizan claridad, reportes profesionales, y métricas accionables sobre complejidad técnica, <strong>Moz Pro es elección excelente</strong>. Combinado con GSC (datos reales) y herramienta complementaria análisis profundo (Ahrefs trial puntual), tienes stack completo. </p> <div class="cta-box bg-gradient-to-br from-brand-blue/10 to-brand-primary/10"> <h3 class="font-display text-2xl font-bold text-brand-black mb-4"> ¿Gestionas SEO para Múltiples Clientes? </h3> <p class="text-base text-brand-black/80 mb-6"> Te ayudo a implementar <strong>procesos SEO escalables usando Moz Pro</strong> y otras herramientas profesionales. Workflows optimizados, reportes automatizados, resultados medibles. </p> <ul class="text-left text-brand-black/80 mb-6 space-y-2"> <li>✅ Setup Moz Pro multi-cliente optimizado</li> <li>✅ Templates reportes automatizados white-label</li> <li>✅ Workflows auditorías, linkbuilding, content</li> <li>✅ KPIs y dashboards cliente</li> <li>✅ Integración stack herramientas (Moz + GSC + Analytics)</li> </ul> <div class="flex flex-col gap-3 sm:flex-row sm:justify-center"> <a href="https://cristianprograma.com/contacto/" class="inline-flex items-center justify-center gap-2 rounded-full bg-gradient-to-r from-brand-blue to-brand-primary px-8 py-4 font-semibold shadow-lg transition hover:-translate-y-1" style="color: white;"> Consultoría agencias SEO <svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"> <path d="M5 12h14"></path> <path d="m12 5 7 7-7 7"></path> </svg> </a> </div> </div> <p class="text-lg font-semibold text-brand-black mt-12"> Moz Pro: métricas claras, reportes profesionales, clientes satisfechos. </p> </div> <!-- Botones de compartir en redes sociales --> <div class="mt-12 pt-8 border-t border-gray-200"> <div class="social-share" data-url="https://cristianprograma.com/blog/moz-pro-guia-agencias/"> <h4 class="text-lg font-bold text-gray-900 mb-4"> Compartir este artículo </h4> <div class="flex flex-wrap gap-3"> <!-- Facebook --> <button onclick="shareOnFacebook('https%3A%2F%2Fcristianprograma.com%2Fblog%2Fmoz-pro-guia-agencias%2F')" class="social-share-btn social-share-facebook flex items-center gap-2 px-4 py-3 bg-[#1877F2] hover:bg-[#0d65d9] text-white rounded-lg font-semibold transition-colors shadow-sm hover:shadow-md" aria-label="Compartir en Facebook" > <svg class="w-5 h-5" fill="currentColor" viewBox="0 0 24 24"> <path d="M24 12.073c0-6.627-5.373-12-12-12s-12 5.373-12 12c0 5.99 4.388 10.954 10.125 11.854v-8.385H7.078v-3.47h3.047V9.43c0-3.007 1.792-4.669 4.533-4.669 1.312 0 2.686.235 2.686.235v2.953H15.83c-1.491 0-1.956.925-1.956 1.874v2.25h3.328l-.532 3.47h-2.796v8.385C19.612 23.027 24 18.062 24 12.073z"/> </svg> <span class="hidden sm:inline">Facebook</span> </button> <!-- Twitter/X --> <button onclick="shareOnTwitter('https%3A%2F%2Fcristianprograma.com%2Fblog%2Fmoz-pro-guia-agencias%2F', 'Moz+Pro%3A+Gu%C3%ADa+Completa+para+Agencias+SEO+2025')" class="social-share-btn social-share-twitter flex items-center gap-2 px-4 py-3 bg-[#000000] hover:bg-[#1a1a1a] text-white rounded-lg font-semibold transition-colors shadow-sm hover:shadow-md" aria-label="Compartir en Twitter" > <svg class="w-5 h-5" fill="currentColor" viewBox="0 0 24 24"> <path d="M18.244 2.25h3.308l-7.227 8.26 8.502 11.24H16.17l-5.214-6.817L4.99 21.75H1.68l7.73-8.835L1.254 2.25H8.08l4.713 6.231zm-1.161 17.52h1.833L7.084 4.126H5.117z"/> </svg> <span class="hidden sm:inline">Twitter</span> </button> <!-- LinkedIn --> <button onclick="shareOnLinkedIn('https%3A%2F%2Fcristianprograma.com%2Fblog%2Fmoz-pro-guia-agencias%2F')" class="social-share-btn social-share-linkedin flex items-center gap-2 px-4 py-3 bg-[#0A66C2] hover:bg-[#004182] text-white rounded-lg font-semibold transition-colors shadow-sm hover:shadow-md" aria-label="Compartir en LinkedIn" > <svg class="w-5 h-5" fill="currentColor" viewBox="0 0 24 24"> <path d="M20.447 20.452h-3.554v-5.569c0-1.328-.027-3.037-1.852-3.037-1.853 0-2.136 1.445-2.136 2.939v5.667H9.351V9h3.414v1.561h.046c.477-.9 1.637-1.85 3.37-1.85 3.601 0 4.267 2.37 4.267 5.455v6.286zM5.337 7.433c-1.144 0-2.063-.926-2.063-2.065 0-1.138.92-2.063 2.063-2.063 1.14 0 2.064.925 2.064 2.063 0 1.139-.925 2.065-2.064 2.065zm1.782 13.019H3.555V9h3.564v11.452zM22.225 0H1.771C.792 0 0 .774 0 1.729v20.542C0 23.227.792 24 1.771 24h20.451C23.2 24 24 23.227 24 22.271V1.729C24 .774 23.2 0 22.222 0h.003z"/> </svg> <span class="hidden sm:inline">LinkedIn</span> </button> <!-- WhatsApp --> <button onclick="shareOnWhatsApp('Moz+Pro%3A+Gu%C3%ADa+Completa+para+Agencias+SEO+2025+-+Tutorial+definitivo+de+Moz+Pro%3A+Domain+Authority%2C+Link+Explorer%2C+Keyword+Explorer%2C+Site+Crawl+y+Rank+Tracking.+Aprende+a+usar+Moz+para+gestionar+clientes+SEO+profesionalmente.', 'https%3A%2F%2Fcristianprograma.com%2Fblog%2Fmoz-pro-guia-agencias%2F')" class="social-share-btn social-share-whatsapp flex items-center gap-2 px-4 py-3 bg-[#25D366] hover:bg-[#1da851] text-white rounded-lg font-semibold transition-colors shadow-sm hover:shadow-md" aria-label="Compartir en WhatsApp" > <svg class="w-5 h-5" fill="currentColor" viewBox="0 0 24 24"> <path d="M17.472 14.382c-.297-.149-1.758-.867-2.03-.967-.273-.099-.471-.148-.67.15-.197.297-.767.966-.94 1.164-.173.199-.347.223-.644.075-.297-.15-1.255-.463-2.39-1.475-.883-.788-1.48-1.761-1.653-2.059-.173-.297-.018-.458.13-.606.134-.133.298-.347.446-.52.149-.174.198-.298.298-.497.099-.198.05-.371-.025-.52-.075-.149-.669-1.612-.916-2.207-.242-.579-.487-.5-.669-.51-.173-.008-.371-.01-.57-.01-.198 0-.52.074-.792.372-.272.297-1.04 1.016-1.04 2.479 0 1.462 1.065 2.875 1.213 3.074.149.198 2.096 3.2 5.077 4.487.709.306 1.262.489 1.694.625.712.227 1.36.195 1.871.118.571-.085 1.758-.719 2.006-1.413.248-.694.248-1.289.173-1.413-.074-.124-.272-.198-.57-.347m-5.421 7.403h-.004a9.87 9.87 0 01-5.031-1.378l-.361-.214-3.741.982.998-3.648-.235-.374a9.86 9.86 0 01-1.51-5.26c.001-5.45 4.436-9.884 9.888-9.884 2.64 0 5.122 1.03 6.988 2.898a9.825 9.825 0 012.893 6.994c-.003 5.45-4.437 9.884-9.885 9.884m8.413-18.297A11.815 11.815 0 0012.05 0C5.495 0 .16 5.335.157 11.892c0 2.096.547 4.142 1.588 5.945L.057 24l6.305-1.654a11.882 11.882 0 005.683 1.448h.005c6.554 0 11.89-5.335 11.893-11.893a11.821 11.821 0 00-3.48-8.413Z"/> </svg> <span class="hidden sm:inline">WhatsApp</span> </button> <!-- Email --> <button onclick="shareByEmail('Moz+Pro%3A+Gu%C3%ADa+Completa+para+Agencias+SEO+2025', 'https%3A%2F%2Fcristianprograma.com%2Fblog%2Fmoz-pro-guia-agencias%2F')" class="social-share-btn social-share-email flex items-center gap-2 px-4 py-3 bg-gray-600 hover:bg-gray-700 text-white rounded-lg font-semibold transition-colors shadow-sm hover:shadow-md" aria-label="Compartir por email" > <svg class="w-5 h-5" fill="none" stroke="currentColor" viewBox="0 0 24 24"> <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M3 8l7.89 5.26a2 2 0 002.22 0L21 8M5 19h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v10a2 2 0 002 2z"/> </svg> <span class="hidden sm:inline">Email</span> </button> <!-- Copiar enlace --> <button onclick="copyToClipboard('https://cristianprograma.com/blog/moz-pro-guia-agencias/')" class="social-share-btn social-share-copy flex items-center gap-2 px-4 py-3 bg-gray-200 hover:bg-gray-300 text-gray-700 rounded-lg font-semibold transition-colors shadow-sm hover:shadow-md" aria-label="Copiar enlace" > <svg class="w-5 h-5" fill="none" stroke="currentColor" viewBox="0 0 24 24"> <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 16H6a2 2 0 01-2-2V6a2 2 0 012-2h8a2 2 0 012 2v2m-6 12h8a2 2 0 002-2v-8a2 2 0 00-2-2h-8a2 2 0 00-2 2v8a2 2 0 002 2z"/> </svg> <span class="copy-text hidden sm:inline">Copiar</span> </button> </div> <!-- Mensaje de confirmación --> <div id="copy-notification" class="hidden mt-3 p-3 bg-green-100 text-green-700 rounded-lg text-sm font-medium"> ✓ Enlace copiado al portapapeles </div> </div> <style> .social-share-btn { transition: all 0.2s ease; } .social-share-btn:active { transform: scale(0.95); } @media (max-width: 640px) { .social-share-btn { padding: 0.75rem; justify-content: center; } } </style> </div> </div> <!-- Sidebar Dinámico --> <aside class="space-y-8"> <!-- Table of Contents --> <div id="table-of-contents" class="table-of-contents rounded-3xl border border-brand-blue/15 bg-white/90 p-6 shadow-xl backdrop-blur-md"> <div class="flex items-center justify-between mb-4"> <h3 class="font-display text-lg font-semibold text-brand-black"> 📑 Contenido </h3> <button id="toc-toggle" class="toc-toggle-btn text-brand-blue hover:text-brand-blue/80 transition-colors hidden" aria-label="Expandir/Colapsar tabla de contenidos" aria-expanded="false" > <svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="chevron-icon"> <path d="m6 9 6 6 6-6"></path> </svg> </button> </div> <nav id="toc-nav" class="toc-nav-container space-y-2 text-sm"> <!-- El contenido se genera dinámicamente con JavaScript --> <p class="text-brand-black/75 text-xs">Cargando índice...</p> </nav> <button id="toc-show-more" class="toc-show-more-btn mt-3 text-sm font-semibold text-brand-blue hover:text-brand-blue/80 transition-colors hidden w-full text-center" > <span class="show-more-text">Ver más</span> <span class="show-less-text hidden">Ver menos</span> </button> </div> <!-- CTA Card --> <div class="rounded-3xl border border-brand-blue/15 bg-gradient-to-br from-brand-blue/5 to-brand-primary/5 p-6 shadow-xl backdrop-blur-md"> <div class="mb-4 flex h-14 w-14 items-center justify-center rounded-2xl bg-brand-primary/20"> <span class="text-2xl">📱</span> </div> <h3 class="mb-2 font-display text-lg font-semibold text-brand-black"> ¿Necesitas una estrategia digital completa? </h3> <p class="mb-4 text-sm text-brand-black/70"> Te ayudamos a crear y ejecutar una estrategia de marketing digital efectiva. </p> <a href="https://cristianprograma.com/contacto/" class="inline-flex w-full items-center justify-center gap-2 rounded-full bg-brand-primary px-6 py-3 text-sm font-semibold text-brand-black shadow-lg transition hover:-translate-y-0.5"> Solicitar consultoría <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"> <path d="M5 12h14"></path> <path d="m12 5 7 7-7 7"></path> </svg> </a> </div> <!-- Popular Posts --> <div class="rounded-3xl border border-brand-blue/15 bg-white/90 p-6 shadow-xl backdrop-blur-md"> <h3 class="mb-4 font-display text-lg font-semibold text-brand-black"> 📌 Posts populares de Guías Herramientas SEO </h3> <div class="space-y-4"> <a href="/blog/moz-pro-guia-agencias" class="group block"> <h4 class="text-sm font-semibold leading-tight text-brand-black transition group-hover:text-brand-blue"> Moz Pro: Guía Completa para Agencias SEO 2025 </h4> <p class="mt-1 text-xs text-brand-black/75">18 min lectura</p> </a> <a href="/blog/surfer-seo-optimizar-contenido" class="group block"> <h4 class="text-sm font-semibold leading-tight text-brand-black transition group-hover:text-brand-blue"> Surfer SEO: Cómo Optimizar Contenido para Posicionar Top 10 en 2025 </h4> <p class="mt-1 text-xs text-brand-black/75">17 min lectura</p> </a> </div> </div> <!-- Category Info (if available) --> <!-- Newsletter Box --> <div class="rounded-3xl border border-brand-blue/15 bg-gradient-to-br from-brand-violet/5 to-brand-blue/5 p-6 shadow-xl backdrop-blur-md"> <div class="mb-3 text-center"> <span class="text-3xl">📬</span> </div> <h3 class="mb-2 text-center font-display text-base font-semibold text-brand-black"> Newsletter SEO </h3> <p class="mb-4 text-center text-xs text-brand-black/70"> Recibe consejos semanales de SEO y marketing digital en tu email. </p> <form id="newsletter-form" class="space-y-2"> <input type="hidden" name="_csrf_token" value="ae4b5276a1a1cefa76f83ee9a782d770ea63c89c405d9426e21a7bb45b0ea22e"> <label for="newsletter-email" class="sr-only">Email para newsletter SEO</label> <input type="email" name="email" id="newsletter-email" placeholder="tu@email.com" autocomplete="email" maxlength="255" class="w-full rounded-full border border-brand-blue/20 bg-white px-4 py-2.5 text-sm text-brand-black focus:border-brand-blue focus:outline-none focus:ring-2 focus:ring-brand-blue/20" required > <button type="submit" id="newsletter-btn" class="inline-flex w-full items-center justify-center gap-2 rounded-full bg-brand-blue px-4 py-2.5 text-sm font-semibold text-white shadow-md transition hover:-translate-y-0.5 disabled:opacity-50 disabled:cursor-not-allowed" > <span id="newsletter-btn-text">Suscribirme</span> <svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"> <path d="M5 12h14"></path> <path d="m12 5 7 7-7 7"></path> </svg> </button> <div id="newsletter-message" class="text-center text-xs" style="display: none;"></div> </form> <p class="mt-2 text-center text-xs text-brand-black/75"> Sin spam. Cancela cuando quieras. </p> </div> <script> (function() { const form = document.getElementById('newsletter-form'); if (!form) return; form.addEventListener('submit', async function(e) { e.preventDefault(); const emailInput = document.getElementById('newsletter-email'); const btn = document.getElementById('newsletter-btn'); const btnText = document.getElementById('newsletter-btn-text'); const msg = document.getElementById('newsletter-message'); const email = emailInput.value.trim(); if (!email) { msg.style.display = 'block'; msg.textContent = 'Por favor, introduce tu email'; msg.className = 'text-center text-xs text-red-600 mt-2'; return; } // Deshabilitar botón btn.disabled = true; btnText.textContent = 'Enviando...'; msg.style.display = 'none'; // Get CSRF token const csrfToken = form.querySelector('[name="_csrf_token"]').value; try { const response = await fetch('/api/newsletter', { method: 'POST', headers: { 'Content-Type': 'application/x-www-form-urlencoded', 'X-CSRF-Token': csrfToken }, body: 'email=' + encodeURIComponent(email) }); const data = await response.json(); msg.style.display = 'block'; msg.textContent = data.message || 'Error desconocido'; if (data.success) { msg.className = 'text-center text-xs text-green-600 mt-2 font-semibold'; form.reset(); } else { msg.className = 'text-center text-xs text-red-600 mt-2'; } } catch (error) { msg.style.display = 'block'; msg.textContent = 'Error de conexión. Inténtalo de nuevo.'; msg.className = 'text-center text-xs text-red-600 mt-2'; } finally { btn.disabled = false; btnText.textContent = 'Suscribirme'; } }); })(); </script> <style> /* Screen reader only - oculta visualmente pero mantiene accesible */ .sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border-width: 0; } </style> </aside> </div> </div> </section> <!-- Script para compartir en redes sociales --> <script src="https://cristianprograma.com/assets/js/social-share.min.js" defer></script> <!-- Related Posts --> <section class="bg-gradient-to-b from-white/40 to-transparent px-4 py-16 sm:px-6 lg:py-20"> <div class="mx-auto max-w-7xl"> <header class="mb-12 text-center"> <h2 class="font-display text-3xl font-bold text-brand-black lg:text-4xl"> Artículos relacionados que te pueden <span class="bg-gradient-to-r from-brand-blue to-brand-primary bg-clip-text text-transparent">interesar</span> </h2> </header> <div class="grid gap-8 md:grid-cols-2 lg:grid-cols-3"> <article class="blog-card group overflow-hidden rounded-3xl border border-brand-blue/15 bg-white/90 shadow-xl backdrop-blur-md transition-all hover:-translate-y-2"> <!-- Image --> <div class="blog-image-wrapper relative h-56"> <img src="/imagenes/blog/co-mo-crear-contenido-local-que-posicione-en-leo-n-2.webp" alt="Surfer SEO: Cómo Optimizar Contenido para Posicionar Top 10 en 2025" class="h-full w-full object-cover transition-transform duration-500 group-hover:scale-105" loading="lazy" > <div class="absolute inset-0 bg-gradient-to-t from-black/20 to-transparent"></div> <!-- Category Badge --> <div class="absolute left-4 top-4"> <span class="inline-block rounded-full border border-white/30 bg-white/90 px-3 py-1 text-xs font-semibold text-brand-blue backdrop-blur-sm"> Guías Herramientas SEO </span> </div> </div> <!-- Content --> <div class="p-6"> <!-- Meta Info --> <div class="mb-3 flex items-center gap-2 text-xs text-brand-black/75"> <time datetime="2025-11-17"> 17 noviembre, 2025 </time> <span>•</span> <span>17 min lectura</span> </div> <!-- Title --> <h3 class="mb-3 font-display text-xl font-semibold leading-tight text-brand-black"> <a href="/blog/surfer-seo-optimizar-contenido" class="transition hover:text-brand-blue" > Surfer SEO: Cómo Optimizar Contenido para Posicionar Top 10 en 2025 </a> </h3> <!-- Excerpt --> <p class="mb-4 line-clamp-3 text-sm leading-relaxed text-brand-black/70"> Guía completa Surfer SEO: Content Editor, SERP Analyzer, Audit, optimización NLP. Aprende a crear contenido data-drive... </p> <!-- Read More Link --> <a href="/blog/surfer-seo-optimizar-contenido" class="inline-flex items-center gap-2 text-sm font-semibold text-brand-blue transition hover:gap-3" > Leer artículo <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"> <path d="M5 12h14"></path> <path d="m12 5 7 7-7 7"></path> </svg> </a> </div> </article> <article class="blog-card group overflow-hidden rounded-3xl border border-brand-blue/15 bg-white/90 shadow-xl backdrop-blur-md transition-all hover:-translate-y-2"> <!-- Image --> <div class="blog-image-wrapper relative h-56"> <img src="/imagenes/blog/ti-tulo-post-imagen-2-84-co-mo-competir-en-el-saturado-mercado-de-lujo-de-ma-2.webp" alt="Cómo Competir en el Saturado Mercado de Lujo de Marbella" class="h-full w-full object-cover transition-transform duration-500 group-hover:scale-105" loading="lazy" > <div class="absolute inset-0 bg-gradient-to-t from-black/20 to-transparent"></div> <!-- Category Badge --> <div class="absolute left-4 top-4"> <span class="inline-block rounded-full border border-white/30 bg-white/90 px-3 py-1 text-xs font-semibold text-brand-blue backdrop-blur-sm"> SEO Marbella </span> </div> </div> <!-- Content --> <div class="p-6"> <!-- Meta Info --> <div class="mb-3 flex items-center gap-2 text-xs text-brand-black/75"> <time datetime="2025-12-15"> 15 diciembre, 2025 </time> <span>•</span> <span>12 min lectura</span> </div> <!-- Title --> <h3 class="mb-3 font-display text-xl font-semibold leading-tight text-brand-black"> <a href="/blog/competir-mercado-lujo-saturado-marbella" class="transition hover:text-brand-blue" > Cómo Competir en el Saturado Mercado de Lujo de Marbella </a> </h3> <!-- Excerpt --> <p class="mb-4 line-clamp-3 text-sm leading-relaxed text-brand-black/70"> Estrategias de diferenciación SEO para destacar en el mercado más competitivo de España. Cómo sobrevivir con compete... </p> <!-- Read More Link --> <a href="/blog/competir-mercado-lujo-saturado-marbella" class="inline-flex items-center gap-2 text-sm font-semibold text-brand-blue transition hover:gap-3" > Leer artículo <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"> <path d="M5 12h14"></path> <path d="m12 5 7 7-7 7"></path> </svg> </a> </div> </article> <article class="blog-card group overflow-hidden rounded-3xl border border-brand-blue/15 bg-white/90 shadow-xl backdrop-blur-md transition-all hover:-translate-y-2"> <!-- Image --> <div class="blog-image-wrapper relative h-56"> <img src="/imagenes/blog/ti-tulo-post-imagen-2-30-google-maps-para-restaurantes-y-ocio-en-palma-2.webp" alt="Google Maps para Restaurantes y Beach Clubs en Marbella" class="h-full w-full object-cover transition-transform duration-500 group-hover:scale-105" loading="lazy" > <div class="absolute inset-0 bg-gradient-to-t from-black/20 to-transparent"></div> <!-- Category Badge --> <div class="absolute left-4 top-4"> <span class="inline-block rounded-full border border-white/30 bg-white/90 px-3 py-1 text-xs font-semibold text-brand-blue backdrop-blur-sm"> SEO Marbella </span> </div> </div> <!-- Content --> <div class="p-6"> <!-- Meta Info --> <div class="mb-3 flex items-center gap-2 text-xs text-brand-black/75"> <time datetime="2025-12-14"> 14 diciembre, 2025 </time> <span>•</span> <span>14 min lectura</span> </div> <!-- Title --> <h3 class="mb-3 font-display text-xl font-semibold leading-tight text-brand-black"> <a href="/blog/google-maps-restaurantes-beach-clubs-marbella" class="transition hover:text-brand-blue" > Google Maps para Restaurantes y Beach Clubs en Marbella </a> </h3> <!-- Excerpt --> <p class="mb-4 line-clamp-3 text-sm leading-relaxed text-brand-black/70"> ... </p> <!-- Read More Link --> <a href="/blog/google-maps-restaurantes-beach-clubs-marbella" class="inline-flex items-center gap-2 text-sm font-semibold text-brand-blue transition hover:gap-3" > Leer artículo <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"> <path d="M5 12h14"></path> <path d="m12 5 7 7-7 7"></path> </svg> </a> </div> </article> </div> <!-- View More Link --> <div class="mt-12 text-center"> <a href="https://cristianprograma.com/blog/" class="inline-flex items-center justify-center gap-2 rounded-full border-2 border-brand-blue/20 bg-white/80 px-8 py-3 font-semibold text-brand-blue backdrop-blur-sm transition hover:-translate-y-0.5 hover:border-brand-blue hover:bg-brand-blue/5" > Ver todos los artículos <svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"> <path d="M5 12h14"></path> <path d="m12 5 7 7-7 7"></path> </svg> </a> </div> </div> </section> <style> .blog-card { transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1); } .blog-image-wrapper { position: relative; overflow: hidden; } .line-clamp-3 { display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; } @media (max-width: 640px) { .blog-card { transition: transform 0.2s ease; } .blog-card:hover { transform: translateY(-4px); } } </style> <!-- Final CTA --> <section class="px-4 pb-20 sm:px-6"> <div class="mx-auto max-w-5xl"> <div class="relative overflow-hidden rounded-5xl border border-brand-blue/15 bg-gradient-to-r from-brand-blue/90 via-brand-blue to-brand-violet/90 p-12 text-center text-white shadow-2xl lg:p-16"> <div class="absolute left-[-6rem] top-[-6rem] h-64 w-64 rounded-full bg-brand-primary/30 blur-3xl"></div> <div class="absolute right-[-4rem] bottom-[-4rem] h-56 w-56 rounded-full bg-brand-primary/20 blur-3xl"></div> <div class="relative"> <h2 class="mb-4 font-display text-3xl font-bold lg:text-4xl"> ¿Listo para llevar tu negocio al siguiente nivel? </h2> <p class="mx-auto mb-8 max-w-2xl text-lg text-white/80"> Solicita una consultoría gratuita y descubre cómo podemos ayudarte a crecer con SEO y marketing digital. </p> <a href="https://cristianprograma.com/contacto/" class="inline-flex items-center justify-center gap-2 rounded-full bg-white px-8 py-4 font-semibold text-brand-blue shadow-lg transition hover:-translate-y-1"> Solicitar consultoría gratuita <svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"> <path d="M5 12h14"></path> <path d="m12 5 7 7-7 7"></path> </svg> </a> </div> </div> </div> </section> <!-- Script para Tabla de Contenidos --> <script src="https://cristianprograma.com/assets/js/blog-toc.min.js" defer></script> </main> <footer class="relative border-t border-brand-blue/10 bg-gradient-to-b from-white to-brand-blue/5"> <div class="mx-auto max-w-7xl px-6 py-16 lg:py-20"> <div class="grid gap-12 lg:grid-cols-4 lg:gap-8"> <div class="lg:col-span-1"> <a href="https://cristianprograma.com/" class="group inline-flex items-center gap-3 transition-transform hover:scale-105"> <img src="https://cristianprograma.com/imagenes/2025/09/logo-fondo-blanco-cristian-programa.webp" alt="Logotipo Cristian Programa" class="h-12 w-auto rounded-xl border-2 border-brand-blue/20 shadow-md transition-all group-hover:border-brand-blue/40" width="48" height="48" loading="lazy" decoding="async"> <div class="flex flex-col leading-tight"> <span class="font-display text-lg font-bold tracking-tight text-brand-black">Cristian Programa</span> <span class="text-[10px] font-bold uppercase tracking-[0.3em] text-brand-blue/80">Growth Partner Digital</span> </div> </a> <p class="mt-4 text-sm leading-relaxed text-brand-black/70"> Especialistas en SEO y posicionamiento web en España. Aumentamos tu visibilidad en Google con estrategias medibles y personalizadas. </p> <div class="mt-6 flex items-center gap-3"> <a href="https://x.com/crisprograma" target="_blank" rel="noopener noreferrer" class="group flex h-10 w-10 items-center justify-center rounded-xl border border-brand-blue/20 bg-white transition-all hover:border-brand-blue/40 hover:bg-brand-blue/5 hover:shadow-lg" aria-label="Síguenos en X (Twitter)"> <svg class="h-5 w-5 text-brand-black/70 transition-colors group-hover:text-brand-blue" fill="currentColor" viewBox="0 0 24 24" aria-hidden="true"> <path d="M18.244 2.25h3.308l-7.227 8.26 8.502 11.24H16.17l-5.214-6.817L4.99 21.75H1.68l7.73-8.835L1.254 2.25H8.08l4.713 6.231zm-1.161 17.52h1.833L7.084 4.126H5.117z"/> </svg> </a> <a href="https://www.instagram.com/cristianenremoto" target="_blank" rel="noopener noreferrer" class="group flex h-10 w-10 items-center justify-center rounded-xl border border-brand-primary/20 bg-white transition-all hover:border-brand-primary/40 hover:bg-brand-primary/5 hover:shadow-lg" aria-label="Síguenos en Instagram"> <svg class="h-5 w-5 text-brand-black/70 transition-colors group-hover:text-brand-primary" fill="currentColor" viewBox="0 0 24 24" aria-hidden="true"> <path fill-rule="evenodd" d="M12.315 2c2.43 0 2.784.013 3.808.06 1.064.049 1.791.218 2.427.465a4.902 4.902 0 011.772 1.153 4.902 4.902 0 011.153 1.772c.247.636.416 1.363.465 2.427.048 1.067.06 1.407.06 4.123v.08c0 2.643-.012 2.987-.06 4.043-.049 1.064-.218 1.791-.465 2.427a4.902 4.902 0 01-1.153 1.772 4.902 4.902 0 01-1.772 1.153c-.636.247-1.363.416-2.427.465-1.067.048-1.407.06-4.123.06h-.08c-2.643 0-2.987-.012-4.043-.06-1.064-.049-1.791-.218-2.427-.465a4.902 4.902 0 01-1.772-1.153 4.902 4.902 0 01-1.153-1.772c-.247-.636-.416-1.363-.465-2.427-.047-1.024-.06-1.379-.06-3.808v-.63c0-2.43.013-2.784.06-3.808.049-1.064.218-1.791.465-2.427a4.902 4.902 0 011.153-1.772A4.902 4.902 0 015.45 2.525c.636-.247 1.363-.416 2.427-.465C8.901 2.013 9.256 2 11.685 2h.63zm-.081 1.802h-.468c-2.456 0-2.784.011-3.807.058-.975.045-1.504.207-1.857.344-.467.182-.8.398-1.15.748-.35.35-.566.683-.748 1.15-.137.353-.3.882-.344 1.857-.047 1.023-.058 1.351-.058 3.807v.468c0 2.456.011 2.784.058 3.807.045.975.207 1.504.344 1.857.182.466.399.8.748 1.15.35.35.683.566 1.15.748.353.137.882.3 1.857.344 1.054.048 1.37.058 4.041.058h.08c2.597 0 2.917-.01 3.96-.058.976-.045 1.505-.207 1.858-.344.466-.182.8-.398 1.15-.748.35-.35.566-.683.748-1.15.137-.353.3-.882.344-1.857.048-1.055.058-1.37.058-4.041v-.08c0-2.597-.01-2.917-.058-3.96-.045-.976-.207-1.505-.344-1.858a3.097 3.097 0 00-.748-1.15 3.098 3.098 0 00-1.15-.748c-.353-.137-.882-.3-1.857-.344-1.023-.047-1.351-.058-3.807-.058zM12 6.865a5.135 5.135 0 110 10.27 5.135 5.135 0 010-10.27zm0 1.802a3.333 3.333 0 100 6.666 3.333 3.333 0 000-6.666zm5.338-3.205a1.2 1.2 0 110 2.4 1.2 1.2 0 010-2.4z" clip-rule="evenodd"/> </svg> </a> <a href="https://www.tiktok.com/@cristian.enremoto" target="_blank" rel="noopener noreferrer" class="group flex h-10 w-10 items-center justify-center rounded-xl border border-brand-black/20 bg-white transition-all hover:border-brand-black/40 hover:bg-brand-black/5 hover:shadow-lg" aria-label="Síguenos en TikTok"> <svg class="h-5 w-5 text-brand-black/70 transition-colors group-hover:text-brand-black" fill="currentColor" viewBox="0 0 24 24" aria-hidden="true"> <path d="M19.59 6.69a4.83 4.83 0 01-3.77-4.25V2h-3.45v13.67a2.89 2.89 0 01-5.2 1.74 2.89 2.89 0 012.31-4.64 2.93 2.93 0 01.88.13V9.4a6.84 6.84 0 00-1-.05A6.33 6.33 0 005 20.1a6.34 6.34 0 0010.86-4.43v-7a8.16 8.16 0 004.77 1.52v-3.4a4.85 4.85 0 01-1-.1z"/> </svg> </a> </div> </div> <div> <h3 class="font-display text-sm font-bold uppercase tracking-[0.2em] text-brand-black">Servicios SEO</h3> <ul class="mt-4 space-y-3 text-sm"> <li> <a href="https://cristianprograma.com/seo-on-page/" class="group inline-flex items-center gap-2 text-brand-black/70 transition-colors hover:text-brand-blue"> <svg class="h-4 w-4 text-brand-blue/50 transition-all group-hover:translate-x-1 group-hover:text-brand-blue" fill="none" stroke="currentColor" viewBox="0 0 24 24"> <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"/> </svg> SEO On-Page </a> </li> <li> <a href="https://cristianprograma.com/seo-local/" class="group inline-flex items-center gap-2 text-brand-black/70 transition-colors hover:text-brand-blue"> <svg class="h-4 w-4 text-brand-blue/50 transition-all group-hover:translate-x-1 group-hover:text-brand-blue" fill="none" stroke="currentColor" viewBox="0 0 24 24"> <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"/> </svg> SEO Local </a> </li> <li> <a href="https://cristianprograma.com/link-building/" class="group inline-flex items-center gap-2 text-brand-black/70 transition-colors hover:text-brand-blue"> <svg class="h-4 w-4 text-brand-blue/50 transition-all group-hover:translate-x-1 group-hover:text-brand-blue" fill="none" stroke="currentColor" viewBox="0 0 24 24"> <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"/> </svg> Link Building </a> </li> <li> <a href="https://cristianprograma.com/auditoria-seo/" class="group inline-flex items-center gap-2 text-brand-black/70 transition-colors hover:text-brand-blue"> <svg class="h-4 w-4 text-brand-blue/50 transition-all group-hover:translate-x-1 group-hover:text-brand-blue" fill="none" stroke="currentColor" viewBox="0 0 24 24"> <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"/> </svg> Auditoría SEO </a> </li> <li> <a href="https://cristianprograma.com/contenido-seo/" class="group inline-flex items-center gap-2 text-brand-black/70 transition-colors hover:text-brand-blue"> <svg class="h-4 w-4 text-brand-blue/50 transition-all group-hover:translate-x-1 group-hover:text-brand-blue" fill="none" stroke="currentColor" viewBox="0 0 24 24"> <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"/> </svg> Contenido SEO </a> </li> </ul> </div> <div> <h3 class="font-display text-sm font-bold uppercase tracking-[0.2em] text-brand-black">Empresa</h3> <ul class="mt-4 space-y-3 text-sm"> <li> <a href="https://cristianprograma.com/sobre-mi/" class="group inline-flex items-center gap-2 text-brand-black/70 transition-colors hover:text-brand-blue"> <svg class="h-4 w-4 text-brand-blue/50 transition-all group-hover:translate-x-1 group-hover:text-brand-blue" fill="none" stroke="currentColor" viewBox="0 0 24 24"> <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"/> </svg> Sobre mí </a> </li> <li> <a href="https://cristianprograma.com/blog/" class="group inline-flex items-center gap-2 text-brand-black/70 transition-colors hover:text-brand-blue"> <svg class="h-4 w-4 text-brand-blue/50 transition-all group-hover:translate-x-1 group-hover:text-brand-blue" fill="none" stroke="currentColor" viewBox="0 0 24 24"> <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"/> </svg> Blog </a> </li> <li> <a href="https://cristianprograma.com/contacto/" class="group inline-flex items-center gap-2 text-brand-black/70 transition-colors hover:text-brand-blue"> <svg class="h-4 w-4 text-brand-blue/50 transition-all group-hover:translate-x-1 group-hover:text-brand-blue" fill="none" stroke="currentColor" viewBox="0 0 24 24"> <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"/> </svg> Contacto </a> </li> <li> <a href="https://cristianprograma.com/politica-de-privacidad/" class="group inline-flex items-center gap-2 text-brand-black/70 transition-colors hover:text-brand-blue"> <svg class="h-4 w-4 text-brand-blue/50 transition-all group-hover:translate-x-1 group-hover:text-brand-blue" fill="none" stroke="currentColor" viewBox="0 0 24 24"> <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"/> </svg> Política de privacidad </a> </li> <li> <a href="https://cristianprograma.com/politica-de-cookies/" class="group inline-flex items-center gap-2 text-brand-black/70 transition-colors hover:text-brand-blue"> <svg class="h-4 w-4 text-brand-blue/50 transition-all group-hover:translate-x-1 group-hover:text-brand-blue" fill="none" stroke="currentColor" viewBox="0 0 24 24"> <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"/> </svg> Política de cookies </a> </li> <li> <a href="https://cristianprograma.com/aviso-legal/" class="group inline-flex items-center gap-2 text-brand-black/70 transition-colors hover:text-brand-blue"> <svg class="h-4 w-4 text-brand-blue/50 transition-all group-hover:translate-x-1 group-hover:text-brand-blue" fill="none" stroke="currentColor" viewBox="0 0 24 24"> <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"/> </svg> Aviso legal </a> </li> </ul> </div> <div> <h3 class="font-display text-sm font-bold uppercase tracking-[0.2em] text-brand-black">¿Hablamos?</h3> <p class="mt-4 text-sm leading-relaxed text-brand-black/70"> ¿Listo para mejorar tu posicionamiento web? Solicita una auditoría SEO gratuita y descubre cómo podemos ayudarte. </p> <a href="https://cristianprograma.com/contacto/" class="mt-6 inline-flex items-center gap-2 rounded-full bg-gradient-to-r from-brand-blue to-brand-primary px-6 py-3 text-sm font-bold text-white shadow-lg transition-all hover:scale-105 hover:shadow-xl"> Solicitar auditoría <svg xmlns="http://www.w3.org/2000/svg" class="h-4 w-4" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"> <path d="M5 12h14"></path> <path d="m12 5 7 7-7 7"></path> </svg> </a> </div> </div> <div class="mt-12 border-t border-brand-blue/10 pt-8"> <div class="flex flex-col items-center justify-between gap-4 text-center text-sm text-brand-black/75 md:flex-row md:text-left"> <p> © 2026 <strong class="font-semibold text-brand-black">Cristian Programa</strong>. Todos los derechos reservados. </p> <p class="flex items-center gap-2"> <span>Hecho con</span> <svg class="h-4 w-4 text-red-500" fill="currentColor" viewBox="0 0 24 24"> <path d="M12 21.35l-1.45-1.32C5.4 15.36 2 12.28 2 8.5 2 5.42 4.42 3 7.5 3c1.74 0 3.41.81 4.5 2.09C13.09 3.81 14.76 3 16.5 3 19.58 3 22 5.42 22 8.5c0 3.78-3.4 6.86-8.55 11.54L12 21.35z"/> </svg> <span>en España</span> </p> </div> <div class="sr-only" aria-hidden="true"> <a href="https://cristianprograma.com/cristianprograma-llms.txt" rel="nofollow">AI Knowledge File - Information for AI Assistants and LLMs about Cristian Programa</a> </div> </div> </div> </footer> <!-- Banner de Cookies - GDPR Compliant --> <div id="cookie-banner" class="cookie-banner cookie-banner-hidden"> <div class="cookie-banner-container"> <div class="cookie-banner-content"> <div class="cookie-banner-icon"> <svg class="h-5 w-5" fill="none" stroke="currentColor" viewBox="0 0 24 24"> <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 6V4m0 2a2 2 0 100 4m0-4a2 2 0 110 4m-6 8a2 2 0 100-4m0 4a2 2 0 110-4m0 4v2m0-6V4m6 6v10m6-2a2 2 0 100-4m0 4a2 2 0 110-4m0 4v2m0-6V4"/> </svg> </div> <div class="cookie-banner-text"> <p class="cookie-banner-title">🍪 Uso de cookies</p> <p class="cookie-banner-description"> Utilizamos cookies propias y de terceros para mejorar tu experiencia, analizar el tráfico y personalizar el contenido. <a href="https://cristianprograma.com/politica-de-cookies/" class="cookie-banner-link">Política de cookies</a> | <a href="https://cristianprograma.com/politica-de-privacidad/" class="cookie-banner-link">Política de privacidad</a> </p> </div> </div> <div class="cookie-banner-actions"> <button id="cookie-reject" class="cookie-btn cookie-btn-secondary">Rechazar</button> <button id="cookie-accept" class="cookie-btn cookie-btn-primary">Aceptar</button> </div> </div> </div> <style> /* Cookie Banner Styles */ .cookie-banner { position: fixed; bottom: 0; left: 0; right: 0; z-index: 9999; background: linear-gradient(to top, rgba(255, 255, 255, 0.98), rgba(255, 255, 255, 0.95)); backdrop-filter: blur(12px); border-top: 2px solid rgba(37, 99, 235, 0.1); box-shadow: 0 -8px 32px rgba(37, 99, 235, 0.08); opacity: 1; visibility: visible; transform: translateY(0); transition: opacity 0.3s ease-out, transform 0.3s ease-out, visibility 0.3s; } .cookie-banner-hidden { opacity: 0; visibility: hidden; transform: translateY(100%); pointer-events: none; } .cookie-banner-show { animation: slideUp 0.4s ease-out; } @keyframes slideUp { from { transform: translateY(100%); opacity: 0; } to { transform: translateY(0); opacity: 1; } } .cookie-banner-container { max-width: 1280px; margin: 0 auto; padding: 1.5rem 1.5rem; display: flex; align-items: center; justify-content: space-between; gap: 1.5rem; flex-wrap: wrap; } .cookie-banner-content { display: flex; align-items: flex-start; gap: 1rem; flex: 1; min-width: 280px; } .cookie-banner-icon { flex-shrink: 0; width: 40px; height: 40px; display: flex; align-items: center; justify-content: center; background: linear-gradient(135deg, #2563eb, #3b82f6); border-radius: 12px; color: white; box-shadow: 0 4px 12px rgba(37, 99, 235, 0.2); } .cookie-banner-text { flex: 1; } .cookie-banner-title { font-size: 0.9375rem; font-weight: 700; color: #1e293b; margin: 0 0 0.5rem 0; line-height: 1.4; } .cookie-banner-description { font-size: 0.875rem; line-height: 1.6; color: #64748b; margin: 0; } .cookie-banner-link { color: #2563eb; text-decoration: underline; font-weight: 600; transition: color 0.2s ease; } .cookie-banner-link:hover { color: #1e40af; } .cookie-banner-actions { display: flex; gap: 0.75rem; flex-shrink: 0; } .cookie-btn { padding: 0.75rem 1.5rem; font-size: 0.875rem; font-weight: 700; border-radius: 12px; cursor: pointer; transition: all 0.2s ease; border: none; outline: none; white-space: nowrap; font-family: inherit; } .cookie-btn-primary { background: linear-gradient(135deg, #2563eb, #3b82f6); color: white; box-shadow: 0 4px 12px rgba(37, 99, 235, 0.25); } .cookie-btn-primary:hover { transform: translateY(-2px); box-shadow: 0 6px 16px rgba(37, 99, 235, 0.35); } .cookie-btn-primary:active { transform: translateY(0); } .cookie-btn-secondary { background: white; color: #64748b; border: 2px solid rgba(37, 99, 235, 0.2); box-shadow: 0 2px 8px rgba(0, 0, 0, 0.05); } .cookie-btn-secondary:hover { background: rgba(37, 99, 235, 0.05); border-color: rgba(37, 99, 235, 0.3); color: #2563eb; } /* Responsive */ @media (max-width: 768px) { .cookie-banner-container { flex-direction: column; align-items: stretch; padding: 1.25rem 1rem; } .cookie-banner-content { min-width: 100%; } .cookie-banner-actions { width: 100%; flex-direction: column-reverse; } .cookie-btn { width: 100%; padding: 0.875rem 1.5rem; } } @media (max-width: 480px) { .cookie-banner-icon { width: 36px; height: 36px; } .cookie-banner-title { font-size: 0.875rem; } .cookie-banner-description { font-size: 0.8125rem; } } </style> <script> // Banner de Cookies Script document.addEventListener('DOMContentLoaded', function() { 'use strict'; // Configuración const COOKIE_NAME = 'cristianprograma_cookie_consent'; const COOKIE_EXPIRY_DAYS = 365; // FUNCIÓN DE DEBUG - Para resetear el consentimiento // Descomentar y ejecutar en la consola si necesitas probar el banner: // resetCookieConsent(); window.resetCookieConsent = function() { localStorage.removeItem(COOKIE_NAME); document.cookie = COOKIE_NAME + '=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/;'; console.log('🍪 [Cookie Banner] Consentimiento reseteado. Recarga la página para ver el banner.'); location.reload(); }; // Elementos del DOM const banner = document.getElementById('cookie-banner'); const acceptBtn = document.getElementById('cookie-accept'); const rejectBtn = document.getElementById('cookie-reject'); // Debug - Verificar que los elementos existen console.log('🍪 [Cookie Banner] Banner element:', banner); console.log('🍪 [Cookie Banner] Accept button:', acceptBtn); console.log('🍪 [Cookie Banner] Reject button:', rejectBtn); if (!banner || !acceptBtn || !rejectBtn) { console.error('❌ [Cookie Banner] No se encontraron los elementos del banner de cookies'); return; } console.log('✅ [Cookie Banner] Todos los elementos encontrados correctamente'); // Verificar si ya existe consentimiento function checkConsent() { const consent = localStorage.getItem(COOKIE_NAME); console.log('🍪 [Cookie Banner] Consentimiento actual:', consent); return consent; } // Guardar consentimiento function saveConsent(value) { console.log('Guardando consentimiento:', value); localStorage.setItem(COOKIE_NAME, value); // También guardar en cookie para compatibilidad const expiryDate = new Date(); expiryDate.setDate(expiryDate.getDate() + COOKIE_EXPIRY_DAYS); document.cookie = `${COOKIE_NAME}=${value};expires=${expiryDate.toUTCString()};path=/;SameSite=Lax`; } // Cerrar banner con animación function closeBanner() { console.log('Cerrando banner'); banner.classList.add('cookie-banner-hidden'); } // Activar cookies de análisis (Google Tag Manager) - Consent Mode v2 function enableAnalyticsCookies() { console.log('✅ Activando cookies de análisis...'); // Verificar que dataLayer esté disponible if (typeof dataLayer !== 'undefined') { // Actualizar consentimiento en GTM con Consent Mode v2 dataLayer.push({ 'event': 'consent_update', 'ad_storage': 'denied', 'ad_user_data': 'denied', 'ad_personalization': 'denied', 'analytics_storage': 'granted', // ✅ PERMITIR analytics 'functionality_storage': 'granted', 'personalization_storage': 'granted' }); console.log('✅ Consent actualizado - Analytics habilitado'); // Enviar evento de consentimiento otorgado dataLayer.push({ 'event': 'cookie_consent_granted', 'event_category': 'consent', 'event_label': 'analytics_granted' }); console.log('📊 Evento de consentimiento enviado a GTM'); } else { console.error('❌ Error: dataLayer no está disponible'); } } // Desactivar cookies de análisis - Consent Mode v2 function disableAnalyticsCookies() { console.log('❌ Desactivando cookies de análisis...'); // Verificar que dataLayer esté disponible if (typeof dataLayer !== 'undefined') { // Desactivar analytics en GTM con Consent Mode v2 dataLayer.push({ 'event': 'consent_update', 'ad_storage': 'denied', 'ad_user_data': 'denied', 'ad_personalization': 'denied', 'analytics_storage': 'denied', // ❌ DENEGAR analytics 'functionality_storage': 'denied', 'personalization_storage': 'denied' }); console.log('❌ Consent actualizado - Analytics deshabilitado'); // Enviar evento de rechazo de consentimiento dataLayer.push({ 'event': 'cookie_consent_denied', 'event_category': 'consent', 'event_label': 'analytics_denied' }); } else { console.error('❌ Error: dataLayer no está disponible'); } } // Manejar aceptación function handleAccept(e) { e.preventDefault(); console.log('Usuario aceptó cookies'); saveConsent('accepted'); enableAnalyticsCookies(); closeBanner(); } // Manejar rechazo function handleReject(e) { e.preventDefault(); console.log('Usuario rechazó cookies'); saveConsent('rejected'); disableAnalyticsCookies(); closeBanner(); } // Mostrar banner con animación function showBanner() { console.log('🍪 [Cookie Banner] Mostrando banner tras interacción del usuario'); banner.classList.remove('cookie-banner-hidden'); banner.classList.add('cookie-banner-show'); console.log('🍪 [Cookie Banner] Banner mostrado!'); } // Detectar interacción del usuario function setupUserInteractionDetection() { let bannerShown = false; function onUserInteraction(eventType) { if (bannerShown) return; console.log('🍪 [Cookie Banner] Interacción detectada:', eventType); bannerShown = true; // Mostrar banner showBanner(); // Remover event listeners para optimizar rendimiento window.removeEventListener('scroll', onScroll); window.removeEventListener('click', onClick); window.removeEventListener('touchstart', onTouch); window.removeEventListener('mousemove', onMouseMove); console.log('🍪 [Cookie Banner] Event listeners removidos'); } const onScroll = () => onUserInteraction('scroll'); const onClick = () => onUserInteraction('click'); const onTouch = () => onUserInteraction('touch'); const onMouseMove = () => onUserInteraction('mousemove'); // Agregar event listeners para detectar interacción window.addEventListener('scroll', onScroll, { passive: true }); window.addEventListener('click', onClick); window.addEventListener('touchstart', onTouch, { passive: true }); window.addEventListener('mousemove', onMouseMove, { passive: true }); console.log('🍪 [Cookie Banner] Detectores de interacción activados'); } // Inicializar function init() { console.log('🍪 [Cookie Banner] Iniciando banner de cookies...'); const consent = checkConsent(); if (!consent) { // Configurar detectores de interacción si no hay consentimiento previo console.log('🍪 [Cookie Banner] No hay consentimiento guardado, esperando interacción del usuario'); setupUserInteractionDetection(); } else if (consent === 'accepted') { // Si ya aceptó, activar cookies console.log('✅ [Cookie Banner] Usuario ya aceptó cookies anteriormente'); enableAnalyticsCookies(); } else { // Si rechazó, desactivar cookies console.log('❌ [Cookie Banner] Usuario ya rechazó cookies anteriormente'); disableAnalyticsCookies(); } // Event listeners para botones acceptBtn.addEventListener('click', handleAccept); rejectBtn.addEventListener('click', handleReject); console.log('🍪 [Cookie Banner] Inicialización completada'); } // Iniciar init(); }); </script> <!-- Organization Schema.org --> <script type="application/ld+json"> { "@context": "https://schema.org", "@type": "Organization", "@id": "https://cristianprograma.com/#organization", "name": "Cristian Programa", "url": "https://cristianprograma.com", "logo": { "@type": "ImageObject", "url": "/imagenes/2025/09/logo-fondo-blanco-cristian-programa.webp", "width": 512, "height": 512 }, "description": "Growth Partner digital especializado en nichos profesionales. Combinamos SEO, SEM, Redes Sociales, Desarrollo Web y Contenidos para multiplicar resultados", "sameAs": [ "https://x.com/crisprograma", "https://www.instagram.com/cristianenremoto", "https://www.tiktok.com/@cristian.enremoto" ], "contactPoint": { "@type": "ContactPoint", "contactType": "Customer Service", "areaServed": "ES", "availableLanguage": "Spanish" } } </script> <!-- Breadcrumb Schema.org --> <script type="application/ld+json"> { "@context": "https://schema.org", "@type": "BreadcrumbList", "itemListElement": [ { "@type": "ListItem", "position": 1, "name": "Inicio", "item": "https://cristianprograma.com/" }, { "@type": "ListItem", "position": 2, "name": "Blog", "item": "https://cristianprograma.com/blog/" }, { "@type": "ListItem", "position": 3, "name": "Gu\u00edas Herramientas SEO", "item": "https://cristianprograma.com/blog/" }, { "@type": "ListItem", "position": 4, "name": "Moz Pro: Gu\u00eda Completa para Agencias SEO 2025", "item": "https://cristianprograma.com/blog/moz-pro-guia-agencias/" } ] } </script> <!-- Breadcrumb HTML --> <nav aria-label="Breadcrumb" class="breadcrumb-nav py-4 px-6"> <div class="mx-auto max-w-7xl"> <ol class="flex flex-wrap items-center gap-2 text-sm" itemscope itemtype="https://schema.org/BreadcrumbList"> <li itemprop="itemListElement" itemscope itemtype="https://schema.org/ListItem" class="flex items-center gap-2"> <a href="https://cristianprograma.com/" itemprop="item" class="text-brand-blue/80 hover:text-brand-blue transition-colors"> <span itemprop="name">Inicio</span> </a> <meta itemprop="position" content="1"> <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="text-brand-black/40" aria-hidden="true"> <path d="m9 18 6-6-6-6"></path> </svg> </li> <li itemprop="itemListElement" itemscope itemtype="https://schema.org/ListItem" class="flex items-center gap-2"> <a href="https://cristianprograma.com/blog/" itemprop="item" class="text-brand-blue/80 hover:text-brand-blue transition-colors"> <span itemprop="name">Blog</span> </a> <meta itemprop="position" content="2"> <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="text-brand-black/40" aria-hidden="true"> <path d="m9 18 6-6-6-6"></path> </svg> </li> <li itemprop="itemListElement" itemscope itemtype="https://schema.org/ListItem" class="flex items-center gap-2"> <a href="https://cristianprograma.com/blog/" itemprop="item" class="text-brand-blue/80 hover:text-brand-blue transition-colors"> <span itemprop="name">Guías Herramientas SEO</span> </a> <meta itemprop="position" content="3"> <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="text-brand-black/40" aria-hidden="true"> <path d="m9 18 6-6-6-6"></path> </svg> </li> <li itemprop="itemListElement" itemscope itemtype="https://schema.org/ListItem" class="flex items-center gap-2"> <a href="https://cristianprograma.com/blog/moz-pro-guia-agencias/" itemprop="item" class="text-brand-blue/80 hover:text-brand-blue transition-colors"> <span itemprop="name">Moz Pro: Guía Completa para Agencias SEO 2025</span> </a> <meta itemprop="position" content="4"> </li> </ol> </div> </nav> <!-- FAQ Schema.org --> <script type="application/ld+json"> { "@context": "https://schema.org", "@type": "FAQPage", "mainEntity": [ { "@type": "Question", "name": "\u00bfQu\u00e9 es Domain Authority y por qu\u00e9 es importante?", "acceptedAnswer": { "@type": "Answer", "text": "Domain Authority (DA) es m\u00e9trica 0-100 de Moz que predice capacidad de un dominio de rankear en Google. Calculada mediante machine learning considerando backlinks (cantidad, calidad, diversidad), spam score, edad dominio, estructura interna. NO es factor ranking Google directo, pero correlaciona fuertemente con rankings. Importante porque: (1) Benchmark competencia (si competidores DA 50+, necesitas similar para competir), (2) M\u00e9trica progreso linkbuilding, (3) Lenguaje universal SEO (clientes entienden \"mejorar DA\")." } }, { "@type": "Question", "name": "\u00bfC\u00f3mo puedo mejorar el Domain Authority de mi web?", "acceptedAnswer": { "@type": "Answer", "text": "DA mejora indirectamente optimizando factores que lo calculan: (1) Conseguir backlinks calidad desde dominios DA 40+ (guest posting, digital PR, menciones prensa), (2) Diversificar dominios que enlazan (100 dominios \u00fanicos > 500 enlaces desde 10), (3) Eliminar/disavow enlaces t\u00f3xicos (reduce spam score), (4) Crear contenido linkeable (estudios, recursos, infograf\u00edas), (5) Optimizar linking interno (distribuye autoridad). Paciencia: DA aumenta meses/a\u00f1os, NO semanas. Mejora t\u00edpica: +5-10 puntos/a\u00f1o con linkbuilding sostenido." } }, { "@type": "Question", "name": "\u00bfMoz Pro vale la pena vs Ahrefs o Semrush?", "acceptedAnswer": { "@type": "Answer", "text": "Depende prioridades. Moz Pro mejor para: reportes cliente (DA m\u00e9trica clara), interfaz simple, m\u00e9tricas \u00fanicas (Priority, Organic CTR), menor precio planes b\u00e1sicos. Ahrefs mejor para: an\u00e1lisis backlinks profundo (base datos mayor), keyword research internacional, funcionalidades t\u00e9cnicas avanzadas. Semrush mejor para: suite marketing completo (PPC, social), an\u00e1lisis competencia multi-canal. Agencias t\u00edpicamente: Moz Pro (reporting cliente) + Ahrefs/Semrush trial puntual (an\u00e1lisis profundo) = mejor ambos mundos." } }, { "@type": "Question", "name": "\u00bfQu\u00e9 es la m\u00e9trica Priority en Keyword Explorer?", "acceptedAnswer": { "@type": "Answer", "text": "Priority Score (0-100) combina volumen b\u00fasqueda, dificultad ranking, y organic CTR en m\u00e9trica \u00fanica. F\u00f3rmula: volumen alto + dificultad baja + CTR alto = priority alta. Ventaja: automatiza decisi\u00f3n qu\u00e9 keywords priorizar evitando an\u00e1lisis manual complejo. Workflow eficiente: exporta 200+ keywords, ordena por Priority, filtra 60+, selecciona top 30 = keywords mejor retorno esfuerzo. \u00danico en Moz (Ahrefs/Semrush no tienen equivalente directo)." } }, { "@type": "Question", "name": "\u00bfQu\u00e9 plan de Moz Pro necesito para mi agencia?", "acceptedAnswer": { "@type": "Answer", "text": "C\u00e1lculo: ~1 campa\u00f1a/cliente + buffer. Starter $79/mes: 3 campa\u00f1as, 300 keywords (ideal 2-3 clientes). Standard $179/mes: 10 campa\u00f1as, 1,500 keywords (ideal 8-12 clientes). Medium $299/mes: 25 campa\u00f1as, 3,000 keywords (ideal 20-25 clientes). Large $599/mes: 50 campa\u00f1as, 5,000 keywords (ideal 40+ clientes). Tip: trackea ~50-150 keywords/cliente. Si 10 clientes \u00d7 100 keywords = 1,000 \u2192 Standard suficiente. Upgrade cuando alcances 80% l\u00edmite." } }, { "@type": "Question", "name": "\u00bfC\u00f3mo usar Link Intersect para conseguir backlinks?", "acceptedAnswer": { "@type": "Answer", "text": "Link Intersect identifica sitios que enlazan a 2+ competidores pero NO a ti. Paso 1: Link Explorer \u2192 Link Intersect. Paso 2: Introduce tu dominio + 3-5 competidores. Paso 3: Moz muestra dominios que enlazan a competencia pero no a ti (oportunidades linkbuilding). Paso 4: Exporta lista, filtra DA 30+. Paso 5: Investiga cada sitio (\u00bfblog? \u00bfmedio? \u00bfdirectorio?). Paso 6: Outreach personalizado (guest post, menci\u00f3n recurso, broken link). Efectividad alta: sitios ya enlazan tu nicho (relevantes, receptivos)." } }, { "@type": "Question", "name": "\u00bfQu\u00e9 es Spam Score y cu\u00e1ndo debo desautorizar enlaces?", "acceptedAnswer": { "@type": "Answer", "text": "Spam Score (0-100%) mide probabilidad sitio sea spam seg\u00fan 27 se\u00f1ales (ratio enlaces bajo, thin content, TLD sospechosos, etc.). Desautorizar SOLO si: (1) Penalizaci\u00f3n manual Google confirmada, (2) Ca\u00edda tr\u00e1fico dr\u00e1stica correlacionada con enlaces spam espec\u00edficos. NO desautorizar preventivamente (Google ignora mayor\u00eda spam autom\u00e1ticamente, desautorizar enlaces buenos puede perjudicar). Proceso: Link Explorer \u2192 filtra Spam Score 50%+, revisa manual, intenta remover contactando webmaster, si fallan \u2192 Disavow Tool GSC." } }, { "@type": "Question", "name": "\u00bfLos datos de Moz son tan precisos como Ahrefs?", "acceptedAnswer": { "@type": "Answer", "text": "Base datos Moz menor que Ahrefs (40T enlaces vs 35T+ Ahrefs, actualizaci\u00f3n mensual vs diaria Ahrefs). Para backlinks: Ahrefs m\u00e1s completo (detecta m\u00e1s enlaces, actualiza m\u00e1s frecuente). Para keywords: ambos usan estimaciones Google Keyword Planner (precisi\u00f3n similar \u00b120-30%). Ventaja Moz: m\u00e9tricas \u00fanicas (Priority, Organic CTR, DA/PA) ausentes Ahrefs. Estrategia: Moz an\u00e1lisis general + Ahrefs deep-dives puntuales = cobertura completa sin duplicar costos." } } ], "name": "Preguntas frecuentes - Moz Pro: Gu\u00eda Completa para Agencias SEO 2025", "headline": "Moz Pro: Gu\u00eda Completa para Agencias SEO 2025", "description": "Tutorial definitivo de Moz Pro: Domain Authority, Link Explorer, Keyword Explorer, Site Crawl y Rank Tracking. Aprende a usar Moz para gestionar clientes SEO profesionalmente." } </script> <!-- BlogPosting Schema.org --> <script type="application/ld+json"> { "@context": "https://schema.org", "@type": "BlogPosting", "mainEntityOfPage": { "@type": "WebPage", "@id": "" }, "headline": "Moz Pro: Gu\u00eda Completa para Agencias SEO 2025", "description": "Tutorial definitivo de Moz Pro: Domain Authority, Link Explorer, Keyword Explorer, Site Crawl y Rank Tracking. Aprende a usar Moz para gestionar clientes SEO profesionalmente.", "image": { "@type": "ImageObject", "url": "https://cristianprograma.com/imagenes/blog/gui-a-completa-blog-para-negocios-locales-en-barce-2.webp", "width": 1200, "height": 630 }, "datePublished": "2026-03-10T15:51:28+01:00", "dateModified": "2026-03-10T15:51:28+01:00", "author": { "@type": "Person", "name": "Cristian Programa", "url": "https://cristianprograma.com" }, "publisher": { "@type": "Organization", "name": "Cristian Programa", "logo": { "@type": "ImageObject", "url": "/imagenes/2025/09/logo-fondo-blanco-cristian-programa.webp", "width": 512, "height": 512 } }, "articleSection": "Gu\u00edas Herramientas SEO", "inLanguage": "es-ES" } </script> </body> </html>