/blog/seo-tecnico-basico-para-no-tecnicos
SEO

SEO técnico explicado para quien no es técnico

D
Daniel Perramón Calonge · · 12 min de lectura

Te has encontrado con que tu página no aparece en los resultados que esperas y no sabes por qué. Lo más probable es que haya detalles técnicos que impiden que los buscadores la entiendan bien.

En este artículo te muestro, sin tecnicismos, qué puedes revisar tú mismo para que tu sitio sea más visible y rápido, y evitar los errores que suelen pasar desapercibidos.

¿Qué es el SEO técnico y por qué importa

Cuando me preguntan qué es el SEO técnico, lo describo como el conjunto de ajustes que hacen que los motores de búsqueda puedan acceder, interpretar y valorar tu web sin trabas. No se trata de contenidos ni de palabras clave, sino de la arquitectura del sitio, la forma en que se entregan los archivos, la seguridad y la manera en que el rastreador recorre las páginas. Si esos cimientos están bien, Google puede indexar todo lo que vale la pena mostrar.

Los factores más habituales que reviso son:

  • Accesibilidad del servidor (códigos de estado, redirecciones)
  • Estructura de URLs limpias y sin parámetros innecesarios
  • Archivo robots.txt y sitemap.xml correctos
  • Velocidad de carga y uso de archivos comprimidos
  • Implementación de HTTPS y certificados válidos
  • Datos estructurados que facilitan los rich snippets

Hace unos meses trabajé con un restaurante del Eixample que había lanzado su nueva carta online. El cliente había añadido una regla en robots.txt que prohibía el acceso a la carpeta /menu/, pensando que era sólo para evitar que los buscadores indexaran documentos internos. El error pasó desapercibido y, en cuestión de semanas, el tráfico orgánico cayó un 40 % porque Google ya no podía ver ni el menú ni las fotos de los platos. Sin esas páginas, el sitio perdió visibilidad en búsquedas locales como “restaurante cerca de Passeig de Gràcia”. Al corregir el archivo y volver a enviar el sitemap, el tráfico empezó a recuperarse en pocos días.

Por eso, antes de lanzar cualquier cambio, siempre realizo una auditoría técnica que verifica cada uno de esos puntos. Si detectas algún bloqueo o una configuración que no entiendes, lo mejor es pedir una revisión antes de que el problema se traduzca en pérdida de clientes. Puedes consultar más sobre cómo estructuramos nuestras auditorías en la sección auditoría SEO Barcelona.

Indexación: cómo saber si Google ve tu contenido

Cuando un cliente me pregunta si Google está viendo su sitio, lo primero que hago es comprobar la indexación. No basta con que la web esté online; si los rastreadores no pueden leerla, no aparecerá en los resultados. En mis ocho años de oficio he visto que la mayor parte de los problemas de visibilidad se originan en una indexación fallida, y suele ser cuestión de un detalle técnico que pasa desapercibido.

Para obtener información fiable utilizo la herramienta de inspección de URL de Search Console. Abro la consola, pego la dirección completa que quiero revisar y pulso “Enter”. En segundos me muestra si la URL está indexada, la fecha de la última pasada y, si hay algún error, el motivo concreto (bloqueo por robots.txt, redirección incorrecta, etc.). Si la página no está indexada, el panel ofrece la opción de solicitar la indexación manual; el proceso suele tardar unas horas, aunque a veces lleva un par de días en entornos muy competitivos.

El operador site: es la segunda arma que tengo siempre a mano, sobre todo cuando no tengo acceso a Search Console. En la barra de búsqueda de Google escribo site:midominio.com y reviso los resultados. Si la página que espero no aparece, es señal de que Google aún no la ha rastreado o la ha excluido. Con este método rápido puedo comprobar todo el dominio o centrarme en una carpeta específica. Los pasos que sigo son:

  • Escribo site:midominio.com/ruta-del-contenido.
  • Observo si la URL aparece entre los resultados.
  • Si falta, reviso el archivo robots.txt y las metaetiquetas noindex.
  • Compruebo en Search Console si hay errores de rastreo.

Un ejemplo típico lo tuve con un restaurante del Eixample que me contactó porque su menú no aparecía en Google. Revisé la consola y descubrí que la página /menu-verano.html estaba marcada con noindex por un plugin de SEO que había quedado activado tras una actualización. El cliente no se había percatado porque el menú seguía accesible desde el sitio, pero los rastreadores lo descartaban. Eliminé la etiqueta, pedí la re‑indexación y, en menos de 48 horas, la página empezó a aparecer en los resultados locales, generando más reservas sin que el dueño tuviera que invertir en publicidad.

Velocidad de carga: métricas que puedes medir

Cuando me llamas porque tu web tarda mucho en cargar, lo primero que reviso son los indicadores que Google usa para valorar la velocidad. No se trata solo de que el sitio se vea rápido para ti, sino de que el motor de búsqueda lo perciba como ágil. Un tiempo de carga elevado penaliza el posicionamiento y hace que los usuarios abandonen la página antes de leer tu contenido. Por eso, en la auditoría técnica dedico una parte a medir esas métricas con herramientas fiables.

Los cuatro indicadores que siempre controlo son:

  • First Contentful Paint (FCP): tiempo que transcurre hasta que el navegador muestra el primer elemento visual.
  • Largest Contentful Paint (LCP): medida clave de la carga percibida, indica cuándo se muestra el elemento más grande del viewport.
  • Time to Interactive (TTI): segundos que necesita la página para responder a la interacción del usuario sin retrasos.
  • Cumulative Layout Shift (CLS): evalúa la estabilidad visual, evitando que los elementos se muevan inesperadamente.

Para obtener esos datos utilizo PageSpeed Insights y GTmetrix. En PageSpeed Insights introduzco la URL, reviso la puntuación y bajo el apartado "Diagnósticos" encuentro los valores de FCP y LCP, además de recomendaciones específicas. GTmetrix me permite comparar la versión antes y después de aplicar cambios, y muestra un desglose de tiempo por recurso (imágenes, scripts, CSS). Normalmente, sigo estos pasos: 1) Analizo los resultados, 2) Identifico los recursos que más tardan, 3) Optimizo imágenes, minifico archivos y activo compresión, 4) Vuelvo a ejecutar la prueba y verifico la mejora.

Un caso reciente fue el de un restaurante del Eixample que me contrató para acelerar su sitio de reservas. La página mostraba un LCP de 5,8 s porque las fotos del menú estaban sin comprimir y pesaban más de 2 MB cada una. Reemplacé esas imágenes por versiones optimizadas con WebP, manteniendo la calidad visual. Después de la intervención, el LCP bajó a 2,4 s, el TTI cayó de 4,3 s a 1,9 s y la tasa de rebote se redujo notablemente. El cliente notó más reservas y, como siempre, le recomendé que siga revisando su velocidad cada vez que añada contenido nuevo. Si quieres profundizar en cómo un buen diseño web puede evitar este tipo de cuellos de botella, puedes visitar nuestra página de diseñador web Barcelona.

Estructura de URLs amigables

Estructura de URLs amigables

Cuando abro la consola de un proyecto nuevo en el estudio, una de las primeras cosas que reviso es cómo se han construido los enlaces internos. Me encuentro con frecuencia desastres heredados de gestores de contenido mal configurados: direcciones kilométricas llenas de identificadores numéricos, fechas que no aportan nada y parámetros que confunden tanto al usuario como a los motores de búsqueda. Una URL limpia cumple una función elemental de usabilidad y rastreo; debe permitir que cualquiera anticipe el contenido exacto de la página antes de pulsar en el enlace.

Pensemos en un caso habitual que veo por aquí: una clínica dental en Gràcia que ofrece servicios específicos de ortodoncia invisible. El gestor que tenían antes generaba automáticamente rutas del estilo: midominio.com/index.php?cat=servicios&id=842&session=xyz987. Para Google, eso es una maraña de parámetros que dificulta entender la jerarquía real del sitio web y que genera problemas de contenido duplicado. La versión correcta, optimizada y clara para ese mismo servicio es simplemente: midominio.com/ortodoncia-invisible-gracia o midominio.com/tratamientos/ortodoncia-invisible. La diferencia en legibilidad es abismal y la señal de relevancia para la búsqueda local queda perfectamente fijada.

