Настройка мета-тегов (title, description, keywords) сайта
Мета-теги — базовая SEO-настройка, влияющая на отображение страниц в результатах поиска. Title и description формируют сниппет в выдаче: именно их видит пользователь перед кликом.
Title
Правила хорошего title:
- Длина 50–60 символов (Google обрезает длиннее)
- Главный ключевой запрос ближе к началу
- Уникальный для каждой страницы
- Содержит название сайта/бренда (обычно в конце через
|или—)
<title>Купить iPhone 15 Pro — официальный магазин | ТехноМагазин</title>
Description
- Длина 150–160 символов
- Описывает содержимое страницы + призыв к действию
- Уникальный для каждой страницы
- Не влияет на позиции напрямую, но влияет на CTR
<meta name="description" content="iPhone 15 Pro с доставкой за 1-2 дня. Официальная гарантия 1 год. Более 50 вариантов комплектации. Рассрочка 0% на 12 месяцев.">
Keywords
Meta keywords игнорируется Google и Яндексом с 2009/2014 года. Добавлять не обязательно.
Реализация в Laravel + Blade
// config/seo.php
return [
'defaults' => [
'title' => 'Название сайта',
'description' => 'Описание по умолчанию',
'suffix' => '| Название сайта'
]
];
// layouts/app.blade.php
<title>{{ isset($seoTitle) ? "{$seoTitle} " . config('seo.defaults.suffix') : config('seo.defaults.title') }}</title>
<meta name="description" content="{{ $seoDescription ?? config('seo.defaults.description') }}">
// В контроллере страницы товара
return view('products.show', [
'product' => $product,
'seoTitle' => "Купить {$product->name} — цена, фото, характеристики",
'seoDescription' => Str::limit("Купить {$product->name} за {$product->price} ₽. {$product->short_description}", 155)
]);
Реализация в Next.js
import Head from 'next/head';
export function SeoMeta({ title, description, children }) {
const fullTitle = title
? `${title} | ${process.env.NEXT_PUBLIC_SITE_NAME}`
: process.env.NEXT_PUBLIC_SITE_NAME;
return (
<Head>
<title>{fullTitle}</title>
<meta name="description" content={description || process.env.NEXT_PUBLIC_DEFAULT_DESCRIPTION} />
{children}
</Head>
);
}
Генерация description из контента
Если мета-description не заполнен вручную:
public function generateDescription(string $content, int $length = 155): string
{
$text = strip_tags($content);
$text = preg_replace('/\s+/', ' ', $text);
return Str::limit(trim($text), $length);
}
Срок настройки: несколько часов для базовой настройки с шаблонами.







