→ 424 clics, 49 400 impresiones en GSC en 6 meses, posición media 18.2. Linkbuilding mínimo. Presupuesto ~500 €
KKKEY — cerrajero automotriz en Benidorm

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 indexadas5 idiomas con URLs físicas
424 clics en GSC49 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étricaValor (diciembre 2025)
Páginas en el índice1
Versiones de idioma con URL0 (solo pseudo-traducción JS)
GSC: clics/día0–3
GSC: posición media25–40
Ahrefs referring domains4
Ahrefs organic keywords8
Sitemap / Schema / hreflangausentes

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étricaAntes (dic. 2025)Después (abr. 2026)Δ
Páginas en el sitio199+98
Versiones de idioma con URL05+5
Clics0–3 / día424 en el período, hasta 10+/día en picos
Impresiones~200/día dispersas49 400 en el período
Posición media25–4018.2~−15
Páginas que reciben clics124+23

Top-8 páginas por clics

URLClicsImpresionesPos. media
/ (home ES)14016 42316.2
/llaves-perdidas-sin-copia/322 08221.9
/en/ (home EN)992112.9
/duplicado-llaves-coche/61 00313.6
/llaves-volkswagen/62 22727.2
/apertura-coches/573922.3
/en/car-key-duplicate/349810.3
/cerrajero-benidorm/21 71123.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 por slotenmaker 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 benidorm da 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.

Stack: Static HTML · Cloudflare Pages · Node/Python · Schema.org · hreflang

Hablemos de tu proyecto

Trabajo desde España (Benidorm / Alicante). Reuniones presenciales posibles en un radio de 50 km. Proyectos remotos — sin límites geográficos.

Hablemos de tu proyecto