Para mantener una arquitectura sana en tu web sin complicarte la vida con tecnicismos innecesarios, aplico siempre estos criterios básicos:

  • Elimina parámetros y variables dinámicas: evita signos de interrogación, símbolos de porcentaje o códigos de sesión en páginas que quieras posicionar.
  • Usa guiones medios para separar términos: los guiones bajos unen palabras para los rastreadores; el guion estándar actúa como espacio legible.
  • Omite palabras vacías y fechas: artículos, preposiciones como «de», «para» o «con», y años en la ruta solo alargan la dirección y te obligan a hacer redirecciones cuando actualizas el contenido más adelante.
  • Mantén la coherencia en minúsculas: mezclar mayúsculas y minúsculas en servidores Linux genera duplicidades accidentales y errores 404 que dañan el rastreo.

Ojo con un detalle importante antes de ponerte a modificar enlaces que ya están publicados: cambiar una URL sin aplicar una redirección 301 inmediata significa tirar a la basura la autoridad que esa página ya había acumulado con el tiempo. Si una dirección fea ya está bien posicionada y recibe tráfico estable, a veces compensa dejarla tranquila salvo que estemos ejecutando una migración web completa y controlada.

Datos estructurados: enriquecer los resultados

Datos estructurados: enriquecer los resultados

Cuando un cliente me pide que su sitio aparezca mejor en los resultados de búsqueda, lo primero que reviso son los datos estructurados. Los microdatos y, sobre todo, el vocabulario de schema.org, son la forma que Google y otros buscadores usan para entender de qué trata cada elemento de una página. Con ellos puedes marcar un producto, una reseña, un evento o una receta, y el motor de búsqueda los traduce en tarjetas, estrellas o bloques enriquecidos que llaman la atención del usuario. Todo ello forma parte del SEO técnico.

Yo siempre empleo JSON‑LD porque se inserta en el head sin interferir con el HTML visible. Para comprobar que todo está correcto utilizo la herramienta Rich Results Test de Google; basta con pegar la URL o el fragmento de código y la herramienta muestra si el marcado es válido y qué resultados podría generar. Si aparecen errores, los corrijo antes de pasar a producción, ya que un error pequeño puede impedir que se muestre cualquier ficha.

Un caso reciente fue el de un restaurante del Eixample que quería destacar su “Paella del día” en los resultados locales. Añadí un bloque JSON‑LD tipo Product con propiedades como name, description, image, offers (price y disponibilidad) y aggregateRating. Tras publicar el código y validar con Rich Results Test, Google empezó a mostrar una ficha destacada con la foto del plato, precio y valoración en la página de resultados. El tráfico a la página del menú subió notablemente y las reservas online aumentaron sin necesidad de invertir en campañas de pago.

Pasos básicos para implementar datos estructurados:

  • Identificar el tipo de contenido (Product, Recipe, LocalBusiness, etc.).
  • Consultar schema.org y anotar los campos obligatorios y recomendados.
  • Generar el bloque JSON‑LD respetando la sintaxis y los valores reales.
  • Insertarlo en el head o justo antes del cierre de body.
  • Validar con Rich Results Test y corregir los errores que aparezcan.

Robots.txt y sitemap: guiar al rastreador

Cuando hablamos de SEO técnico, dos archivos son los porteros de tu web ante Google: el robots.txt y el sitemap.xml. Suena a chino, lo sé, pero son fundamentales para que Google entienda qué debe rastrear y qué no.

El robots.txt es como un cartel en la entrada de tu web que le dice a los rastreadores de Google (y otros buscadores) qué partes de tu sitio pueden visitar y cuáles no. Mi experiencia me dice que muchos clientes no saben ni que existe. El problema surge cuando, sin darte cuenta, bloqueas páginas importantes. Me he encontrado con casos donde un desarrollador, quizás por despiste o por querer ocultar algo temporalmente, bloquea la carpeta de productos o de servicios. El resultado es que Google no las ve, no las indexa y, por tanto, nadie las encuentra en sus búsquedas. Para revisar el tuyo, solo tienes que escribir tudominio.com/robots.txt en el navegador. Presta especial atención a las líneas que empiezan por Disallow:. Si ves algo importante ahí, hay que quitarlo.

Luego está el sitemap.xml, que es como un mapa de carreteras de tu web para Google. No es que Google no pueda encontrar tus páginas sin él, pero se lo pones mucho más fácil, especialmente si tienes una web grande o con mucho contenido nuevo. Este archivo le dice a Google: “Oye, aquí tienes una lista de todas las páginas que considero importantes”. Es crucial que este mapa esté bien formado y actualizado. Recuerdo el caso de un restaurante en el Eixample, cliente nuestro, que lanzaba nuevas ofertas de menú cada semana con entradas de blog dedicadas. Durante meses, esas nuevas entradas no aparecían en Google. Al revisar su sitemap, vimos que el plugin que usaban para generarlo estaba configurado para incluir solo las páginas estáticas, ignorando por completo las nuevas entradas del blog. Google no las conocía y no las indexaba. Una vez corregido, las nuevas ofertas empezaron a posicionarse en cuestión de días.

¿Qué debes comprobar en tu sitemap?

  • Que esté actualizado con todas tus páginas importantes, especialmente las nuevas.
  • Que no contenga URLs que ya no existen o que redirigen.
  • Que esté limpio de páginas que no quieres que se indexen (como páginas de agradecimiento o de política interna).
  • Que esté correctamente referenciado en Google Search Console.

En mi día a día, con los proyectos que he manejado desde 2018, me doy cuenta de que estos dos archivos son a menudo los grandes olvidados. Una revisión periódica de ambos puede evitarte muchos dolores de cabeza y asegurar que el trabajo que pones en tu contenido realmente llegue a tu público.

Crawl budget y rastreo eficiente

El crawl budget o presupuesto de rastreo es, explicado de forma llana, el tiempo y los recursos que los robots de Google deciden dedicar a revisar tu web antes de marcharse a otra parte. Google no tiene tiempo infinito para mirar cada rincón de internet; asigna una atención proporcional a la autoridad de tu página y a la velocidad con la que responde tu servidor. Si tu sitio web le hace perder el tiempo procesando páginas basura o enlaces rotos, se irá antes de descubrir tus productos estrella o tus artículos más trabajados, dejando contenido importante fuera de su radar.

Esto suele convertirse en un problema silencioso cuando gestionas catálogos medianos o grandes. Me pasó hace un tiempo con una zapatería de diseño del barrio de Gràcia. Llegaron al estudio porque habían lanzado su catálogo digital pero muchas novedades tardaban semanas enteras en aparecer indexadas en los resultados. Cuando abrimos las tripas del proyecto para hacer una auditoria seo barcelona a fondo, descubrimos que los filtros de color, talla, material y ordenación de precio generaban combinaciones infinitas de URLs únicas, todas accesibles para el robot de Google. El rastreador consumía casi todo su presupuesto navegando por miles de páginas idénticas donde solo cambiaba el orden de los zapatos, ignorando las categorías principales.

Para que los rastreadores aprovechen cada visita y no malgastes este recurso técnico, solemos aplicar varias medidas directas:

  • Gestionar parámetros y facetas: bloquear mediante etiquetas canonical bien configuradas o instrucciones precisas las URLs que generan los filtros de búsqueda interna.
  • Limpiar enlaces rotos y cadenas de redirecciones: si el robot tropieza con errores 404 o cadenas con varios saltos 301, agota sus peticiones intentando llegar a un destino vacío.
  • Desindexar páginas de servicio sin valor de búsqueda: el carrito de compra, las políticas de privacidad, las confirmaciones de pedido o el acceso de usuarios deben quedar fuera del alcance de los rastreadores.

Tampoco te obsesiones si tienes una web corporativa sencilla con quince o veinte páginas; en esos casos Google suele cubrirlo todo en pocos segundos. El presupuesto de rastreo se vuelve crítico en tiendas online y portales con miles de páginas, donde un descuido en la navegación por facetas te condena a ser invisible.

HTTPS y seguridad como señal SEO

Tener un certificado SSL instalado en tu servidor ya no es un extra técnico opcional; es el estándar mínimo para existir en internet sin espantar a tus visitas. Cuando alguien entra en tu web y el navegador le planta un aviso en rojo diciendo «Sitio no seguro», la inmensa mayoría de los usuarios cierra la pestaña al instante. Google utiliza el protocolo HTTPS como un factor de posicionamiento confirmado desde hace años, pero el verdadero impacto va mucho más allá del algoritmo: si el usuario no se fía de tu página, jamás rellenará un formulario de contacto ni te llamará por teléfono.

