diff --git a/src/components/OrganicoDashboard.tsx b/src/components/OrganicoDashboard.tsx index 86e651d..9d6da40 100644 --- a/src/components/OrganicoDashboard.tsx +++ b/src/components/OrganicoDashboard.tsx @@ -171,7 +171,9 @@ export default function OrganicoDashboard({ }, [load]); useEffect(() => { - const first = ORGANICO_SECTIONS.find((s) => s.pillar === pillar); + const first = ORGANICO_SECTIONS.find( + (s) => s.pillar === pillar && !s.soon + ); if (first) setSectionId(first.id); }, [pillar]); @@ -214,7 +216,9 @@ export default function OrganicoDashboard({ const maxSessions = Math.max(1, ...seoDaily.map((d) => d.sessions)); const section = useMemo( - () => ORGANICO_SECTIONS.find((s) => s.id === sectionId)!, + () => + ORGANICO_SECTIONS.find((s) => s.id === sectionId) || + ORGANICO_SECTIONS.find((s) => s.pillar === 'seo' && !s.soon)!, [sectionId] ); const navGroups = useMemo(() => groupsForPillar(pillar), [pillar]); @@ -406,11 +410,11 @@ export default function OrganicoDashboard({ } />

- Selecciona un cliente para abrir su suite SEO / GEO. + Selecciona un cliente para ver su SEO.

); @@ -429,7 +433,7 @@ export default function OrganicoDashboard({ @@ -438,20 +442,10 @@ export default function OrganicoDashboard({ onChange={(p) => setPillar(p)} size="sm" options={[ - { id: 'geo', label: 'GEO · IA' }, { id: 'seo', label: 'SEO' }, + { id: 'geo', label: 'GEO · IA' }, ]} /> - {isAgency ? ( - - ) : null} } /> @@ -473,15 +467,6 @@ export default function OrganicoDashboard({ {[ { title: 'Search Console', row: gsc }, { title: 'GA4', row: ga4 }, - { - title: 'GEO / IA', - row: latestGeo - ? { - status: 'connected', - external_account_id: latestGeo.label || 'Medición activa', - } - : { status: 'disconnected', external_account_id: null }, - }, ].map((c) => (
{c.row?.external_account_id || 'Sin vincular'}

- {isAgency && tenantId && c.title !== 'GEO / IA' ? ( + {isAgency && tenantId ? ( ))} +
+
+

GEO / IA

+ + Próximamente + +
+

+ Visibilidad de marca en ChatGPT, Gemini y AI Overviews. +

+
- {/* Capture forms */} - {isAgency && showCapture && pillar === 'seo' && ( + {pillar === 'geo' ? ( +
+

+ Próximamente disponible +

+

GEO · visibilidad en IA

+

+ Aquí mediremos cómo aparece la marca en respuestas de ChatGPT, + Gemini y AI Overviews (Share of Model, citas, competidores). SEO + (Google) sigue en la pestaña SEO, con datos de Search Console y + Analytics. +

+
+ ) : ( + <> + {isAgency && showCapture && ( void saveOrganicDay()} /> )} - {isAgency && showCapture && pillar === 'geo' && ( - void saveGeo()} - /> - )} {/* Shell: nav + content */}
+ + )} ); } diff --git a/src/lib/organic.ts b/src/lib/organic.ts index 80457a7..908fbb7 100644 --- a/src/lib/organic.ts +++ b/src/lib/organic.ts @@ -439,13 +439,10 @@ export const ORGANICO_SECTIONS: OrganicoSection[] = [ group: 'Rendimiento del sitio', label: 'Rastreo de posición', blurb: - 'Sí: posición media diaria en organic_daily (histórico nuestro) + ranking actual de queries GSC. No es un rank tracker de 10k KW tipo Semrush; es lo que GSC reporta para tus impresiones reales.', - actions: [ - 'Mirar tendencia de posición media', - 'Atacar queries en pos. 4–15 (quick wins)', - 'Ampliar cartera vía contenido', - ], + 'Cubierto en Palabras clave (posición GSC) y Visión general (tendencia diaria).', + actions: [], live: 'seo-rankings', + soon: true, }, { id: 'seo-organic', @@ -453,13 +450,10 @@ export const ORGANICO_SECTIONS: OrganicoSection[] = [ group: 'Tráfico y páginas', label: 'Posicionamiento orgánico', blurb: - 'Evolución de clics e impresiones (visibilidad). Distinto de «Páginas principales».', - actions: [ - 'Leer tendencia MoM de clics', - 'Cruzar con campañas de contenido', - 'Alertar caídas bruscas', - ], + 'Misma serie de clics/impresiones que Visión general. Se unifica ahí.', + actions: [], live: 'seo-trend', + soon: true, }, { id: 'seo-pages', @@ -495,13 +489,10 @@ export const ORGANICO_SECTIONS: OrganicoSection[] = [ group: 'Keywords', label: 'Organic Traffic Insights', blurb: - 'Cruce GSC (páginas) + GA4 (sesiones orgánicas / landings) para ver qué rankea y qué convierte.', - actions: [ - 'Comparar top pages GSC vs landings GA4', - 'Detectar páginas con clics y poca conversión', - 'Informar ROI orgánico', - ], + 'El cruce GSC + GA4 ya está en Visión general (top queries, páginas y landings).', + actions: [], live: 'seo-cross', + soon: true, }, { id: 'seo-competition', @@ -540,7 +531,10 @@ export function sectionsForPillar(pillar: OrganicoPillar): OrganicoSection[] { export function groupsForPillar( pillar: OrganicoPillar ): { group: string; items: OrganicoSection[] }[] { - const list = sectionsForPillar(pillar); + if (pillar === 'geo') return []; + const list = sectionsForPillar('seo').filter( + (s) => !s.soon || s.id === 'seo-competition' + ); const order: string[] = []; const map = new Map(); for (const s of list) { diff --git a/src/lib/tenant-modules.ts b/src/lib/tenant-modules.ts index 67c752d..e5f2b4f 100644 --- a/src/lib/tenant-modules.ts +++ b/src/lib/tenant-modules.ts @@ -77,7 +77,7 @@ export const DASHBOARD_MODULES: DashboardModuleDef[] = [ href: '/dashboard/organico', label: 'Orgánico', providers: ['ga4', 'search_console'], - hint: 'SEO (GSC/GA4) + GEO (visibilidad IA)', + hint: 'SEO (Search Console y GA4)', }, { id: 'activos',