Sitio corporativo · SEO en EE. UU.
NixMar StudioSitio en inglés para un estudio de software, construido para el SEO local de Nueva York y Connecticut
Sitio en inglés de mi estudio en Greenwich, CT: 19 páginas comerciales, blog de 21 artículos y SEO local para Nueva York y Connecticut.
Tecnologías
- Next.js 15
- React 18
- TypeScript
- Tailwind CSS v4
- Framer Motion
- GSAP
- EmailJS
- Google Analytics 4 (Consent Mode v2)
- Vercel Speed Insights
- Vercel

19
páginas principales
21
artículos de blog
40
URLs en el sitemap
3
planes de precio
Mi rol
Diseño, desarrollo y SEO de NixMar Studio, mi propio estudio para el mercado de Estados Unidos: de la primera versión en Vite a la migración a Next.js, y el mantenimiento continuo desde entonces.
El problema
El estudio compite en inglés por búsquedas de servicio muy concretas - «web design Greenwich CT», «custom software New York», «cuánto cuesta un sitio web» - contra las agencias que ya ocupan esos resultados. El sitio arrancó bilingüe, con cada página duplicada en /en y /es, lo que partía en dos el rastreo para un mercado que busca solo en inglés. Con cada ronda de páginas nuevas aparecían además artículos que competían entre sí y precios que ya no coincidían entre los textos, los planes y los datos estructurados.
Qué construí
- Home orientada a conversión: servicios, integraciones, comparativa, visibilidad en buscadores con IA, FAQ y llamada a cotizar.
- Siete páginas de servicio - desarrollo web, e-commerce, software a medida, páginas web en EE. UU., crear un sitio, apps móviles y desarrollo de apps - más una landing de desarrollo de apps de salud en Nueva York.
- Tres guías de decisión: cuánto cuesta un sitio web, cuánto tarda una app móvil y quién desarrolla aplicaciones web.
- Página de precios con tres planes (Launch, Scale y Evolve) y precios de partida por tipo de proyecto, leídos de un único módulo.
- Portafolio con seis proyectos entregados, página de metodología y página «sobre nosotros» con su FAQ.
- Blog de 21 artículos con filtro por tema, tabla de contenidos, tiempo de lectura, botones para compartir y artículos relacionados.
- Contacto por formulario con EmailJS, diálogo de cotización accesible desde cualquier página y botón flotante de llamada, WhatsApp y SMS.
- Datos estructurados por ruta - Organization, ProfessionalService, WebSite con SearchAction, Service con OfferCatalog, BlogPosting, FAQPage, HowTo, ContactPage y BreadcrumbList - e imagen OG generada en el build.
Cómo está estructurado
Next.js 15 con App Router y renderizado en servidor. Cada ruta de app/ es una página mínima que exporta su metadata y monta una vista de views/; todo el texto sale de un único archivo de contenido en inglés, y un componente de SEO arma el JSON-LD de cada ruta a partir de la misma tabla que define sus títulos y descripciones.
- Conversión: /, /services, /pricing, /contact, /about, /methodology y /portfolio.
- Servicios: /web-development, /ecommerce, /custom-software, /web-pages-usa, /create-website, /mobile-app, /mobile-app-development y /healthcare-app-development-new-york.
- Guías de decisión: /website-cost, /mobile-app-timeline y /who-builds-web-apps.
- Blog: /blog y /blog/[slug]. El índice de artículos, con su fecha de publicación y su fecha real de edición, vive en data/blogs.ts; el contenido, en el archivo de textos.
- Fuentes únicas: SEO por ruta en lib/seo-metadata.ts, precios en lib/pricing.ts y textos en locales/en.json.
- Generado en el build: sitemap, robots.txt e imagen OG, todos estáticos.
- Integraciones: EmailJS para formularios, GA4 con Consent Mode v2 y Vercel Speed Insights; despliegue en Vercel.
SEO para competir en inglés en Nueva York y Connecticut
Cada página apunta a una búsqueda concreta de Greenwich, Stamford, Fairfield County o Nueva York, elegida mirando quién ocupa hoy ese resultado. El resto del trabajo es no desperdiciar señales.
- Dominio canónico con www: la versión sin www redirige con 308, porque Google estaba indexando las dos como URLs distintas.
- Títulos de hasta 65 caracteres y descripciones de 120 a 320, revisados a mano en cada ruta nueva, y sin meta keywords.
- Bloques de guías relacionadas en las páginas pilar y en las landings, para que los rastreadores sepan qué páginas forman un mismo grupo.
- Las FAQ visibles y el FAQPage del JSON-LD salen del mismo texto, así nunca se contradicen.
- robots.txt con reglas explícitas para Googlebot, Bingbot y los rastreadores de IA: GPTBot, OAI-SearchBot, ClaudeBot, PerplexityBot y Google-Extended.
- Cabeceras de seguridad en todas las rutas - HSTS de dos años, Permissions-Policy, X-Frame-Options - y caché larga para imágenes y fuentes.
- llms.txt retirado a propósito: la estrategia de citación en buscadores con IA descansa en schema.org y en el contenido, no en ese archivo.
Por dentro del sitio

Página de precios con los planes Launch, Scale y Evolve. 
Índice del blog con filtro por tema.
Decisiones técnicas
- Un solo idioma y una sola URL por página: el sitio pasó de bilingüe a solo inglés, sin prefijo de idioma, para reducir a la mitad las URLs y concentrar el rastreo en el mercado que de verdad busca. Cada URL vieja de /en y /es redirige con 308 a su equivalente.
- Los precios públicos viven en un solo módulo, y todo texto, plan u oferta del JSON-LD que cite una tarifa tiene que coincidir con él: un mismo servicio no puede costar dos cosas distintas en el mismo sitio.
- generate_lead se dispara solo cuando EmailJS confirma que el mensaje llegó. Los clics en cotizar, WhatsApp, teléfono o correo tienen eventos propios: un clic es intención, no un lead.
- GA4 carga con Consent Mode v2 en denegado por defecto: mientras el visitante no acepta, solo salen pings sin cookies, y la medición no queda condicionada a que alguien toque el banner.
- Nada fabricado en el marcado: sin aggregateRating hasta que existan reseñas verificables, sameAs solo con perfiles que existen y lastModified solo cuando el contenido cambia de verdad, nunca con la fecha del build.
- Una landing geográfica solo cuando aporta algo propio - la de apps de salud en Nueva York -, en lugar de una matriz de páginas ciudad × servicio casi iguales que Google trata como páginas puerta.
Retos
- Pasar de un sitio bilingüe ya indexado a uno solo en inglés sin perder señales: todas las URLs antiguas de /en y /es redirigen en un solo salto a su versión en la raíz.
- Cortar la canibalización: cinco artículos que competían con otros más fuertes o con páginas de servicio se retiraron y redirigen a la URL que sobrevive.
- Rendimiento: la opción de CSS en línea metía el bundle completo de Tailwind (~171 KB) en el HTML de cada página, y el hero precargaba una imagen de 2752 px en todas las rutas. Se quitaron las dos cosas.
- Volver a alinear precios que se habían desviado entre páginas de servicio, planes y datos estructurados después de varias rondas de contenido nuevo.
Resultado
El sitio está en producción en inglés, con una sola URL por página, 40 URLs en el sitemap y sus páginas de servicio, guías, blog y datos estructurados publicados y rastreables. Cada formulario enviado se registra como lead en GA4, y los clics a WhatsApp, teléfono y correo se miden por separado.