El error más habitual con el que me topo al auditar proyectos no es la ausencia total de certificado, sino lo que llamamos contenido mixto. Ocurre cuando instalas el candado de seguridad, pero dentro de tu código sigues llamando a imágenes, tipografías o scripts mediante enlaces antiguos con «http://». Para los navegadores, esa web sigue estando comprometida, rompen el candado verde y muestran alertas de advertencia que arruinan la experiencia del usuario.

Para solucionar esto y asegurar que la migración a HTTPS sume puntos en tu visibilidad orgánica, siempre sigo estos pasos básicos:

  • Instalar un certificado SSL válido: la mayoría de hostings fiables ofrecen certificados gratuitos tipo Let's Encrypt que se renuevan solos y son más que suficientes para pymes y autónomos.
  • Forzar la redirección 301 total: cualquier petición que entre por HTTP debe redirigirse de forma permanente a su versión equivalente en HTTPS, evitando contenido duplicado.
  • Limpiar el contenido mixto en la base de datos: revisar rutas de imágenes y archivos para sustituir los protocolos viejos por llamadas relativas o seguras.
  • Actualizar la propiedad en Google Search Console: el buscador trata las versiones HTTP y HTTPS como sitios web totalmente distintos; debes verificar la versión segura para monitorizarla.

Recuerdo el caso de una clínica dental en Gràcia que llegó al estudio porque sus solicitudes de cita previa por la web habían caído en picado tras un cambio de servidor. Tenían el SSL activo, pero la mitad de las fotos del equipo cargaban por HTTP y Chrome bloqueaba la página avisando de peligro potencial. Bastó con limpiar las rutas internas y forzar las redirecciones correctas para que el navegador volviera a mostrar la conexión segura. En pocas semanas recuperaron la confianza de los pacientes de la zona, el tráfico local volvió a subir en las búsquedas y el formulario empezó a sonar a diario otra vez.

Checklist rápido para auditoría técnica

En mi día a día con pymes de Barcelona, siempre empiezo por un checklist rápido que me permite detectar los fallos más críticos antes de profundizar.

