Referencia de API
Este documento proporciona detalles técnicos sobre la herramienta Open Graph Meta Generator y su funcionamiento interno.
Resumen de la herramienta
Open Graph Meta Generator es una herramienta del lado del cliente que genera meta tags HTML para los protocolos Open Graph y Twitter Card. Procesa la entrada del usuario y genera meta tags HTML con el formato adecuado.
Parámetros de entrada
Información general
| Parámetro | Tipo | Obligatorio | Descripción | Ejemplo |
|---|---|---|---|---|
pageType | string | Sí | Tipo de contenido | "website", "article", "book" |
title | string | No | Título de la página | "My Awesome Website" |
description | string | No | Descripción de la página | "A great website for developers" |
url | string | No | URL de la página | "https://example.com/page" |
siteName | string | No | Nombre del sitio | "My Company" |
Configuración de imágenes
| Parámetro | Tipo | Obligatorio | Descripción | Ejemplo |
|---|---|---|---|---|
imageUrl | string | No | URL de la imagen | "https://example.com/image.jpg" |
imageAlt | string | No | Texto alt de la imagen | "Company logo" |
imageWidth | string | No | Ancho de la imagen en píxeles | "1200" |
imageHeight | string | No | Alto de la imagen en píxeles | "630" |
Configuración de Twitter
| Parámetro | Tipo | Obligatorio | Descripción | Ejemplo |
|---|---|---|---|---|
twitterCardType | string | Sí | Tipo de Twitter Card | "summary_large_image" |
twitterSite | string | No | Usuario de Twitter del sitio | "@example" |
twitterCreator | string | No | Usuario de Twitter del autor | "@author" |
Formato de salida
La herramienta genera meta tags HTML con el siguiente formato:
Etiquetas Open Graph
<!-- Open Graph Meta Tags -->
<meta property="og:type" content="website" />
<meta property="og:title" content="Page Title" />
<meta property="og:description" content="Page description" />
<meta property="og:url" content="https://example.com/page" />
<meta property="og:site_name" content="Site Name" />
<meta property="og:image" content="https://example.com/image.jpg" />
<meta property="og:image:alt" content="Image description" />
<meta property="og:image:width" content="1200" />
<meta property="og:image:height" content="630" />
Etiquetas de Twitter
<!-- Twitter Meta Tags -->
<meta name="twitter:card" content="summary_large_image" />
<meta name="twitter:site" content="@example" />
<meta name="twitter:creator" content="@author" />
<meta name="twitter:title" content="Page Title" />
<meta name="twitter:description" content="Page description" />
<meta name="twitter:image" content="https://example.com/image.jpg" />
Tipos de contenido
Tipos de página compatibles
| Tipo | Descripción | Caso de uso |
|---|---|---|
website | Páginas generales de sitios web | Página de inicio, página sobre nosotros, página de contacto |
article | Entradas de blog y artículos de noticias | Entradas de blog, noticias, tutoriales |
book | Páginas de libros y e-books | Fichas de libros, páginas de e-books |
profile | Perfiles personales o de empresa | Perfiles de usuario, páginas corporativas |
music | Pistas y álbumes musicales | Streaming de música, páginas de álbumes |
video | Contenido de video | Páginas de video, fichas de películas |
Tipos de Twitter Card
| Tipo | Descripción | Ideal para |
|---|---|---|
summary | Tarjeta básica con miniatura | Entradas de blog, noticias |
summary_large_image | Tarjeta con imagen grande | Contenido visual, productos |
app | Promoción de aplicaciones móviles | Páginas de tiendas de apps |
player | Contenido de video/audio | Páginas de video, podcasts |
Procesamiento de datos
Escape de HTML
Toda la entrada del usuario se escapa automáticamente para prevenir ataques XSS:
function escapeHtml(text) {
const div = document.createElement("div");
div.textContent = text;
return div.innerHTML;
}
Validación de URL
Las URL se validan para asegurarse de que tengan el formato correcto:
function isValidUrl(string) {
try {
new URL(string);
return true;
} catch (_) {
return false;
}
}
Límites de longitud del contenido
La herramienta aplica los límites de longitud recomendados:
- Título: máximo de 60 caracteres
- Descripción: máximo de 160 caracteres
- URL: debe tener un formato de URL válido
Compatibilidad con navegadores
Navegadores compatibles
| Navegador | Versión | Compatibilidad total |
|---|---|---|
| Chrome | 60+ | Compatibilidad total |
| Firefox | 55+ | Compatibilidad total |
| Safari | 12+ | Compatibilidad total |
| Edge | 79+ | Compatibilidad total |
Funcionalidades necesarias
- Compatibilidad con ES6+
- Compatibilidad con la Clipboard API
- Compatibilidad con Local Storage
- Compatibilidad con CSS Grid
Consideraciones de rendimiento
Procesamiento del lado del cliente
- Todo el procesamiento ocurre en el navegador
- No se requieren solicitudes al servidor
- Generación y vista previa instantáneas
- Huella de memoria mínima
Caché
- Los meta tags generados se almacenan en caché en el almacenamiento del navegador
- Los registros del historial se guardan localmente
- No hay dependencias externas
Manejo de errores
Errores de validación de entrada
// Example error handling
if (!title.trim()) {
showError("Title is required");
return;
}
if (url && !isValidUrl(url)) {
showError("Please enter a valid URL");
return;
}
Errores de carga de imágenes
// Handle image loading errors
function handleImageError(event) {
const img = event.target;
img.style.display = "none";
showWarning("Image failed to load");
}
Ejemplos de integración
Integración con WordPress
// Add to functions.php
function add_open_graph_tags() {
if (is_single()) {
$title = get_the_title();
$description = get_the_excerpt();
$image = get_the_post_thumbnail_url();
echo '<meta property="og:title" content="' . esc_attr($title) . '" />';
echo '<meta property="og:description" content="' . esc_attr($description) . '" />';
echo '<meta property="og:image" content="' . esc_url($image) . '" />';
}
}
add_action('wp_head', 'add_open_graph_tags');
Integración con React
// React component example
function OpenGraphMeta({ title, description, image, url }) {
return (
<>
<meta property="og:title" content={title} />
<meta property="og:description" content={description} />
<meta property="og:image" content={image} />
<meta property="og:url" content={url} />
</>
);
}
Integración con Next.js
// Next.js Head component
import Head from "next/head";
function MyPage() {
return (
<Head>
<meta property="og:title" content="My Page Title" />
<meta property="og:description" content="My page description" />
<meta property="og:image" content="https://example.com/image.jpg" />
</Head>
);
}
Pruebas y validación
Depuradores de redes sociales
- Facebook: developers.facebook.com/tools/debug
- Twitter: cards-dev.twitter.com/validator
- LinkedIn: linkedin.com/post-inspector
Pruebas automatizadas
// Example test for meta tag generation
describe("Open Graph Meta Generator", () => {
test("generates correct meta tags", () => {
const input = {
pageType: "website",
title: "Test Page",
description: "Test description",
};
const output = generateMetaTags(input);
expect(output).toContain('<meta property="og:type" content="website" />');
expect(output).toContain('<meta property="og:title" content="Test Page" />');
});
});
Solución de problemas
Problemas comunes
- Las imágenes no se muestran: comprueba el formato de la URL y la accesibilidad
- Las etiquetas no funcionan: valida con los depuradores de redes sociales
- Contenido truncado: revisa los límites de caracteres
- Problemas de caché: usa herramientas de depuración para refrescar la caché
Modo de depuración
Activa el modo de depuración para ver información detallada:
// Enable debug logging
localStorage.setItem("debug", "true");
Mejoras futuras
Funcionalidades planificadas
- Compatibilidad con datos estructurados de Schema.org
- Soporte para varios idiomas
- Capacidades de generación masiva
- Endpoint de API para generación del lado del servidor
- Optimización avanzada de imágenes
- Integración con analítica
Contribuir
Para contribuir al Open Graph Meta Generator:
- Haz un fork del repositorio
- Crea una rama de funcionalidad
- Realiza tus cambios
- Añade pruebas
- Envía un pull request
Soporte
Si necesitas soporte técnico o tienes preguntas: