
Cerrajero automotriz local 24/7 en Benidorm y toda la Costa Blanca. Empezamos con una landing WordPress de una sola página que no podía recibir tráfico SEO. Terminamos la etapa con un sitio estático de 99 páginas HTML en 5 idiomas.
Sitio en vivo: kkkey.es
Indicadores clave en 6 meses
| 1 → 99 páginas indexadas | 5 idiomas con URLs físicas |
| 424 clics en GSC | 49 400 impresiones |
| 18.2 posición media | ~0 → 10+ clics/día en picos |
| 24 páginas reciben clics | ~500 € presupuesto de etapa |
TL;DR
- Antes: landing WordPress de una página con plugin que generaba traducciones sobre la marcha vía JavaScript. Googlebot veía HTML vacío, en el índice — 1 página para decenas de intenciones comerciales.
- Ahora: sitio estático en Cloudflare con 99 páginas HTML × 5 idiomas (ES/EN/NL/RU/UK) × 12 ciudades × 9 servicios × 3 marcas de coche. hreflang correcto, Schema LocalBusiness, redirecciones 301 server-side en lugar de meta-refresh.
- Cómo con presupuesto de 500 €: pipeline Python idempotente que genera versiones RU/UK desde el origen ES y reescribe los grupos hreflang según las versiones de idioma realmente existentes. La localización manual de 100 páginas no cabe en ese presupuesto — la automatización sí.
- Resultado con linkbuilding mínimo: 424 clics y 49 400 impresiones en GSC en 6 meses. Solo catálogos locales — Google Business Profile y directorios ES especializados. Marca
kkkey— posición 2.1 con CTR 10.6%.cerrajero benidorm— posición 6.5 con 2 330 impresiones.
El problema
El cliente tiene un negocio pequeño 24/7 en Benidorm: apertura de coches, copia de llaves (incluido smart-key VAG), cambio de cerraduras, trabajo en un radio de ~40 km por la Costa Blanca y pueblos de montaña (Tárbena, Beniarbeig, Bolulla, Sella, Jalón). Clientela — locales + turistas (EN/NL) + expats (RU/UK).
El sitio original era una landing WordPress con plugin multilingüe que traducía el contenido al vuelo mediante JavaScript. En la práctica:
- Para Google, en el índice había exactamente una URL — la home. Todo lo demás (servicios, ciudades, idiomas) existía solo en el render JS sin direcciones físicas.
- Los competidores del nicho mantenían 10–50 páginas indexables y se llevaban todo el tráfico comercial local.
- El techo de una landing de una página — 5–20 clics/mes repartidos entre decenas de intenciones distintas.
Presupuesto de etapa — ~500 €. La tarea se formuló como «hacer un sitio capaz de recibir tráfico por la combinación servicios × ciudades × marcas × idiomas», sin salirse de ese presupuesto.
Punto de partida
| Métrica | Valor (diciembre 2025) |
|---|---|
| Páginas en el índice | 1 |
| Versiones de idioma con URL | 0 (solo pseudo-traducción JS) |
| GSC: clics/día | 0–3 |
| GSC: posición media | 25–40 |
| Ahrefs referring domains | 4 |
| Ahrefs organic keywords | 8 |
| Sitemap / Schema / hreflang | ausentes |
Lo que se hizo — 5 frentes
1. Migración de WordPress CSR a stack estático
WordPress + plugin JS reemplazados por build estático en Cloudflare (Pages + Workers / pipeline Node). El sitio vive ahora como un conjunto de archivos HTML con lógica de servidor solo donde hace falta — redirecciones, normalización de slashes, reglas simples en edge. Nada de CMS ni base de datos en producción.
Efecto: Googlebot recibe inmediatamente HTML listo con todo el contenido (en lugar de una cáscara CSR vacía), las páginas se indexan. Velocidad de carga — unos medio segundo gracias al CDN de Cloudflare y la ausencia de render de servidor.
2. Arquitectura de URLs: servicios × ciudades × marcas × idiomas
Construida una malla local completa (total 99 páginas HTML):
- 9 clústeres de servicio (raíz ES) —
apertura-coches,apertura-puertas,llave-atascada,llaves-perdidas-sin-copia,duplicado-llaves-coche,duplicado-smart-key,cambio-cerradura-encendido,cerrajero-urgente-benidorm,cerrajero-coches - 12 páginas de ciudad — Benidorm, Altea, Calpe, La Nucía, Villajoyosa, Alicante + pueblos de montaña (Beniarbeig, Bolulla, Sella, Tárbena, Jalón) + zona de servicio
- 3 páginas de marcas (cluster VAG) — Audi, Volkswagen, BMW
- 5 idiomas con directorios físicos —
/(ES),/en/,/nl/slotenmaker-benidorm/(landing NL específica),/ru/,/uk/
Cada página — URL autónoma con grupo correcto de <link rel="alternate" hreflang="...">, canonical, Schema.
3. Pipeline de auto-generación multilingüe
Elemento clave sin el cual el presupuesto de 500 € no cabe.
En lugar de localización manual de 50+ páginas — un set de scripts idempotentes que desde el origen ES regeneran las versiones RU/UK, actualizan menú y enlazado, insertan Schema y bloques-componentes.
Un script aparte escanea el sitio compilado y reescribe los grupos hreflang según las versiones de idioma realmente existentes para cada página ES. Si no hay versión EN — no se añade hreflang="en" (antes el plugin WP enviaba enlaces a 404).
La idempotencia es un requisito consciente: cualquier comando se puede volver a ejecutar sin efectos secundarios. Tras editar el origen, un solo comando deja las 99 páginas en estado coherente en minutos en lugar de semanas de trabajo manual.
4. SEO técnico: fix del informe Ahrefs en una pasada
La auditoría Ahrefs de abril encontró problemas sistémicos con hreflang/canonical. Resueltos en una sola ejecución del pipeline:
- 103 páginas — hreflang reescrito según los grupos de idioma realmente existentes (5, 4 o 3 idiomas según la página)
- 301 server-side para URLs EN rotas que las reemplazaron por equivalentes ES
- HTML meta-refresh a URLs intermedias reemplazados por 301 server-side — transmisión correcta de peso SEO
- El canonical NL apunta ahora a la página NL real en lugar de a un redirect
Correcciones que manualmente en 100 páginas son semanas. Con el pipeline — minutos.
5. Contenido y SEO on-page
- Set único de plantillas de bloques (hero, servicios, proceso, FAQ, reseñas, CTA, zona de servicio, enlazado) — para crear rápido nuevas landings
- En cada página — Title / H1 / Meta / FAQ-schema / LocalBusiness-schema / 12–13 enlaces internos
- 1 089 keywords en el core semántico, 9 clústeres
- Archivo de fotos reales del trabajo (~30) vinculado a las páginas relevantes
6. Linkbuilding — solo catálogos locales
Conscientemente mínimo: alta en Google Business Profile y en varios directorios locales ES especializados (directorios de negocios, catálogos de cerrajeros). Sin guest posts, PBN, enlaces comprados. El objetivo de esta etapa — demostrar qué tráfico da una arquitectura correcta con mínimas señales externas. El linkbuilding completo es tarea de la siguiente etapa.
Resultado
GSC en 6 meses (2025-10-20 → 2026-04-21)
| Métrica | Antes (dic. 2025) | Después (abr. 2026) | Δ |
|---|---|---|---|
| Páginas en el sitio | 1 | 99 | +98 |
| Versiones de idioma con URL | 0 | 5 | +5 |
| Clics | 0–3 / día | 424 en el período, hasta 10+/día en picos | — |
| Impresiones | ~200/día dispersas | 49 400 en el período | — |
| Posición media | 25–40 | 18.2 | ~−15 |
| Páginas que reciben clics | 1 | 24 | +23 |
Top-8 páginas por clics
| URL | Clics | Impresiones | Pos. media |
|---|---|---|---|
/ (home ES) | 140 | 16 423 | 16.2 |
/llaves-perdidas-sin-copia/ | 32 | 2 082 | 21.9 |
/en/ (home EN) | 9 | 921 | 12.9 |
/duplicado-llaves-coche/ | 6 | 1 003 | 13.6 |
/llaves-volkswagen/ | 6 | 2 227 | 27.2 |
/apertura-coches/ | 5 | 739 | 22.3 |
/en/car-key-duplicate/ | 3 | 498 | 10.3 |
/cerrajero-benidorm/ | 2 | 1 711 | 23.4 |
Cambios cualitativos
- El sitio entra por primera vez en la SERP por consultas comerciales locales:
cerrajero benidorm— posición 6.5 con 2 330 impresiones,cerrajeros benidorm— posición 9.6 con 1 111 impresiones - El clúster EN funciona:
/en/— pos. 12.9,/en/car-key-duplicate/— pos. 10.3,/en/ignition-replacement/— pos. 6.8 - La landing NL
/nl/slotenmaker-benidorm/recibe impresiones porslotenmaker in de buurt— posición 3.0 - Consulta de marca
kkkey— posición 2.1 con CTR 10.6%: el sitio es reconocible en Google - Quick-wins en curso:
cerrajero benidormda 2 330 impresiones con CTR actual de 0.04% — margen para optimización manual de snippets en la siguiente etapa
Tres insights
1. La automatización multilingüe se amortiza a partir del 3.er idioma
La localización manual de una malla de 25 páginas lleva ~5–8 horas a velocidad normal. Tres idiomas — 15–25 horas. Con presupuesto de 500 € eso consume casi todo el presupuesto en una sola localización.
El pipeline Python se escribe una vez en 1–2 días, y luego genera cualquier idioma nuevo y recoge cualquier cambio del origen ES. Con 4–5 idiomas es el único enfoque realista para un negocio local.
2. Idempotencia > «código bonito»
fix_hreflang_groups.py y análogos no son los scripts más elegantes. Pero sobreviven a ejecuciones repetidas sin efectos secundarios, y eso importa más que cualquier estilo. Tras cualquier cambio en build/ se puede llevar todo el sitio a un estado coherente con un solo comando. Esto convierte la operación del sitio de «miedo a romper algo» a «aplico fix, ejecuto, verifico».
3. El negocio local no pierde por presupuesto — pierde por arquitectura
KKKEY compite con sitios que no tienen ventaja técnica alguna — pero sí tienen 30+ páginas indexables bajo distintas combinaciones geo×servicio. Una landing de una página físicamente no puede competir con eso, por muy bonita y rápida que sea. La primera tarea SEO de un negocio local es construir una arquitectura de URL correcta, no «mejorar el contenido de la home».
Stack tecnológico
Frontend: HTML estático, Schema.org (LocalBusiness, FAQPage), hreflang, canonical Build: JS/Node idempotente + pipeline Python de generación local Hosting y CDN: Cloudflare (Pages / Workers, reglas edge) Lógica de servidor: Cloudflare — 301-redirecciones, normalización de slash, routing básico Linkbuilding: Google Business Profile + catálogos locales ES (mínimo) Analítica/monitorización: Google Search Console, Ahrefs Site Audit Comunicación con clientes: WhatsApp (botón sticky en hero + sticky mobile bar)
Lo que esto aporta a los clientes
El enfoque refinado en KKKEY.es se traslada a cualquier proyecto de negocio local:
- Creación de webs — landing de una página → malla SEO completa de 50–100 páginas en estático, sin inflar el presupuesto
- SEO técnico — migraciones desde WordPress, hreflang correcto para webs multilingües, redirecciones server-side, Schema
- Multilingüe para Google — URLs físicas para cada idioma en lugar de traducciones JS que no se indexan
- Automatización Python — si el cliente tiene 50+ páginas en 3+ idiomas, la localización manual carece de sentido económico
Caso en curso — segunda etapa y linkbuilding completo por delante. El resultado actual se alcanzó con señales externas mínimas (GBP + catálogos locales ES, sin compra de enlaces) — solo con arquitectura correcta y técnica.