Checklist rápido para auditoría técnica

  1. Comprobar que el sitio está accesible mediante HTTP y que responde con código 200.
  2. Verificar que el archivo robots.txt existe y no bloquea páginas importantes.
  3. Asegurarse de que el sitemap.xml está actualizado y está referenciado en robots.txt.
  4. Revisar que todas las URLs usan minúsculas, sin parámetros innecesarios y terminan en slash opcional.
  5. Comprobar que cada página tiene una etiqueta única y descriptiva de menos de 70 caracteres.</li><li>Validar que los encabezados (H1‑H6) siguen una jerarquía lógica y que sólo hay un H1 por página.</li><li>Medir la velocidad de carga con PageSpeed Insights y apuntar a un tiempo total inferior a 3 segundos.</li><li>Comprobar que los recursos estáticos (imágenes, CSS, JS) están comprimidos y servidos con cache‑control adecuado.</li><li>Revisar que el sitio usa HTTPS en todas las páginas y que no hay contenido mixto.</li><li>Implementar datos estructurados tipo Schema.org para productos, reseñas o eventos según corresponda.</li></ol><p>El mes pasado auditamos el restaurante “La Bodega”, ubicado en el Eixample. Al seguir el checklist detecté que el sitio devolvía un error 404 en la página de reservas, el robots.txt bloqueaba la carpeta /menus, y el sitemap no incluía los platos del menú del día. Además, la velocidad de carga rondaba los 6 segundos porque las imágenes del interior estaban sin optimizar y el servidor entregaba los archivos CSS sin compresión. Los encabezados estaban desordenados, con dos H1 en la página principal, y faltaba HTTPS en la sección de pago, lo que provocaba advertencias de contenido mixto en el navegador. Corregir cada punto redujo el tiempo de carga a 2,5 segundos, eliminó los errores 404 y mejoró la indexación de los platos, lo que se tradujo en un aumento visible de visitas locales.</p><p>Si quieres replicar este proceso en tu negocio, te recomiendo descargar la lista y seguir cada paso antes de lanzar cualquier cambio. En nuestra página de auditoría SEO en Barcelona encontrarás plantillas y casos prácticos que facilitan el trabajo: <a href="/auditoria-seo-barcelona">auditoría SEO Barcelona</a>.</p> </section> <!-- FAQ --> <section class="bp-section bp-faq-section" id="sec-faq"> <h2>Preguntas frecuentes sobre SEO técnico explicado para quien no es técnico</h2> <div class="bp-faqs"> <div class="bp-faq-item open"> <h3 class="bp-faq-q">¿Cómo sé si mi web está indexada correctamente?</h3> <div class="bp-faq-a"><p>Puedes usar la consola de búsqueda para inspeccionar URLs individuales o buscar site:tudominio.com en Google. Si aparecen menos páginas de las que esperas, revisa robots.txt y el sitemap.</p></div> </div> <div class="bp-faq-item"> <h3 class="bp-faq-q">¿Por qué mi página tarda tanto en cargar?</h3> <div class="bp-faq-a"><p>Generalmente es por imágenes pesadas, scripts sin minificar o servidores lentos. Analiza la página con PageSpeed Insights, optimiza imágenes y habilita la compresión GZIP.</p></div> </div> <div class="bp-faq-item"> <h3 class="bp-faq-q">¿Necesito cambiar todas mis URLs para mejorar el SEO?</h3> <div class="bp-faq-a"><p>Solo las que sean muy largas, con parámetros innecesarios o sin palabras clave. Redirige las antiguas con 301 para no perder autoridad y mantén la estructura lógica.</p></div> </div> <div class="bp-faq-item"> <h3 class="bp-faq-q">¿Qué son los datos estructurados y me sirven?</h3> <div class="bp-faq-a"><p>Son fragmentos de código que indican a los buscadores el tipo de contenido (producto, reseña, evento). Añadirlos puede generar resultados enriquecidos que aumentan el CTR.</p></div> </div> <div class="bp-faq-item"> <h3 class="bp-faq-q">¿Mi sitio necesita un sitemap XML?</h3> <div class="bp-faq-a"><p>Sí, el sitemap ayuda a los rastreadores a descubrir todas tus páginas importantes. Sube el archivo a la consola de búsqueda y actualízalo cada vez que añadas contenido nuevo.</p></div> </div> <div class="bp-faq-item"> <h3 class="bp-faq-q">¿El certificado HTTPS influye en el posicionamiento?</h3> <div class="bp-faq-a"><p>Google considera la seguridad una señal de calidad, por lo que HTTPS es un factor de ranking. Además, evita advertencias de contenido mixto que afectan la experiencia del usuario.</p></div> </div> <div class="bp-faq-item"> <h3 class="bp-faq-q">¿Cuánto tiempo tarda en notarse una mejora tras arreglar un error técnico?</h3> <div class="bp-faq-a"><p>Depende de la frecuencia de rastreo de tu sitio, pero suele verse entre unos días y unas semanas después de que los buscadores vuelvan a pasar por la página corregida.</p></div> </div> </div> </section> <!-- Conclusión --> <section class="bp-conclusion" id="sec-conclusion"> <h2>SEO técnico explicado para quien no es técnico: lo esencial</h2> <p>El SEO técnico no tiene por qué ser un misterio; con las herramientas adecuadas y una revisión sistemática puedes eliminar los obstáculos que impiden que tu web alcance su potencial. Si prefieres que te acompañe en una auditoría completa o tienes alguna duda puntual, llámame al <strong>696 431 215</strong> o visita <a href="/contacto">nuestro formulario de contacto</a>.</p><p>Recuerda que cada ajuste cuenta y que un sitio bien estructurado y rápido no solo gusta a Google, sino también a tus visitantes.</p> </section> <!-- CTA --> <section class="bp-cta"> <div class="bp-cta-inner"> <h3>¿Necesitas una web profesional en Barcelona?</h3> <p>Presupuesto cerrado en 24h, sin compromiso y sin permanencia.</p> <a href="https://wa.me/34696431215" target="_blank" rel="noopener" class="bp-cta-btn">Pedir presupuesto →</a> <p style="margin-top:16px;font-size:13px;color:rgba(255,255,255,.6)">Somos tu agencia de <a href="/" style="color:#fff;text-decoration:underline">diseño web en Barcelona</a> para pymes y autónomos · <a href="/portfolio" style="color:#fff;text-decoration:underline">Ver portfolio</a></p> </div> </section> <!-- servicios-relacionados-blog (_seo_enlazado: pilar por categoria + anchors variados) --> <section style="margin:40px 0 8px;padding:28px 30px;background:#F6F8FC;border:1px solid #E5EBF5;border-radius:16px;"> <div style="font-family:'JetBrains Mono','SF Mono',monospace;font-size:12px;letter-spacing:.15em;text-transform:uppercase;color:#0066FF;font-weight:600;margin-bottom:12px;">Servicios relacionados</div> <p style="margin:0 0 6px;font-size:15px;color:#3A4A6B;line-height:1.7;">¿Te ha resultado útil? Así es como te ayudamos en WebsBarcelona: <a href="/seo" style="color:#0066FF;text-decoration:none;font-weight:600;">agencia SEO en Barcelona</a> · <a href="/seo" style="color:#0066FF;text-decoration:none;font-weight:600;">SEO completo: técnico y de contenidos</a> · <a href="/google-ads" style="color:#0066FF;text-decoration:none;font-weight:600;">Google Ads</a> · <a href="/" style="color:#0066FF;text-decoration:none;font-weight:600;">diseño web optimizado</a>.</p> </section> <aside id="eeat-author-box" style="margin:56px 0 8px;padding:28px 30px;background:#F5F8FF;border:1px solid #E5EBF5;border-radius:16px;display:flex;gap:22px;align-items:flex-start;flex-wrap:wrap;"> <div style="width:72px;height:72px;border-radius:50%;flex-shrink:0;background:linear-gradient(135deg,#0066FF 0%,#003D99 100%);display:flex;align-items:center;justify-content:center;font-family:'Playfair Display',serif;font-size:28px;font-weight:700;color:#fff;">DP</div> <div style="flex:1;min-width:240px;"> <div style="font-family:'JetBrains Mono','SF Mono',monospace;font-size:12px;letter-spacing:.15em;text-transform:uppercase;color:#0066FF;font-weight:600;margin-bottom:6px;">Sobre el autor</div> <strong style="display:block;font-size:18px;color:#0A1730;font-family:'Playfair Display',serif;">Daniel Perramón Calonge</strong> <span style="display:block;font-size:13px;color:#5A6478;margin:2px 0 12px;">Fundador de WebsBarcelona · Diseñador y desarrollador web en Barcelona</span> <p style="margin:0 0 14px;font-size:14.5px;color:#3A4A6B;line-height:1.65;">Desde 2018 he entregado proyectos para PYMES, autónomos y comercios de Barcelona y toda España. Especialista en diseño web de pago único, SEO local y Google Ads. Aquí cuento lo que de verdad funciona — o no — explicado por quien lo implementa cada día.</p> <div style="display:flex;flex-wrap:wrap;gap:16px;font-size:13.5px;"> <a href="/daniel-perramon" style="color:#0052CC;font-weight:600;text-decoration:none;display:inline-block;padding:4px 0;">Ver perfil completo →</a> <a href="https://www.linkedin.com/in/danielperramon" target="_blank" rel="noopener" style="color:#5A6478;text-decoration:none;display:inline-block;padding:4px 0;">LinkedIn</a> <a href="https://wa.me/34696431215" target="_blank" rel="noopener" style="color:#5A6478;text-decoration:none;display:inline-block;padding:4px 0;">WhatsApp</a> </div> </div> </aside> </article> </div> </section> <!-- RELATED --> <section class="bp-related"> <div class="bp-container"> <h2>Más artículos sobre seo</h2> <div class="bp-related-grid"> <a href="/blog/google-business-profile-optimizar" class="bp-related-card"> <div class="bp-related-cat">SEO</div> <h3>Cómo optimizar tu ficha de Google Business Profile</h3> <p>Aprende a optimizar tu ficha de Google Business Profile paso a paso. Descubre qué factores mueven la aguja en el mapa local y qué tareas son pura pérdida de tiempo.</p> <span class="bp-related-meta">12 min · 25 de septiembre de 2026</span> </a> <a href="/blog/recuperar-web-hackeada" class="bp-related-card"> <div class="bp-related-cat">SEO</div> <h3>Cómo <em>recuperar una web hackeada</em> paso a paso</h3> <p>Tu web ha sido hackeada: protocolo paso a paso para recuperarla, limpiar malware y blindarla. Guía 2026 honesta. Servicio express disponible.</p> <span class="bp-related-meta">11 min · 10 de abril de 2026</span> </a> <a href="/blog/mantener-web-wordpress" class="bp-related-card"> <div class="bp-related-cat">SEO</div> <h3>Cómo <em>mantener una web WordPress</em> sin romperla</h3> <p>Mantener WordPress en 2026: actualizar plugins, backups, seguridad, performance. DIY paso a paso o cuándo contratar agencia.</p> <span class="bp-related-meta">10 min · 11 de abril de 2026</span> </a> </div> </div> </section> <!-- SECTORES (interlink blog -> landings) --> <section class="bp-sectores"> <div class="bp-container"> <h2>Diseño web por sector</h2> <p>Cada negocio necesita una web distinta. Estas son algunas de las que hacemos:</p> <ul class="bp-sectores-lista"> <li><a href="/web-audifonos">Web para centros auditivos</a></li> <li><a href="/web-autonomos">Web para autónomos</a></li> <li><a href="/web-barberia">Web para barberías</a></li> <li><a href="/web-clinica">Web para clínicas</a></li> <li><a href="/sectores" class="bp-sectores-todos">Ver todos los sectores</a></li> </ul> </div> </section> </div> <script> // FAQ accordion document.querySelectorAll('.bp-faq-q').forEach(function(q){ q.addEventListener('click',function(){q.closest('.bp-faq-item').classList.toggle('open')}); }); // Progress bar window.addEventListener('scroll',function(){ var h=document.documentElement; var pct=(h.scrollTop/(h.scrollHeight-h.clientHeight))*100; var bar=document.getElementById('bpProgress'); if(bar)bar.style.width=pct+'%'; },{passive:true}); // TOC smooth scroll + active highlight document.querySelectorAll('.bp-toc a').forEach(function(a){ a.addEventListener('click',function(e){ e.preventDefault(); var target=document.querySelector(a.getAttribute('href')); if(target)target.scrollIntoView({behavior:'smooth',block:'start'}); }); }); // TOC active on scroll (function(){ var sections=document.querySelectorAll('.bp-article section[id]'); var tocLinks=document.querySelectorAll('.bp-toc a'); if(!sections.length||!tocLinks.length)return; window.addEventListener('scroll',function(){ var scrollY=window.scrollY+120; var current=''; sections.forEach(function(s){if(s.offsetTop<=scrollY)current=s.id}); tocLinks.forEach(function(a){ a.classList.toggle('active',a.getAttribute('href')==='#'+current); }); },{passive:true}); })(); </script> </main> <!-- ═══ CTA GLOBAL WHATSAPP (todas las páginas) ═══ --> <section class="wb-cta-wrap"> <style> .wb-cta-wrap{background:radial-gradient(120% 150% at 50% 0%,#0e1a33 0%,#080f20 58%,#0A0A0A 100%);padding:74px 24px} .wb-cta{max-width:1080px;margin:0 auto;display:flex;align-items:center;justify-content:space-between;gap:30px;flex-wrap:wrap;background:#fff;border-radius:24px;padding:34px 46px;box-shadow:0 34px 80px -26px rgba(0,0,0,.6);font-family:Inter,-apple-system,sans-serif} .wb-cta-left{flex:1;min-width:260px} .wb-cta-title{font-family:'Playfair Display',serif;font-size:clamp(22px,2.3vw,30px);font-weight:700;color:#0A0E1A;line-height:1.14;letter-spacing:-.6px;margin:0 0 8px} .wb-cta-sub{font-size:15.5px;color:#5B6576;line-height:1.5;margin:0;font-weight:500} .wb-cta-btn{display:inline-flex;align-items:center;gap:11px;background:#0066FF;color:#fff;font-weight:700;font-size:16px;padding:18px 34px;border-radius:14px;text-decoration:none;transition:all .25s;box-shadow:0 14px 34px rgba(0,102,255,.36);white-space:nowrap} .wb-cta-btn:hover{background:#0052cc;transform:translateY(-2px);box-shadow:0 18px 44px rgba(0,102,255,.48)} .wb-cta-btn svg{width:21px;height:21px} @media(max-width:760px){.wb-cta{padding:28px 26px;gap:20px;flex-direction:column;align-items:flex-start}.wb-cta-btn{width:100%;justify-content:center}.wb-cta-wrap{padding:50px 16px}} </style> <div class="wb-cta"> <div class="wb-cta-left"> <p class="wb-cta-title">¿Hablamos de tu proyecto?</p> <p class="wb-cta-sub">Presupuesto cerrado en 24 h · sin compromiso</p> </div> <a href="https://wa.me/34696431215?text=Hola,%20quiero%20pedir%20un%20presupuesto%20para%20mi%20web" target="_blank" rel="noopener" class="wb-cta-btn"> <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M21 11.5a8.38 8.38 0 0 1-.9 3.8 8.5 8.5 0 0 1-7.6 4.7 8.38 8.38 0 0 1-3.8-.9L3 21l1.9-5.7a8.38 8.38 0 0 1-.9-3.8 8.5 8.5 0 0 1 4.7-7.6 8.38 8.38 0 0 1 3.8-.9h.5a8.48 8.48 0 0 1 8 8v.5z"/></svg> Pedir presupuesto </a> </div> </section> <!-- FOOTER --> <footer style="background:#0A1730;padding:60px 0 40px;color:rgba(255,255,255,0.85)"> <div class="container" style="max-width:1280px;margin:0 auto"> <!-- marca + contacto --> <div style="margin-bottom:8px"> <div> <div style="font-size:20px;font-weight:800;color:#fff;margin-bottom:8px">Webs<span style="color:#0066FF">Barcelona</span></div> <p style="font-size:13px;color:rgba(255,255,255,0.65);line-height:1.6;max-width:240px">Agencia de crecimiento digital. Diseño web, SEO, Google Ads y redes sociales.</p> <div style="margin-top:18px;font-size:13px;display:flex;flex-direction:column;gap:6px"><a href="mailto:info@websbarcelona.com" style="color:rgba(255,255,255,0.78);text-decoration:none;word-break:break-all">info@websbarcelona.com</a><a href="tel:+34696431215" style="color:rgba(255,255,255,0.78);text-decoration:none">696 431 215</a><span style="color:rgba(255,255,255,0.6)">Barcelona, España</span><span style="color:rgba(255,255,255,0.6)">Lunes a domingo, 9:00–21:00</span></div> </div> </div> <!-- ░░ NAV CURADA (mega) ░░ --> <div style="display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:36px 30px;margin-bottom:46px;"> <div><p class="foot-col-t" style="font-family:'Playfair Display',serif;font-size:15px;letter-spacing:-.2px;margin:0 0 16px;color:#fff;border-bottom:1px solid rgba(255,255,255,.12);padding-bottom:10px;font-weight:700;">Servicios</p><ul style="list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:8px;font-size:13px;"><li><a href="/" style="color:#A8B2C7;text-decoration:none;">Diseño web Barcelona</a></li><li><a href="/" style="color:#A8B2C7;text-decoration:none;">Páginas web Barcelona</a></li><li><a href="/" style="color:#A8B2C7;text-decoration:none;">Agencia web Barcelona</a></li><li><a href="/disenador-web-barcelona" style="color:#A8B2C7;text-decoration:none;">Diseñador web</a></li><li><a href="/diseno-web-wordpress" style="color:#A8B2C7;text-decoration:none;">Diseño web WordPress</a></li><li><a href="/tienda-online" style="color:#A8B2C7;text-decoration:none;">Tienda online</a></li><li><a href="/landing-page" style="color:#A8B2C7;text-decoration:none;">Landing page</a></li><li><a href="/pagina-web-barata" style="color:#A8B2C7;text-decoration:none;">Página web barata</a></li><li><a href="/web-corporativa" style="color:#A8B2C7;text-decoration:none;">Web corporativa</a></li><li><a href="/desarrollo-web-barcelona" style="color:#A8B2C7;text-decoration:none;">Desarrollo web</a></li><li><a href="/mantenimiento-web" style="color:#A8B2C7;text-decoration:none;">Mantenimiento web</a></li></ul></div> <div><p class="foot-col-t" style="font-family:'Playfair Display',serif;font-size:15px;letter-spacing:-.2px;margin:0 0 16px;color:#fff;border-bottom:1px solid rgba(255,255,255,.12);padding-bottom:10px;font-weight:700;">SEO y Marketing</p><ul style="list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:8px;font-size:13px;"><li><a href="/seo" style="color:#A8B2C7;text-decoration:none;">SEO</a></li><li><a href="/seo-basico" style="color:#A8B2C7;text-decoration:none;">SEO Local Barcelona</a></li><li><a href="/google-ads" style="color:#A8B2C7;text-decoration:none;">Google Ads</a></li><li><a href="/redes-sociales" style="color:#A8B2C7;text-decoration:none;">Redes Sociales</a></li></ul></div> <div><p class="foot-col-t" style="font-family:'Playfair Display',serif;font-size:15px;letter-spacing:-.2px;margin:0 0 16px;color:#fff;border-bottom:1px solid rgba(255,255,255,.12);padding-bottom:10px;font-weight:700;">Explora</p><ul style="list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:8px;font-size:13px;"><li><a href="/sectores" style="color:#A8B2C7;text-decoration:none;">Ver todos los sectores</a></li><li><a href="/ubicaciones" style="color:#A8B2C7;text-decoration:none;">Ubicaciones donde trabajamos</a></li><li><a href="/portfolio" style="color:#A8B2C7;text-decoration:none;">Portfolio</a></li><li><a href="/comparativas" style="color:#A8B2C7;text-decoration:none;">Comparativas</a></li><li><a href="/cuanto-cuesta-una-pagina-web-barcelona" style="color:#A8B2C7;text-decoration:none;">Cuánto cuesta una web</a></li><li><a href="/disenador-web-barcelona" style="color:#A8B2C7;text-decoration:none;">Diseñadores web Barcelona</a></li><li><a href="/blog" style="color:#A8B2C7;text-decoration:none;">Blog</a></li></ul></div> <div><p class="foot-col-t" style="font-family:'Playfair Display',serif;font-size:15px;letter-spacing:-.2px;margin:0 0 16px;color:#fff;border-bottom:1px solid rgba(255,255,255,.12);padding-bottom:10px;font-weight:700;">Recursos</p><ul style="list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:8px;font-size:13px;"><li><a href="/quiz-que-web-necesitas" style="color:#A8B2C7;text-decoration:none;">Quiz: ¿qué web necesitas?</a></li><li><a href="/calculadora-precio-web" style="color:#A8B2C7;text-decoration:none;">Calculadora precio web</a></li><li><a href="/calculadora-roi-web" style="color:#A8B2C7;text-decoration:none;">Calculadora ROI web</a></li><li><a href="/glosario" style="color:#A8B2C7;text-decoration:none;">Glosario SEO + web</a></li><li><a href="/descargar-checklist-seo" style="color:#A8B2C7;text-decoration:none;">Checklist SEO (PDF)</a></li></ul></div> <div><p class="foot-col-t" style="font-family:'Playfair Display',serif;font-size:15px;letter-spacing:-.2px;margin:0 0 16px;color:#fff;border-bottom:1px solid rgba(255,255,255,.12);padding-bottom:10px;font-weight:700;">Empresa</p><ul style="list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:8px;font-size:13px;"><li><a href="/clientes" style="color:#A8B2C7;text-decoration:none;">Clientes</a></li><li><a href="/sobre-nosotros" style="color:#A8B2C7;text-decoration:none;">Sobre nosotros</a></li><li><a href="/contacto" style="color:#A8B2C7;text-decoration:none;">Contacto</a></li><li><a href="/aviso-legal" style="color:#A8B2C7;text-decoration:none;">Aviso legal</a></li><li><a href="/politica-privacidad" style="color:#A8B2C7;text-decoration:none;">Privacidad</a></li><li><a href="/politica-cookies" style="color:#A8B2C7;text-decoration:none;">Cookies</a></li><li><a href="/condiciones-contratacion" style="color:#A8B2C7;text-decoration:none;">Condiciones</a></li><li><a href="#" onclick="if(window.wbCookies){wbCookies.open()}return false;" style="color:#A8B2C7;text-decoration:none;">Configuración de cookies</a></li><li><a href="/declaracion-accesibilidad" style="color:#A8B2C7;text-decoration:none;">Accesibilidad</a></li></ul></div> </div> <!-- ░░ Enlaces SEO consolidados en /sectores y /ubicaciones ░░ --> <div style="margin-top:8px"> <div style="margin-top:40px;padding-top:28px;border-top:1px solid rgba(255,255,255,.06);display:flex;flex-wrap:wrap;gap:14px 26px;font-size:13px"> <a href="/sectores" style="color:#7AB6FF;text-decoration:none;font-weight:600">→ Webs por sector</a> <a href="/ubicaciones" style="color:#7AB6FF;text-decoration:none;font-weight:600">→ Ubicaciones donde trabajamos</a> <a href="/comparativas" style="color:#A8B2C7;text-decoration:none">Comparativas</a> <a href="/preguntas-frecuentes" style="color:#A8B2C7;text-decoration:none">Preguntas frecuentes</a> <a href="/cuanto-cuesta-una-pagina-web-barcelona" style="color:#A8B2C7;text-decoration:none">Presupuesto web</a> <a href="/servicios" style="color:#7AB6FF;text-decoration:none;font-weight:600">→ Todos los servicios</a> <a href="/recursos" style="color:#7AB6FF;text-decoration:none;font-weight:600">→ Recursos gratis</a> <a href="/casos-de-estudio" style="color:#A8B2C7;text-decoration:none">Casos de estudio</a> <a href="/nuestro-metodo" style="color:#A8B2C7;text-decoration:none">Nuestro método</a> <a href="/por-que-elegir-websbarcelona" style="color:#A8B2C7;text-decoration:none">Por qué elegirnos</a> </div> <!-- I18N_FOOTER_BLOCK --><!-- enlaces profundos /en/* retirados (paginas sin indexar; drenaban autoridad). Selector de idioma abajo. --><!-- /I18N_FOOTER_BLOCK --> </div> <!-- idiomas + copyright --> <div style="border-top:1px solid rgba(255,255,255,.12);padding-top:24px;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:16px;font-size:12.5px;color:#A8B2C7;"> <div style="display:flex;flex-wrap:wrap;gap:14px;"> <a href="/" style="color:#A8B2C7;text-decoration:none;font-weight:600;">🇪🇸 Español</a> </div> <div>© 2026 WebsBarcelona · <a href="tel:+34696431215" style="color:#A8B2C7;text-decoration:none;">+34 696 431 215</a> · <a href="mailto:info@websbarcelona.com" style="color:#A8B2C7;text-decoration:none;">info@websbarcelona.com</a></div> </div> <div id="eeat-social-row" style="display:flex;flex-wrap:wrap;align-items:center;gap:20px;padding:14px 0;border-top:1px solid rgba(255,255,255,.10);margin-top:6px;font-size:13px;"><a href="https://www.google.com/maps?cid=8602515873524633221" target="_blank" rel="noopener" aria-label="5,0 · 51 reseñas en Google" style="color:#fff;text-decoration:none;display:inline-flex;align-items:center;gap:7px;font-weight:600;"><span style="color:#FFB800;letter-spacing:1px;">★★★★★</span> 5,0 · 51 reseñas en Google</a><a href="https://www.linkedin.com/in/danielperramon" target="_blank" rel="noopener" style="color:#A8B2C7;text-decoration:none;">LinkedIn</a><a href="https://www.instagram.com/websbarcelona" target="_blank" rel="noopener" style="color:#A8B2C7;text-decoration:none;">Instagram</a><a href="/daniel-perramon" style="color:#A8B2C7;text-decoration:none;">Quién está detrás →</a></div> <div style="padding-top:14px;font-size:12.5px;color:#8C97AD;line-height:1.6;">WEBSBARCELONA · NIF 48096283V · Epígrafe IAE 763 · Carrer de Mallorca, 538, 08026 Barcelona, España · <a href="/aviso-legal" style="color:#7C879E;text-decoration:none;">Aviso legal</a> · <a href="/politica-privacidad" style="color:#7C879E;text-decoration:none;">Privacidad</a> · <a href="/politica-cookies" style="color:#7C879E;text-decoration:none;">Cookies</a> · <a href="/declaracion-accesibilidad" style="color:#7C879E;text-decoration:none;">Accesibilidad</a></div> </div> <style> .ftseo-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(178px,1fr));gap:12px 28px;font-size:12.5px;line-height:1.7} .ftseo-grid a{color:rgba(255,255,255,.55)!important;text-decoration:none;transition:color .2s ease,transform .2s ease} .ftseo-grid a:hover{color:#7AB6FF!important;transform:translateX(3px)} @media(max-width:980px){.ftseo-grid{grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px 20px}} @media(max-width:560px){.ftseo-grid{grid-template-columns:1fr 1fr}} </style> <style>.mf-wrap a:hover{color:#fff !important;text-decoration:underline !important;}</style> </footer> <script> window.addEventListener('scroll',function(){document.getElementById('mainNav').classList.toggle('scrolled',window.scrollY>20)},{passive:true}); (function(){ var toggle=document.getElementById('menuToggle'),mob=document.getElementById('navMobile'),overlay=document.getElementById('mobileOverlay'); if(!toggle||!mob)return; function openM(){mob.classList.add('open');toggle.classList.add('active');if(overlay)overlay.classList.add('show');document.body.style.overflow='hidden'} function closeM(){mob.classList.remove('open');toggle.classList.remove('active');if(overlay)overlay.classList.remove('show');document.body.style.overflow=''} toggle.addEventListener('click',function(){mob.classList.contains('open')?closeM():openM()}); if(overlay)overlay.addEventListener('click',closeM); document.querySelectorAll('.mob-toggle').forEach(function(btn){ btn.addEventListener('click',function(e){ e.preventDefault(); var target=document.getElementById(this.dataset.target); var isOpen=target.classList.contains('open'); document.querySelectorAll('.mob-sub').forEach(function(s){s.classList.remove('open')}); document.querySelectorAll('.mob-toggle .chev').forEach(function(c){c.style.transform=''}); if(!isOpen){target.classList.add('open');var c=this.querySelector('.chev');if(c)c.style.transform='rotate(180deg)'} }); }); mob.querySelectorAll('a:not(.mob-toggle)').forEach(function(a){a.addEventListener('click',closeM)}); })(); document.addEventListener('click',function(e){var q=e.target.closest('.faq-q');if(q)q.parentElement.classList.toggle('open')}); </script> <!-- MOBILE_BOTTOM_NAV --> <nav class="mbnav" aria-label="Navegacion movil"> <a href="/" class="mbnav-item"> <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M3 9.5 12 3l9 6.5V21a1 1 0 0 1-1 1h-5v-6H9v6H4a1 1 0 0 1-1-1z"/></svg> <span>Inicio</span> </a> <a href="/sobre-nosotros" class="mbnav-item"> <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M17 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2"/><circle cx="9" cy="7" r="4"/><path d="M23 21v-2a4 4 0 0 0-3-3.87"/><path d="M16 3.13a4 4 0 0 1 0 7.75"/></svg> <span>Nosotros</span> </a> <a href="tel:+34696431215" class="mbnav-item mbnav-call"> <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72c.13.96.36 1.9.7 2.81a2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45c.91.34 1.85.57 2.81.7A2 2 0 0 1 22 16.92z"/></svg> <span>Llamar</span> </a> <a href="https://wa.me/34696431215" target="_blank" rel="noopener" class="mbnav-item"> <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="2" y="4" width="20" height="16" rx="2"/><path d="m22 7-10 5L2 7"/></svg> <span>Contacto</span> </a> </nav> <style> .mbnav{display:none} @media(max-width:768px){ .mbnav{display:flex;position:fixed;bottom:0;left:0;right:0;z-index:9998;background:#fff;border-top:1px solid #EAEEF5;box-shadow:0 -4px 24px rgba(10,23,48,.08);padding:7px 2px;padding-bottom:calc(7px + env(safe-area-inset-bottom));justify-content:space-around;align-items:center} .mbnav-item{flex:1;display:flex;flex-direction:column;align-items:center;gap:3px;text-decoration:none;color:#5B6576;font-size:12px;font-weight:600;letter-spacing:.2px;padding:2px 0;transition:color .2s} .mbnav-item svg{width:23px;height:23px} .mbnav-item.active{color:#0066FF} .mbnav-item:active{color:#0066FF} .mbnav-call{color:#0066FF} body{padding-bottom:66px!important} #waBtn{bottom:82px!important} } </style> <style> /* 29-sep · auditoría: migas con área táctil de 24px y código largo que no desborda en móvil */ .bp-breadcrumb a,[class*="breadcrumb"] a,nav[aria-label*="igas"] a{display:inline-block;padding:4px 0} main code,article code{overflow-wrap:anywhere;word-break:break-word} main pre{max-width:100%;overflow-x:auto} /* barra flotante de las landings: no más ancha que la pantalla y por encima de la barra inferior */ @media(max-width:640px){ .lnd-stickycta{min-width:0;overflow:hidden} .lnd-stickycta-txt{min-width:0;flex:1 1 auto;overflow:hidden;text-overflow:ellipsis;white-space:nowrap} .lnd-stickycta a{width:auto!important;flex:0 0 auto} } @media(max-width:768px){.lnd-stickycta{bottom:calc(78px + env(safe-area-inset-bottom))!important}} /* formulario de presupuesto de las landings: las columnas del grid pueden encoger */ .lnd-quote>*,.lnd-form-row>*{min-width:0} .lnd-form-field input,.lnd-form-field select,.lnd-form-field textarea{min-width:0;width:100%;box-sizing:border-box} @media(max-width:560px){.lnd-form-row{grid-template-columns:1fr!important}.lnd-quote-card{padding:28px 20px!important}} </style> <!-- /MOBILE_BOTTOM_NAV --> <!-- WHATSAPP_FLOAT --> <a id="waBtn" href="https://wa.me/34696431215?text=Hola+Daniel%2C+vengo+de+websbarcelona.com" target="_blank" aria-label="Contactar por WhatsApp" style="position:fixed;bottom:24px;right:24px;background:#0F7A40;color:#fff;width:60px;height:60px;min-width:56px;min-height:56px;border-radius:50%;display:flex;align-items:center;justify-content:center;box-shadow:0 10px 30px rgba(0,0,0,.25);z-index:9999;text-decoration:none;transition:all .3s;"> <svg viewBox="0 0 24 24" fill="currentColor" width="32" height="32"><path d="M17.472 14.382c-.297-.149-1.758-.867-2.03-.967-.273-.099-.471-.148-.67.15-.197.297-.767.966-.94 1.164-.173.199-.347.223-.644.075-.297-.15-1.255-.463-2.39-1.475-.883-.788-1.48-1.761-1.653-2.059-.173-.297-.018-.458.13-.606.134-.133.298-.347.446-.52.149-.174.198-.298.298-.497.099-.198.05-.371-.025-.52-.075-.149-.669-1.612-.916-2.207-.242-.579-.487-.5-.669-.51-.173-.008-.371-.01-.57-.01-.198 0-.52.074-.792.372-.272.297-1.04 1.016-1.04 2.479 0 1.462 1.065 2.875 1.213 3.074.149.198 2.096 3.2 5.077 4.487.709.306 1.262.489 1.694.625.712.227 1.36.195 1.871.118.571-.085 1.758-.719 2.006-1.413.248-.694.248-1.289.173-1.413-.074-.124-.272-.198-.57-.347m-5.421 7.403h-.004a9.87 9.87 0 01-5.031-1.378l-.361-.214-3.741.982.998-3.648-.235-.374a9.86 9.86 0 01-1.51-5.26c.001-5.45 4.436-9.884 9.888-9.884 2.64 0 5.122 1.03 6.988 2.898a9.825 9.825 0 012.893 6.994c-.003 5.45-4.437 9.884-9.885 9.884m8.413-18.297A11.815 11.815 0 0012.05 0C5.495 0 .16 5.335.157 11.892c0 2.096.547 4.142 1.588 5.945L.057 24l6.305-1.654a11.882 11.882 0 005.683 1.448h.005c6.554 0 11.89-5.335 11.893-11.893a11.821 11.821 0 00-3.48-8.413Z"/></svg> </a> <style> #waBtn:hover{transform:scale(1.1);box-shadow:0 14px 40px rgba(0,0,0,.35)} @keyframes waPulse{0%{box-shadow:0 0 0 0 rgba(37,211,102,.7)}70%{box-shadow:0 0 0 14px rgba(37,211,102,0)}100%{box-shadow:0 0 0 0 rgba(37,211,102,0)}} #waBtn::after{content:"";position:absolute;inset:0;border-radius:50%;animation:waPulse 2s infinite} @media(max-width:600px){ #waBtn{width:56px;height:56px;bottom:16px;right:16px}#waBtn svg{width:28px;height:28px}} </style> <script> (function(){ var path = window.location.pathname; var btn = document.getElementById('waBtn'); if(!btn) return; var msg = "Hola Daniel, vengo de "; if(path === '/'){ msg += "la home de websbarcelona.com"; } else if(path.indexOf('/web-') === 0){ msg += "tu landing " + path; } else if(path.indexOf('/blog/') === 0){ msg += "el post " + path; } else { msg += "websbarcelona.com" + path; } msg += ". Me interesa un presupuesto."; btn.href = "https://wa.me/34696431215?text=" + encodeURIComponent(msg); })(); </script> <!-- /WHATSAPP_FLOAT --> <!-- EXIT_INTENT_POPUP --> <div id="exitPopup" style="display:none;position:fixed;inset:0;background:rgba(10,23,48,.75);z-index:99999;align-items:center;justify-content:center;padding:20px;"> <div style="background:#fff;border-radius:18px;padding:48px 40px;max-width:480px;text-align:center;position:relative;box-shadow:0 30px 80px rgba(0,0,0,.3);"> <button onclick="document.getElementById('exitPopup').style.display='none';try{localStorage.setItem('exitDismissed','1');}catch(e){}" aria-label="Cerrar ventana" style="position:absolute;top:14px;right:18px;background:none;border:none;font-size:24px;cursor:pointer;color:#64748B;">×</button> <div style="font-size:48px;margin-bottom:18px;">👋</div> <h3 style="font-size:24px;color:#0A1730;margin-bottom:14px;font-family:'Playfair Display',serif;">¿Te vas sin presupuesto?</h3> <p style="font-size:15px;color:#3A4A6B;line-height:1.6;margin-bottom:24px;">Te enviamos <strong>auditoría gratis</strong> de tu web actual + <strong>presupuesto cerrado en 24h</strong>. Solo necesitamos tu email.</p> <form id="exitForm" action="/exit-submit" method="POST" style="display:flex;gap:8px;flex-direction:column;"> <input name="email" type="email" required autocomplete="email" aria-label="Tu email" placeholder="Tu email" style="padding:14px 18px;border:1px solid #E5EBF5;border-radius:10px;font-size:15px;width:100%;margin-bottom:8px;"> <input name="telefono" type="tel" required autocomplete="tel" aria-label="Tu teléfono" placeholder="Tu teléfono (te llamamos)" style="padding:14px 18px;border:1px solid #E5EBF5;border-radius:10px;font-size:15px;width:100%;"> <input name="source" type="hidden" id="exitSource" value=""> <label class="wb-consent" style="flex:1 0 100%;width:100%;box-sizing:border-box;display:flex;gap:8px;align-items:flex-start;font-size:12.5px;line-height:1.5;color:#64748B;margin:12px 0 14px;text-align:left"><input type="checkbox" name="acepto_privacidad" value="1" required style="margin-top:3px;flex-shrink:0;width:16px;height:16px"><span>He leído y acepto la <a href="/politica-privacidad" target="_blank" style="color:inherit;text-decoration:underline">Política de Privacidad</a> y el tratamiento de mis datos para gestionar mi solicitud.</span></label> <button type="submit" aria-label="Enviar formulario de auditoría gratis" style="background:#0066FF;color:#fff;border:none;padding:14px 22px;border-radius:10px;font-weight:700;font-size:15px;cursor:pointer;">Sí, quiero la auditoría gratis</button> </form> <p style="font-size:11px;color:#64748B;margin-top:14px;">Sin compromiso. Respondemos en 24h.</p> </div> </div> <script> (function(){ var KEY='exitDismissed'; function dismissed(){ try{ return localStorage.getItem(KEY)==='1'; }catch(e){ return false; } } function markDismissed(){ try{ localStorage.setItem(KEY,'1'); }catch(e){} } if(dismissed()) return; document.addEventListener('mouseout', function(e){ if(dismissed()) return; if(e.toElement === null && e.relatedTarget === null && e.clientY <= 0){ var p = document.getElementById('exitPopup'); p.style.display = 'flex'; document.getElementById('exitSource').value = window.location.pathname; markDismissed(); } }); // Al enviar el formulario tambien se marca como descartado var f = document.getElementById('exitForm'); if(f){ f.addEventListener('submit', markDismissed); } })(); </script> <!-- /EXIT_INTENT_POPUP --> <script> // Render lucide icons globally (defensive) window.addEventListener("load",function(){ try{ if(window.lucide && lucide.createIcons) lucide.createIcons(); }catch(e){} }); document.addEventListener("DOMContentLoaded",function(){ try{ if(window.lucide && lucide.createIcons) lucide.createIcons(); }catch(e){} }); </script> <script>if('serviceWorker' in navigator){navigator.serviceWorker.register('/sw.js',{scope:'/'}).catch(function(){});}</script> <script> /* Reveal safety-net: garantiza que elementos *-rev visibles al cargar se muestren y que cualquier *-rev quede revelado tras 2.5s aunque el IntersectionObserver no dispare. */ (function(){ function revealNow(forceAll){ var els = document.querySelectorAll("[class*=-rev]"); var vh = window.innerHeight || 800; els.forEach(function(el){ var cls = (el.className && el.className.baseVal !== undefined) ? el.className.baseVal : el.className; if(typeof cls !== "string") return; var hasRev = cls.split(/\s+/).some(function(c){ return /-rev$/.test(c); }); if(!hasRev) return; if(forceAll){ el.classList.add("in"); return; } var r = el.getBoundingClientRect(); if(r.top < vh * 1.2) el.classList.add("in"); }); } function init(){ revealNow(false); setTimeout(function(){ revealNow(false); }, 250); setTimeout(function(){ revealNow(true); }, 2500); } if(document.readyState === "complete" || document.readyState === "interactive"){ init(); } else { document.addEventListener("DOMContentLoaded", init); } window.addEventListener("load", function(){ revealNow(false); }); })(); </script> <!-- wb-cookie-banner — CMP conforme Guía AEPD --> <style> #wbcc{position:fixed;left:16px;right:16px;bottom:16px;z-index:99999;max-width:460px;background:#fff;color:#0A1730;border-radius:14px;box-shadow:0 12px 40px rgba(10,23,48,.22);padding:22px 22px 18px;font-family:Inter,-apple-system,sans-serif;line-height:1.55;display:block} html.wbcc-ok #wbcc,#wbcc.hide{display:none} #wbcc .wbcc-h{margin:0 0 8px;font-size:16px;font-weight:700;color:#0A1730} #wbcc .wbcc-short{display:none} #wbcc p{margin:0 0 14px;font-size:13.5px;color:#475569} #wbcc a{color:#0066FF;text-decoration:underline} #wbcc .wbcc-btns{display:flex;flex-wrap:wrap;gap:10px} #wbcc button{border:none;border-radius:8px;padding:11px 16px;font-size:14px;font-weight:600;cursor:pointer;font-family:inherit} #wbcc .wbcc-accept{background:#0066FF;color:#fff;flex:1;min-width:120px} #wbcc .wbcc-reject{background:#EEF2F8;color:#0A1730;flex:1;min-width:120px} #wbcc .wbcc-config{background:transparent;color:#0066FF;text-decoration:underline;padding:8px 4px} #wbcc .wbcc-panel{display:none;margin:6px 0 14px;border-top:1px solid #EEF2F8;padding-top:12px} #wbcc .wbcc-panel.show{display:block} #wbcc .wbcc-row{display:flex;align-items:flex-start;gap:10px;margin-bottom:10px;font-size:13px} #wbcc .wbcc-row input{margin-top:3px} #wbcc .wbcc-row .wbcc-t{font-weight:600} #wbcc .wbcc-row .wbcc-d{color:#64748B;font-size:12.5px} /* A-9 23-sep-2026: en móvil, compacto para no tapar el CTA del héroe ni ser el elemento LCP */ @media(max-width:520px){ #wbcc{left:8px;right:8px;bottom:8px;padding:12px 14px 10px;border-radius:12px} #wbcc .wbcc-h{display:none} #wbcc p{font-size:12.5px;margin:0 0 10px;line-height:1.45} #wbcc .wbcc-long{display:none} #wbcc .wbcc-short{display:inline} #wbcc .wbcc-btns{gap:8px} #wbcc button{padding:10px 12px;font-size:13.5px;min-width:0} #wbcc .wbcc-cfgwrap{margin-top:2px!important} #wbcc .wbcc-config{padding:6px 4px;font-size:12.5px}} /* [H2-AUDIT] las preguntas de FAQ son h3: reset para que la etiqueta no cambie el diseño. El texto y el estilo son los mismos que cuando eran div. */ h3[class$="faq-q"],h3[class*="faq-q "]{margin:0;font-family:inherit;line-height:inherit} </style> <script>try{if(/(?:^|; )wb_cookie_consent=/.test(document.cookie))document.documentElement.classList.add('wbcc-ok')}catch(e){}</script> <div id="wbcc" role="dialog" aria-live="polite" aria-label="Aviso de cookies"> <p class="wbcc-h">🍪 Usamos cookies</p> <p><span class="wbcc-long">Utilizamos cookies propias técnicas y cookies de terceros (Google Analytics y Google Ads) para analizar la navegación y medir nuestras campañas. Puedes aceptarlas todas, rechazarlas o configurarlas. Más información en la <a href="/politica-cookies">Política de Cookies</a>.</span><span class="wbcc-short">Usamos cookies propias y de Google (Analytics y Ads) para medir la web y las campañas. <a href="/politica-cookies">Más información</a>.</span></p> <div class="wbcc-panel" id="wbccPanel"> <label class="wbcc-row"><input type="checkbox" checked disabled><span><span class="wbcc-t">Necesarias</span><br><span class="wbcc-d">Imprescindibles para el funcionamiento del sitio. Siempre activas.</span></span></label> <label class="wbcc-row"><input type="checkbox" id="wbccAn"><span><span class="wbcc-t">Analíticas</span><br><span class="wbcc-d">Google Analytics 4. Uso estadístico y anónimo de la web.</span></span></label> <label class="wbcc-row"><input type="checkbox" id="wbccMk"><span><span class="wbcc-t">Marketing</span><br><span class="wbcc-d">Google Ads. Medición de anuncios y remarketing.</span></span></label> </div> <div class="wbcc-btns"> <button class="wbcc-accept" onclick="wbCookies.acceptAll()">Aceptar todas</button> <button class="wbcc-reject" onclick="wbCookies.rejectAll()">Rechazar todas</button> </div> <div class="wbcc-cfgwrap" style="text-align:center;margin-top:6px"><button class="wbcc-config" onclick="wbCookies.toggle()">Configurar / Guardar preferencias</button></div> </div> <script> window.wbCookies=(function(){ function save(c){var v=encodeURIComponent(JSON.stringify(c));var d=new Date();d.setTime(d.getTime()+31536000000);document.cookie='wb_cookie_consent='+v+';expires='+d.toUTCString()+';path=/;SameSite=Lax';apply(c);hide();} function apply(c){if(typeof gtag==='function'){gtag('consent','update',{'analytics_storage':c.analytics?'granted':'denied','ad_storage':c.marketing?'granted':'denied','ad_user_data':c.marketing?'granted':'denied','ad_personalization':c.marketing?'granted':'denied'});}} function show(){document.documentElement.classList.remove('wbcc-ok');var e=document.getElementById('wbcc');if(e)e.classList.remove('hide');} function hide(){var e=document.getElementById('wbcc');if(e)e.classList.add('hide');} function has(){return /(?:^|; )wb_cookie_consent=/.test(document.cookie);} return { acceptAll:function(){save({analytics:true,marketing:true});}, rejectAll:function(){save({analytics:false,marketing:false});}, toggle:function(){var p=document.getElementById('wbccPanel');if(p.classList.contains('show')){save({analytics:document.getElementById('wbccAn').checked,marketing:document.getElementById('wbccMk').checked});}else{p.classList.add('show');}}, open:function(){var p=document.getElementById('wbccPanel');if(p)p.classList.add('show');show();}, init:function(){if(has())hide();} }; })(); document.addEventListener('DOMContentLoaded',function(){wbCookies.init();}); </script> </body> </html>