Referência da API
Este documento fornece detalhes técnicos sobre a ferramenta Open Graph Meta Generator e o seu funcionamento subjacente.
Visão geral da ferramenta
O Open Graph Meta Generator é uma ferramenta do lado do cliente que gera meta tags HTML para os protocolos Open Graph e Twitter Card. Processa a entrada do utilizador e devolve meta tags HTML devidamente formatadas.
Parâmetros de entrada
Informações gerais
| Parâmetro | Tipo | Obrigatório | Descrição | Exemplo |
|---|---|---|---|---|
pageType | string | Sim | Tipo de conteúdo | "website", "article", "book" |
title | string | Não | Título da página | "My Awesome Website" |
description | string | Não | Descrição da página | "A great website for developers" |
url | string | Não | URL da página | "https://example.com/page" |
siteName | string | Não | Nome do site | "My Company" |
Definições de imagem
| Parâmetro | Tipo | Obrigatório | Descrição | Exemplo |
|---|---|---|---|---|
imageUrl | string | Não | URL da imagem | "https://example.com/image.jpg" |
imageAlt | string | Não | Texto alt da imagem | "Company logo" |
imageWidth | string | Não | Largura da imagem em pixels | "1200" |
imageHeight | string | Não | Altura da imagem em pixels | "630" |
Definições do Twitter
| Parâmetro | Tipo | Obrigatório | Descrição | Exemplo |
|---|---|---|---|---|
twitterCardType | string | Sim | Tipo de Twitter Card | "summary_large_image" |
twitterSite | string | Não | Handle de Twitter do site | "@example" |
twitterCreator | string | Não | Handle de Twitter do autor | "@author" |
Formato de saída
A ferramenta gera meta tags HTML no seguinte formato:
Tags 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" />
Tags do 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 conteúdo
Tipos de página suportados
| Tipo | Descrição | Caso de uso |
|---|---|---|
website | Páginas gerais de website | Página inicial, página sobre, página de contacto |
article | Posts de blog e artigos de notícias | Posts de blog, notícias, tutoriais |
book | Páginas de livros e e-books | Listagens de livros, páginas de e-books |
profile | Perfis pessoais ou empresariais | Perfis de utilizador, páginas de empresa |
music | Faixas e álbuns de música | Streaming de música, páginas de álbuns |
video | Conteúdo de vídeo | Páginas de vídeo, listagens de filmes |
Tipos de Twitter Card
| Tipo | Descrição | Melhor para |
|---|---|---|
summary | Card básico com miniatura | Posts de blog, notícias |
summary_large_image | Card com imagem grande | Conteúdo visual, produtos |
app | Promoção de apps móveis | Páginas de app store |
player | Conteúdo de vídeo/áudio | Páginas de vídeo, podcasts |
Processamento de dados
Escape de HTML
Toda a entrada do utilizador é automaticamente escapada para prevenir ataques XSS:
function escapeHtml(text) {
const div = document.createElement("div");
div.textContent = text;
return div.innerHTML;
}
Validação de URL
Os URLs são validados para garantir que estão devidamente formatados:
function isValidUrl(string) {
try {
new URL(string);
return true;
} catch (_) {
return false;
}
}
Limites de comprimento do conteúdo
A ferramenta aplica os limites de comprimento recomendados:
- Título: máximo de 60 caracteres
- Descrição: máximo de 160 caracteres
- URL: tem de estar em formato de URL válido
Compatibilidade com browsers
Browsers suportados
| Browser | Versão | Suporte total |
|---|---|---|
| Chrome | 60+ | Suporte total |
| Firefox | 55+ | Suporte total |
| Safari | 12+ | Suporte total |
| Edge | 79+ | Suporte total |
Funcionalidades necessárias
- Suporte ES6+
- Suporte à Clipboard API
- Suporte a Local Storage
- Suporte a CSS Grid
Considerações de performance
Processamento do lado do cliente
- Todo o processamento acontece no browser
- Não são necessários pedidos ao servidor
- Geração e pré-visualização instantâneas
- Pegada de memória mínima
Caching
- As meta tags geradas são armazenadas em cache no armazenamento do browser
- Os registos de histórico são guardados localmente
- Sem dependências externas
Tratamento de erros
Erros de validação de entrada
// Example error handling
if (!title.trim()) {
showError("Title is required");
return;
}
if (url && !isValidUrl(url)) {
showError("Please enter a valid URL");
return;
}
Erros de carregamento de imagem
// Handle image loading errors
function handleImageError(event) {
const img = event.target;
img.style.display = "none";
showWarning("Image failed to load");
}
Exemplos de integração
Integração com 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');
Integração com 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} />
</>
);
}
Integração com 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>
);
}
Testes e validação
Debuggers de redes sociais
- Facebook: developers.facebook.com/tools/debug
- Twitter: cards-dev.twitter.com/validator
- LinkedIn: linkedin.com/post-inspector
Testes automatizados
// 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" />');
});
});
Resolução de problemas
Problemas comuns
- As imagens não aparecem: verifique o formato do URL e a acessibilidade
- As tags não funcionam: valide com os debuggers de redes sociais
- Conteúdo truncado: verifique os limites de caracteres
- Problemas de cache: utilize ferramentas de debug para atualizar o cache
Modo de debug
Ative o modo de debug para ver informações detalhadas:
// Enable debug logging
localStorage.setItem("debug", "true");
Melhorias futuras
Funcionalidades planeadas
- Suporte para dados estruturados Schema.org
- Suporte multi-idioma
- Capacidades de geração em massa
- Endpoint de API para geração no lado do servidor
- Otimização avançada de imagens
- Integração com analytics
Contribuir
Para contribuir para o Open Graph Meta Generator:
- Faça fork do repositório
- Crie uma branch de funcionalidade
- Faça as suas alterações
- Adicione testes
- Submeta um pull request
Suporte
Para suporte técnico ou questões: