Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
91 changes: 91 additions & 0 deletions SEO_REPORT.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,91 @@
# SEO Audit Report — JavaScript Chile
Generated: 2026-06-20

> **Nota:** Este es un proyecto Next.js App Router. Las correcciones se aplican en `src/app/layout.tsx`, `public/robots.txt` y `public/sitemap.xml` directamente (no existe carpeta `seo-optimized/` porque no son HTMLs estáticos).

---

## Summary
- Páginas analizadas: 1 (SPA — single page)
- Issues críticos: 4
- Warnings: 3
- Checks pasados: 7

---

## Resultados

### `src/app/layout.tsx` (metadata global)

#### ✅ Pasando
- `<html lang="es">` presente y correcto
- `<title>` bien formado: "JavaScript Chile | Comunidad de Desarrolladores" (52 chars)
- `<meta name="description">` presente y relevante (~200 chars — ver warning)
- `og:title` presente
- `og:description` presente
- `og:url` presente (`https://jschile.org/`)
- `og:siteName` presente
- `og:locale` presente (`es_CL`)
- `og:type` presente (`website`)

#### ⚠️ Warnings
- **Description demasiado larga**: 218 chars (recomendado: 150–160). Google la trunca en SERP.
- **`metadataBase` es string**: debe ser `new URL('https://jschile.org')` para que Next.js resuelva URLs relativas correctamente.
- **Sin `twitter:card`**: falta por completo. Afecta previews en X/Twitter.

#### ❌ Issues Críticos
- **`og:image` apunta a `/icon.png` que NO EXISTE** (fue eliminado al convertir imágenes a webp). Las previews sociales (LinkedIn, WhatsApp, Twitter) están rotas.
- **Sin `<link rel="canonical">`**: sin esto Google puede indexar duplicados (www vs non-www, http vs https).
- **Sin `robots.txt`**: Google no tiene instrucciones de crawl.
- **Sin `sitemap.xml`**: Google no conoce la estructura del sitio.

---

### Imágenes

#### ✅ Pasando
- `group-crowd.webp` → alt: "Asistentes en evento JavaScript Chile" ✅
- `group-selfie.webp` → alt: "JSConf Chile — foto grupal" ✅
- `group-stage.webp` → alt: "Escenario JSConf Chile" ✅
- Logo en Navbar → alt: "JavaScript Chile" ✅
- Logo en Footer → alt: "JavaScript Chile" ✅
- Mapa Chile → alt: "Mapa de Chile" ✅
- Fotos de galería → alt descriptivo ✅

#### ⚠️ Warning
- **Imágenes de staff sin alt en StaffCard**: usan `background-image` CSS en lugar de `<img>`. Google no indexa imágenes de fondo CSS. Las fotos de staff son invisibles para buscadores.

---

## Issues Globales
- `robots.txt` ausente
- `sitemap.xml` ausente
- OG image rota (`/icon.png` eliminado)
- Twitter Card inexistente
- `metadataBase` es string, no URL
- `canonical` ausente

---

## Quick Wins (fix estos primero)
1. ✅ **APLICADO** — Crear `robots.txt` en `/public/`
2. ✅ **APLICADO** — Crear `sitemap.xml` en `/public/`
3. ✅ **APLICADO** — Corregir `metadataBase` a `new URL(...)`
4. ✅ **APLICADO** — Añadir Twitter Card tags
5. ✅ **APLICADO** — Añadir canonical
6. ✅ **APLICADO** — Acortar description a 155 chars
7. ⚠️ **PENDIENTE MANUAL** — Crear imagen OG 1200×630px y reemplazar `/icon.png` en metadata (ver abajo)
8. ⚠️ **PENDIENTE MANUAL** — StaffCard: cambiar background-image CSS por `<img>` con alt text

---

## Imagen OG — Acción requerida

Se necesita una imagen de **1200×630 px** en formato JPG o PNG para las previews sociales.

**Opciones:**
- Usar `hero-bg.webp` redimensionada a 1200×630 (conversión manual o con sharp)
- Diseñar una imagen de marca con el logo y claim
- Usar Next.js [opengraph-image.tsx](https://nextjs.org/docs/app/api-reference/file-conventions/opengraph-image) para generarla dinámicamente

Mientras tanto se ha configurado la URL a `/assets/og-image.jpg` — **debes crear ese archivo**.
76 changes: 76 additions & 0 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

10 changes: 6 additions & 4 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,12 @@
"version": "0.1.0",
"private": true,
"scripts": {
"dev": "next dev",
"build": "next build",
"fetch-events": "node scripts/fetch-events.mjs",
"dev": "npm run fetch-events && next dev",
"build": "npm run fetch-events && next build",
"start": "next start",
"generate": "next build",
"generate": "npm run build",
"prestart": "npm run generate",
"predev": "npm run generate",
"typecheck": "tsc",
"lint": "npx eslint --cache src",
"lint:fix": "npx eslint --cache src --fix",
Expand All @@ -26,6 +26,7 @@
"@mui/icons-material": "^7.3.8",
"@mui/material": "^7.3.8",
"@mui/material-nextjs": "^7.3.8",
"@phosphor-icons/react": "^2.1.10",
"framer-motion": "^12.34.3",
"next": "16.1.6",
"react": "19.2.3",
Expand All @@ -40,6 +41,7 @@
"@types/react-dom": "^19",
"eslint": "^9",
"eslint-config-next": "16.1.6",
"node-ical": "^0.26.1",
"typescript": "^5"
}
}
Binary file added public/assets/Bg-footer.webp
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/assets/OG.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/assets/banner-inivitation-whatsapp.webp
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/assets/bg-line-time.webp
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/assets/default.webp
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file not shown.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file not shown.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file not shown.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file not shown.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file not shown.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file not shown.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/assets/events/group-crowd.webp
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/assets/events/group-selfie.webp
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/assets/events/group-stage.webp
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/assets/hero-bg.webp
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file removed public/assets/javascript-chile-logo.png
Binary file not shown.
15 changes: 15 additions & 0 deletions public/assets/js-chile-mapa.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
14 changes: 14 additions & 0 deletions public/assets/logo-cljs.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading