/* global React, Logo, Icon, SERVICES, OUTLETS, PROCESS, FAQS, PLANS, AUTHORS, WEBHOOK_URL */ const { useState } = React; const COUNTRIES = ["España", "México", "Colombia", "Chile", "Argentina", "Estados Unidos", "Perú", "Otro"]; /* ============================================================ HOME ============================================================ */ function HomePage({ navigate, openSchedule }) { const quotes = [ { t: "“Pasamos de no aparecer a ser citados por ChatGPT en tres meses.”", a: "Director de marketing · SaaS B2B" }, { t: "“+300% de tráfico orgánico desde la campaña inicial en medios asociados.”", a: "CMO · Real Estate" }, { t: "“Hoy la marca aparece en respuestas de Gemini y en la ficha de Maps.”", a: "Fundador · Clínica privada" }, ]; const [qi, setQi] = useState(0); return (
{/* ============ HERO ============ */}

Sé visible. Sé creíble. citado.

Ayudamos a marcas y empresas a ganar visibilidad en{" "} Google, Google Maps, respuestas de IA y medios de alta autoridad{" "} mediante una red de portales periodísticos asociados aprobados por Google News.

En vivo · Redacción
{/* ============ BIENVENIDOS + COST OF INACTION ============ */}
Agencia de medios

No publicar hoy te cuesta visibilidad en 6 meses.

Cada mes que pasa sin publicar en medios de alta autoridad, los competidores ganan terreno en Google, Google Maps y las respuestas de IA. Recuperarlo después cuesta entre 3 y 5 veces más.

Coste de no publicar 3–5× más caro recuperar autoridad después de 6 meses sin presencia editorial.
AI Overviews 68% de las búsquedas en 2026 ya muestran respuestas generadas por IA antes que tu web.
Tu competencia −42% tráfico orgánico promedio de empresas sin cobertura editorial en su sector.
Google Maps más clics en fichas con menciones de prensa frente a las que no las tienen.
{/* ============ FEATURE GRID (dark) ============ */}
{Icon.asterisk(36)} Periodistas con al menos 5 años de experiencia editorial.
{Icon.plus(36)} Equipo de verificación y fact-checking interno.
press · agencia de medios
{Icon.bot(36)} Cobertura indexada en Google News, Discover y AI Overviews.
Casos en finanzas, tech, salud, legal, real estate y B2B.
+50 periodistas
en plantilla
Bajo NDA cuando lo necesitas. Confidencialidad por defecto.
{Icon.clock(36)} Reportes con impacto SEO en tiempo real.
Distribución coordinada con embargos multi-medio.
500M impresiones
al mes
{/* ============ TICKER ============ */}
{[...OUTLETS, ...OUTLETS].map((o, i) => {o})}
{/* ============ PROCESS ============ */}
El proceso

Del briefing a los titulares.

5 fases en 21 días. Editor senior dedicado. Resultados verificables al cierre.

{PROCESS.map((p) => (
{p.num} {p.title} {p.desc} {p.tag}
))}
{/* ============ SERVICES — real images ============ */}
{SERVICES.map((s) => ( { e.preventDefault(); navigate(`/servicios/${s.slug}`); }} className="svc-img"> {s.title}
{/* ============ AUTHORS ============ */}
Quién firma

Periodistas reales.
Con nombre y trayectoria.

Cada artículo lleva firma. Cada firma tiene historial verificable. Sin pseudónimos ni cuentas fantasma.

{AUTHORS.map((a) => (
{a.photo ? {a.name} : }
{a.name}
{a.role}

{a.bio}

))}
{/* ============ FAQ ============ */}
Preguntas frecuentes

Lo que siempre
nos preguntan.

{/* ============ CTA BLOCK ============ */}

Aparece donde tus clientes te buscan.

Google, Google Maps, ChatGPT, Gemini, Perplexity y medios de alta autoridad. Una sola estrategia.

); } /* ---------- Helpers ---------- */ function AvatarCircle({ name, hue }) { // SVG avatar: gradient circle with initials — used as photo placeholder const initials = name.split(" ").map(w => w[0]).slice(0, 2).join(""); return ( ); } function FaqList({ items }) { const [open, setOpen] = useState(0); return (
{items.map((f, i) => (
setOpen(open === i ? -1 : i)}> {f.q} +
{f.a}
))}
); } /* ============================================================ SERVICIOS overview ============================================================ */ function ServiciosPage({ navigate, openSchedule }) { return (
{ e.preventDefault(); navigate("/"); }}>Inicio / Servicios

Cuatro servicios.
Una redacción.

Cada cuenta tiene un editor senior asignado y un pool de periodistas especializados. Investigación, redacción y distribución en una sola operación.

{SERVICES.map((s) => ( { e.preventDefault(); navigate(`/servicios/${s.slug}`); }} className="svc-img svc-img--portrait"> {s.title}

Una llamada de 30 minutos para definir tu estrategia.

); } /* ============================================================ SERVICIO DETAIL ============================================================ */ function ServicioDetail({ slug, navigate, openSchedule }) { const svc = SERVICES.find((s) => s.slug === slug); if (!svc) return ; const idx = SERVICES.findIndex((s) => s.slug === slug); const next = SERVICES[(idx + 1) % SERVICES.length]; return (
{svc.num} · Servicio

{svc.title.split(" ").map((w, i, a) => i === a.length - 1 ? {w} : {w} )}

{svc.long}

{/* BENEFITS — replaces 4-image gallery */}
Qué incluye

Beneficios concretos.

No promesas. Cada elemento es entregable, medible y reportable a tu equipo.

{svc.benefits.map((b, i) => (
{Icon[b.icon] ? Icon[b.icon](32) : Icon.asterisk(32)} {b.t} {b.d}
))}
{/* COST OF INACTION reused on detail */}
Por qué importa ya

Cada mes sin publicar es terreno cedido a tu competencia.

La autoridad editorial se construye con tiempo. Cuanto más tardes, más caro y lento será aparecer en Google, en respuestas de IA y en la ficha de Google Maps.

Autoridad 6m tiempo medio para empezar a aparecer en respuestas de IA tras publicar en alta autoridad.
Coste 3–5× más caro recuperar visibilidad si lo intentas dentro de un año.
Citas en IA +148% marcas con cobertura editorial son citadas más por ChatGPT y Gemini.
SEO DA 50+ autoridad mínima de los portales asociados de la red de mediastar press.
{/* NEXT */}
Siguiente servicio { e.preventDefault(); navigate(`/servicios/${next.slug}`); }} style={{ fontSize: "clamp(36px, 5vw, 64px)", fontWeight: 800, letterSpacing: "-0.04em", display: "inline-flex", alignItems: "center", gap: 18 }}> {next.title}
); } /* ============================================================ RED de medios ============================================================ */ function RedPage({ navigate, openSchedule }) { const moreOutlets = [ ...OUTLETS, "Estrategia Hoy", "Pulso Económico", "Marca & Mercado", "Reporte Digital", "Sector Pro", "El Heraldo Empresa", "Tecnopress", "Líderes Latam", "Visión Económica", "Diario Marca", "El Cronista Pro", "Press Iberia", ]; return (

+200 portales asociados.

Cabeceras con dominios DA 50+ aprobadas por Google News, distribuidas en España, Latinoamérica y Estados Unidos. Verticales: negocios, tecnología, finanzas, salud, lifestyle y B2B.

{[ { v: "+200", l: "Portales asociados", tag: "Red" }, { v: "60+", l: "DA promedio (alta autoridad)", tag: "Calidad" }, { v: "08", l: "Países de cobertura", tag: "Alcance" }, { v: "+50", l: "Periodistas en plantilla", tag: "Equipo" }, ].map((m, i) => (
{m.tag}
{m.v}
{m.l}
))}
Listado parcial

Cabeceras donde aparecerás.

{moreOutlets.map((o) => (
{o}
))}

✦ Lista completa bajo NDA durante el briefing

¿Tu marca, en estos titulares?

); } /* ============================================================ PLANES ============================================================ */ function PlanesPage({ navigate, openSchedule }) { return (

Planes simples.
Resultados medibles.

Tres planes pensados para etapas distintas. Sin contratos largos. Cambias o cancelas cuando quieras. Diagnóstico inicial sin coste.

{PLANS.map((p) => (
{p.name}
{p.price}{p.suffix}
    {p.bullets.map((b) =>
  • {b}
  • )}
))}

¿No estás seguro qué plan necesitas?

); } /* ============================================================ CONTACTO ============================================================ */ function ContactoPage({ navigate, openSchedule }) { const [form, setForm] = useState({ name: "", company: "", country: "España", website: "", objective: "Visibilidad en Google (SEO)", message: "", }); const [sent, setSent] = useState(false); const [sending, setSending] = useState(false); const [errors, setErrors] = useState({}); const update = (k, v) => setForm({ ...form, [k]: v }); const onSubmit = async (e) => { e.preventDefault(); const errs = {}; if (!form.name) errs.name = "Requerido"; if (!form.company) errs.company = "Requerido"; if (!form.website) errs.website = "Indica tu sitio"; if (!form.message || form.message.length < 10) errs.message = "Cuéntanos algo más (mín. 10 caracteres)"; setErrors(errs); if (Object.keys(errs).length > 0) return; setSending(true); try { await fetch(WEBHOOK_URL, { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ nombre: form.name, empresa: form.company, pais: form.country, sitio_web: form.website, objetivo: form.objective, mensaje: form.message, origen: "formulario-contacto", }), }); } catch (_) {} setSending(false); setSent(true); window.scrollTo({ top: 0, behavior: "smooth" }); }; return (

Cuéntanos tu proyecto.

Te respondemos en menos de 24h con propuesta editorial, presupuesto y calendario. ¿Prefieres directamente una llamada? Agenda en 2 clicks.

{sent ? (
★ Enviado

Gracias, {form.name.split(" ")[0]}.

Hemos recibido tu mensaje. Un editor senior te contactará en menos de 24 horas con propuesta inicial y posibles fechas para el primer briefing.

) : (
update("name", e.target.value)} placeholder="Ana Martínez" /> {errors.name && {errors.name}}
update("company", e.target.value)} placeholder="Tu marca" /> {errors.company && {errors.company}}
update("website", e.target.value)} placeholder="https://" /> {errors.website && {errors.website}}