Справочник по API
Этот документ содержит технические сведения об инструменте Open Graph Meta Generator и его внутренней логике.
Обзор инструмента
Open Graph Meta Generator - это инструмент на стороне клиента, который генерирует HTML meta-теги для протоколов Open Graph и Twitter Card. Он обрабатывает пользовательский ввод и возвращает корректно отформатированные HTML meta-теги.
Входные параметры
Общая информация
| Parameter | Type | Required | Description | Example |
|---|---|---|---|---|
pageType | string | Yes | Тип контента | "website", "article", "book" |
title | string | No | Заголовок страницы | "My Awesome Website" |
description | string | No | Описание страницы | "A great website for developers" |
url | string | No | URL страницы | "https://example.com/page" |
siteName | string | No | Название сайта | "My Company" |
Параметры изображения
| Parameter | Type | Required | Description | Example |
|---|---|---|---|---|
imageUrl | string | No | URL изображения | "https://example.com/image.jpg" |
imageAlt | string | No | Alt-текст изображения | "Company logo" |
imageWidth | string | No | Ширина изображения в пикселях | "1200" |
imageHeight | string | No | Высота изображения в пикселях | "630" |
Параметры Twitter
| Parameter | Type | Required | Description | Example |
|---|---|---|---|---|
twitterCardType | string | Yes | Тип карточки Twitter | "summary_large_image" |
twitterSite | string | No | Twitter-handle сайта | "@example" |
twitterCreator | string | No | Twitter-handle автора | "@author" |
Формат вывода
Инструмент генерирует HTML meta-теги в следующем формате:
Теги 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" />
Теги 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" />
Типы контента
Поддерживаемые типы страниц
| Type | Description | Use Case |
|---|---|---|
website | Обычные страницы сайта | Homepage, about page, contact page |
article | Записи блога и новостные статьи | Blog posts, news articles, tutorials |
book | Страницы книг и электронных книг | Book listings, e-book pages |
profile | Личные или корпоративные профили | User profiles, company pages |
music | Музыкальные треки и альбомы | Music streaming, album pages |
video | Видеоконтент | Video pages, movie listings |
Типы Twitter Card
| Type | Description | Best For |
|---|---|---|
summary | Базовая карточка с миниатюрой | Blog posts, news articles |
summary_large_image | Карточка с большим изображением | Visual content, products |
app | Продвижение мобильного приложения | App store pages |
player | Видео- и аудиоконтент | Video pages, podcasts |
Обработка данных
HTML-экранирование
Весь пользовательский ввод автоматически экранируется для предотвращения XSS-атак:
function escapeHtml(text) {
const div = document.createElement("div");
div.textContent = text;
return div.innerHTML;
}
Проверка URL
URL проверяются, чтобы убедиться в корректном формате:
function isValidUrl(string) {
try {
new URL(string);
return true;
} catch (_) {
return false;
}
}
Ограничения длины контента
Инструмент применяет рекомендуемые ограничения длины:
- Заголовок: максимум 60 символов
- Описание: максимум 160 символов
- URL: должен соответствовать корректному формату URL
Совместимость с браузерами
Поддерживаемые браузеры
| Browser | Version | Support |
|---|---|---|
| Chrome | 60+ | Полная поддержка |
| Firefox | 55+ | Полная поддержка |
| Safari | 12+ | Полная поддержка |
| Edge | 79+ | Полная поддержка |
Требуемые возможности
- Поддержка ES6+
- Поддержка Clipboard API
- Поддержка Local Storage
- Поддержка CSS Grid
Соображения по производительности
Обработка на стороне клиента
- Вся обработка выполняется в браузере
- Запросы к серверу не требуются
- Мгновенная генерация и предварительный просмотр
- Минимальное потребление памяти
Кэширование
- Сгенерированные meta-теги кэшируются в хранилище браузера
- История сохраняется локально
- Внешние зависимости отсутствуют
Обработка ошибок
Ошибки проверки ввода
// Example error handling
if (!title.trim()) {
showError("Title is required");
return;
}
if (url && !isValidUrl(url)) {
showError("Please enter a valid URL");
return;
}
Ошибки загрузки изображений
// Handle image loading errors
function handleImageError(event) {
const img = event.target;
img.style.display = "none";
showWarning("Image failed to load");
}
Примеры интеграции
Интеграция с 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');
Интеграция с 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} />
</>
);
}
Интеграция с 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>
);
}
Тестирование и проверка
Отладчики социальных сетей
- Facebook: developers.facebook.com/tools/debug
- Twitter: cards-dev.twitter.com/validator
- LinkedIn: linkedin.com/post-inspector
Автоматические тесты
// 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" />');
});
});
Устранение неполадок
Частые проблемы
- Images not displaying: Проверьте формат URL и доступность изображения
- Tags not working: Проверьте теги через отладчики социальных сетей
- Truncated content: Проверьте ограничения по длине символов
- Cache issues: Используйте инструменты отладки для обновления кэша
Режим отладки
Включите режим отладки, чтобы видеть подробную информацию:
// Enable debug logging
localStorage.setItem("debug", "true");
Будущие улучшения
Запланированные возможности
- Поддержка структурированных данных Schema.org
- Поддержка нескольких языков
- Возможности пакетной генерации
- API endpoint для генерации на стороне сервера
- Продвинутая оптимизация изображений
- Интеграция с аналитикой
Как внести вклад
Чтобы внести вклад в Open Graph Meta Generator:
- Сделайте fork репозитория
- Создайте feature-ветку
- Внесите изменения
- Добавьте тесты
- Отправьте pull request
Поддержка
По техническим вопросам и за поддержкой: