# Auditoría SEO completa — sysfarma.pe (2026-06-30)

> Sitio de marketing del SaaS (layout `system`, vive en este repo). Auditoría con evidencia real:
> código + sitio en vivo (curl) + Google Search Console (API directa) + Google Autocomplete (PE).
> Complementa/actualiza `docs/seo/AUDITORIA-Y-PLAN-SEO.md` (2026-06-21) con data 9 días más fresca.

## 0. Estado en una línea
Curva **fuertemente ascendente** (impr ×23, clicks ×6.7 en un mes, pos 8.2→7.5). Base técnica **sólida**.
El motor real es el **blog informacional**; la cabeza comercial en Perú es de **muy bajo volumen (<100/mes)**.
Palanca #1 (fix de CTR del blog) ya deployada — **medir ~7-14 jul**. Próxima palanca = **contenido whitespace**.

---

## 1. Performance orgánica (GSC, 31-may → 27-jun vs mes previo)
| Métrica | Ahora | Previo | Δ |
|---|---|---|---|
| Clicks | 101 | 15 | ×6.7 |
| Impresiones | 5,360 | 231 | ×23 |
| Posición media | 7.5 | 8.2 | ✓ mejora |
| CTR | 1.88% | 6.49% | ⬇ (impr explotó en queries informacionales pos 6-10) |

Top páginas: home (267 impr, pos 9.6), blog/digemid-bpa (1,741, pos 7.4), blog/fefo (1,528, pos 6.7),
blog/boletas (652, pos 4.7), /pos-farmacia (76, pos 13.3), /precios (110, pos 4.8), /software-farmacia-gratis (11, pos 3.1).

---

## 2. Técnico / Crawlabilidad — **BIEN**
- **robots.txt** ✓ ejemplar: permite bots de IA que citan (GPTBot, ClaudeBot, PerplexityBot, Google-Extended, Bingbot),
  bloquea training-only (CCBot), `Disallow` a rutas de app (/dashboard, /clients, /configurations, /api), referencia el sitemap. **AEO-ready.**
- **HTTPS** ✓ todo 200 sobre https. **Canonical** ✓ self-referencing en home, landings, ciudades y blog.
- **Sitemap** (`/sitemap.xml`): 32 URLs válidas (landings + 6 ciudades + blog + precios). No filtra `noindex` (hoy inocuo: nada está noindex).
- **Robots meta** ✓ `index,follow,max-image-preview:large` en home/landings/ciudades; `index,follow` en blog.

### Hallazgos técnicos
| # | Issue | Impacto | Fix |
|---|---|---|---|
| T1 | `/programa-para-farmacia` = **404** (query real, pos 62) | Bajo (vol <100) | 301 → `/software-para-farmacias`, o crear página |
| T2 | Core Web Vitals no medidos (PSI pide API key) | ? | Correr PageSpeed Insights manual mobile/desktop (nota: hero usa `sf-*.webp` con width/height reales → CLS≈0 ya) |
| T3 | Sitemap no excluye noindex | Nulo hoy | Filtrar si a futuro se vuelve a noindexar ciudades |

`/sistema-para-boticas` que antes era 404 **ahora responde 200** (corregido desde la auditoría previa).

---

## 3. On-Page — **BIEN, con detalles**
- **Titles** únicos, keyword-first. Ej. blog: "FEFO y FIFO en farmacias: qué son y qué exige DIGEMID" ✓.
  ⚠️ Home title ~68 chars ("Sysfarma | Software para Farmacias y Boticas en Perú — Desde S/69/mes") puede **truncar** en SERP (~60).
- **Meta descriptions** presentes, ~155 chars, con CTA + prueba social. ✓
- **H1** presente y **diferenciado** del `<title>` (patrón del fix de CTR). ✓
- **Schema JSON-LD**:
  - **Blog** = excelente: `Article` + `BreadcrumbList` + `FAQPage` + `Question/Answer` + `Organization`. ✓✓
  - **Landing** (`/software-para-farmacias`): `FAQPage` presente (1 bloque ld+json).
  - **Home**: 1 bloque ld+json. `aggregateRating` **ya no aparece** (se removió el riesgo de reviews inventadas — confirmar).

### Hallazgos on-page
| # | Issue | Impacto | Fix |
|---|---|---|---|
| O1 | Home title >60 chars (trunca) | Medio | Acortar a ≤60 anteponiendo el término ("Software para Farmacias en Perú \| Sysfarma") |
| O2 | Landing `/software-para-farmacias` body **hardcodeado** en `landing_v2.blade.php` (ignora `config/seo.php`) | Bajo | Riesgo de FAQ visible ≠ FAQ del schema; alinear conteos |
| O3 | Home (`auth.blade` estático) → la entrada `'home'` de `config/seo.php` y el branch home de `landing_v2` son **código muerto** | Nulo (limpieza) | Documentado; no tocar salvo refactor |

---

## 4. Contenido / Keywords — **la gran oportunidad**
Investigación propia (Google Autocomplete PE + cruce GSC): **509 keywords** limpias mapeadas.

### 4a. Volumen comercial de cabeza = BAJO (Ahrefs PE)
`sistema de farmacia`, `software para farmacia` y **todas** sus variantes → **<100/mes**. Rankear la cabeza
comercial rinde migajas. Los seeds `farmacia`/`software` de alto volumen son marca/consumidor (inkafarma, farmacia 24h) — irrelevantes.

### 4b. Whitespace informacional = ORO (demanda real, ~0 contenido nuestro)
| Cluster | Long-tails | Impr GSC ya | Nota |
|---|---|---|---|
| **Control de vencimientos** | **53** | **0** | 🔥 intención de herramienta ("con alertas", "en excel", "app", "software para…") = puente info→comercial |
| Inventario / Kardex / Stock | 110 | ~0 | "ejemplo", "plantilla", "en excel" |
| Cadena de frío | 47 | ~0 | regulatorio ("cuáles son", "plan de contingencia") |
| Receta retenida / psicotrópicos | 69 | 0 | nicho regulatorio |

### 4c. Clusters validados (ya rankean → extender es barato)
BPA/buenas prácticas (428 impr, +107 ideas), DIGEMID (340 impr), FEFO/FIFO (646 impr), Boleta/factura (194 impr, pos 2.9-5.1).

---

## 5. Canibalización & enlazado
- **Boleta**: el blog `boletas-medicamentos-peru` (652 impr) y la landing `/facturacion-electronica-farmacias`
  compiten por "boleta de farmacia"/"boleta de medicamentos". Definir **1 página canónica** por intención (informacional vs comercial).
- **Ciudades**: 6 páginas (`software-farmacia-{lima,arequipa,trujillo,cusco,piura,chiclayo}`) **index** con títulos
  diferenciados vs `/software-para-farmacias`. Canibalización **menor** (bajo volumen); monitorear, no urgente.
- **Enlazado interno**: el fix agregó `product_cta` (blog → /precios, /pos-farmacia). **Extender**: clusters temáticos
  (post↔post) y blog → comercial con anchor de intención.

---

## 6. E-E-A-T / Confianza
- Claim **"1,200 boticas en Perú"** en meta/home → **sustanciar** (logos/casos reales) o suavizar; riesgo de confianza si no es real.
- Blog con FAQ + HowTo + autor/Organization ✓. Sumar señales de autor/experiencia refuerza E-E-A-T.

---

## 7. Plan priorizado
**P1 — Contenido whitespace (mayor ROI).** Arrancar por **"Control de vencimientos en farmacia"**
(whitespace + intención de herramienta = mejor puente comercial). Luego inventario/kardex, cadena de frío, receta retenida.
**P1 — Medir** el fix de CTR del blog ~7-14 jul (no re-tocar esos títulos hasta entonces).
**P2 —** Resolver canibalización de "boleta" (canónica por intención). Arreglar 404 `/programa-para-farmacia` (301).
**P2 —** Acortar el `<title>` del home (≤60).
**P3 —** Sustanciar "1,200 boticas". Correr PSI (CWV). Monitorear/consolidar ciudades.
**P4 —** Enlazado interno en clusters temáticos (blog↔blog, blog→comercial).

**NO priorizar**: landings para la cabeza comercial (<100 vol). Se pescan gratis al ganar autoridad el blog.

---

## 8. Automatización (pipeline propio, en `scripts/seo/`)
- `keyword-harvest.mjs` — Google Autocomplete PE (gratis, sin login/captcha) → descubre long-tail.
- `gsc-crossref.mjs` — GSC API → valida demanda + clusteriza + marca movimiento.
- `gsc-report.mjs` — snapshot de performance (totales, top queries/páginas, striking distance).
Schedulable (cron semanal). El MCP `gsc` tiene tools equivalentes (`opportunity_finder`, `quick_wins`, `content_decay`)
pero cachea el token viejo; los scripts directos con token fresco son más confiables. Ver `scripts/seo/README.md`.
