У меня на продвижении находится магазин, разработан на WordPress + Wocommerce. Я постепенно прорабатывал семантику по всему магазину и детально работал с одной из категорий. Тем временем все title по всему сайту были не очень релевантные (были построены по шаблону) и не содержали в себе нужных ключей, а description вообще были все пустые.
Было бы неплохо на текущем этапе, собрав все страницы по сайту, разом составить список новых title и description, и разом внедрить их на сайт. Потом, по мере сборки и проработки семантики, по кажой категории и товару уже заняться более детальной проработкой метатегов уже конкретных страниц.
Было решено воспользоваться ИИ Claude для этих целей. Как оказалось, существует расширение для клода которое даёт ему доступ к Яндекс Wordstat. Это существенно расширяет возможности, ведь клод может в реальном времени посмотреть статистику фраз по частотности, определить более частотные словоформы, и уже с этими данными составить более релевантные тайтл и дескрипшен для страницы.
Интеграция от нашего разработчика, для того чтобы получить к ней доступ, нужно в телеграм боте получить ссылку, которую потом нужно будет вставить в Claude.
Телеграм бот, где можно получить ссылку для вставки в клод:
Чат с обсуждением интеграции:
Сам разработчик:
Youtube канал:
После этого заходим в настройки Claude — Settings — Integrations — Add integration. Вводим название wordstat, вводим полученную у telegram робота ссылку.
Далее я попробовал на что способен Claude вместе с новой интеграцией. Результат меня даже удивил:
Нам нужно разом проработать все метатеги всех страниц, но для дальнейшей записи нам будут нужны id этих страниц. Поэтому для начала я попросил клода сделать скрипт, который выгрузит все возможные страницы и их id в формате csv.

Вот готовый php скрипт, который сделает экспорт страниц и их id:
<?php
/**
* Скрипт для выгрузки всех страниц WordPress + WooCommerce
* Создает таблицу соответствий URL и ID для всех типов контента
*
* Использование: разместить в корне сайта и запустить через браузер
* Например: https://yoursite.com/export_pages.php
*/
// Устанавливаем кодировку
header('Content-Type: text/html; charset=UTF-8');
mb_internal_encoding('UTF-8');
ini_set('default_charset', 'UTF-8');
// Подключаем WordPress
require_once('wp-config.php');
require_once('wp-load.php');
// Проверяем, что WooCommerce активен
if (!class_exists('WooCommerce')) {
die('WooCommerce не активен на данном сайте!');
}
// Устанавливаем лимит времени выполнения
set_time_limit(300);
// Массив для хранения всех данных
$all_pages = array();
/**
* Функция для получения полного URL страницы
*/
function get_page_url($post_id, $post_type = 'post') {
if ($post_type === 'product_cat' || $post_type === 'product_tag') {
return get_term_link($post_id);
}
return get_permalink($post_id);
}
/**
* Функция для добавления данных в массив
*/
function add_to_export($id, $url, $title, $type, $status = 'publish') {
global $all_pages;
// Проверяем, что URL валидный
if (is_wp_error($url)) {
$url = 'ERROR: ' . $url->get_error_message();
}
$all_pages[] = array(
'id' => $id,
'url' => $url,
'title' => $title,
'type' => $type,
'status' => $status
);
}
echo "<h1>Экспорт всех страниц WordPress + WooCommerce</h1>";
echo "<p>Выполняется сбор данных...</p>";
// 1. СТАНДАРТНЫЕ ЗАПИСИ WORDPRESS (posts)
echo "<h3>1. Обрабатываем записи (posts)...</h3>";
$posts = get_posts(array(
'post_type' => 'post',
'post_status' => array('publish', 'private', 'draft'),
'numberposts' => -1,
'suppress_filters' => false
));
foreach ($posts as $post) {
$url = get_page_url($post->ID, 'post');
add_to_export($post->ID, $url, $post->post_title, 'post', $post->post_status);
}
echo "Найдено записей: " . count($posts) . "<br>";
// 2. СТРАНИЦЫ WORDPRESS (pages)
echo "<h3>2. Обрабатываем страницы (pages)...</h3>";
$pages = get_posts(array(
'post_type' => 'page',
'post_status' => array('publish', 'private', 'draft'),
'numberposts' => -1,
'suppress_filters' => false
));
foreach ($pages as $page) {
$url = get_page_url($page->ID, 'page');
add_to_export($page->ID, $url, $page->post_title, 'page', $page->post_status);
}
echo "Найдено страниц: " . count($pages) . "<br>";
// 3. ТОВАРЫ WOOCOMMERCE (products)
echo "<h3>3. Обрабатываем товары WooCommerce...</h3>";
$products = get_posts(array(
'post_type' => 'product',
'post_status' => array('publish', 'private', 'draft'),
'numberposts' => -1,
'suppress_filters' => false
));
foreach ($products as $product) {
$url = get_page_url($product->ID, 'product');
add_to_export($product->ID, $url, $product->post_title, 'product', $product->post_status);
}
echo "Найдено товаров: " . count($products) . "<br>";
// 4. КАТЕГОРИИ ТОВАРОВ WOOCOMMERCE
echo "<h3>4. Обрабатываем категории товаров WooCommerce...</h3>";
$product_cats = get_terms(array(
'taxonomy' => 'product_cat',
'hide_empty' => false,
'suppress_filters' => false
));
if (!is_wp_error($product_cats)) {
foreach ($product_cats as $cat) {
$url = get_term_link($cat->term_id, 'product_cat');
add_to_export($cat->term_id, $url, $cat->name, 'product_category', 'publish');
}
echo "Найдено категорий товаров: " . count($product_cats) . "<br>";
} else {
echo "Ошибка при получении категорий товаров<br>";
}
// 5. ТЕГИ ТОВАРОВ WOOCOMMERCE
echo "<h3>5. Обрабатываем теги товаров WooCommerce...</h3>";
$product_tags = get_terms(array(
'taxonomy' => 'product_tag',
'hide_empty' => false,
'suppress_filters' => false
));
if (!is_wp_error($product_tags)) {
foreach ($product_tags as $tag) {
$url = get_term_link($tag->term_id, 'product_tag');
add_to_export($tag->term_id, $url, $tag->name, 'product_tag', 'publish');
}
echo "Найдено тегов товаров: " . count($product_tags) . "<br>";
} else {
echo "Ошибка при получении тегов товаров<br>";
}
// 6. АТРИБУТЫ ТОВАРОВ WOOCOMMERCE
echo "<h3>6. Обрабатываем атрибуты товаров WooCommerce...</h3>";
$attribute_taxonomies = wc_get_attribute_taxonomies();
$attributes_count = 0;
foreach ($attribute_taxonomies as $attribute) {
$taxonomy = 'pa_' . $attribute->attribute_name;
$terms = get_terms(array(
'taxonomy' => $taxonomy,
'hide_empty' => false,
'suppress_filters' => false
));
if (!is_wp_error($terms)) {
foreach ($terms as $term) {
$url = get_term_link($term->term_id, $taxonomy);
add_to_export($term->term_id, $url, $term->name, 'product_attribute_' . $attribute->attribute_name, 'publish');
$attributes_count++;
}
}
}
echo "Найдено атрибутов товаров: " . $attributes_count . "<br>";
// 7. СТРАНИЦЫ МАГАЗИНА WOOCOMMERCE
echo "<h3>7. Обрабатываем специальные страницы WooCommerce...</h3>";
$woo_pages = array(
'shop' => wc_get_page_id('shop'),
'cart' => wc_get_page_id('cart'),
'checkout' => wc_get_page_id('checkout'),
'myaccount' => wc_get_page_id('myaccount'),
'terms' => wc_get_page_id('terms')
);
$woo_pages_count = 0;
foreach ($woo_pages as $page_type => $page_id) {
if ($page_id && $page_id > 0) {
$page = get_post($page_id);
if ($page) {
$url = get_page_url($page_id, 'page');
add_to_export($page_id, $url, $page->post_title, 'woo_page_' . $page_type, $page->post_status);
$woo_pages_count++;
}
}
}
echo "Найдено специальных страниц WooCommerce: " . $woo_pages_count . "<br>";
// 8. ДОПОЛНИТЕЛЬНЫЕ ТИПЫ ЗАПИСЕЙ
echo "<h3>8. Обрабатываем дополнительные типы записей...</h3>";
$custom_post_types = get_post_types(array(
'public' => true,
'_builtin' => false
), 'names');
// Исключаем уже обработанные типы WooCommerce
$exclude_types = array('product', 'shop_order', 'shop_coupon', 'shop_webhook');
$custom_post_types = array_diff($custom_post_types, $exclude_types);
$custom_posts_count = 0;
foreach ($custom_post_types as $post_type) {
$custom_posts = get_posts(array(
'post_type' => $post_type,
'post_status' => array('publish', 'private', 'draft'),
'numberposts' => -1,
'suppress_filters' => false
));
foreach ($custom_posts as $custom_post) {
$url = get_page_url($custom_post->ID, $post_type);
add_to_export($custom_post->ID, $url, $custom_post->post_title, $post_type, $custom_post->post_status);
$custom_posts_count++;
}
}
echo "Найдено записей дополнительных типов: " . $custom_posts_count . "<br>";
// Сортируем результаты по ID
usort($all_pages, function($a, $b) {
return $a['id'] <=> $b['id'];
});
$total_count = count($all_pages);
echo "<br><h2>Всего найдено: {$total_count} записей</h2>";
// Определяем формат вывода
$format = isset($_GET['format']) ? $_GET['format'] : 'html';
if ($format === 'csv') {
// ЭКСПОРТ В CSV
header('Content-Type: text/csv; charset=utf-8');
header('Content-Disposition: attachment; filename="wordpress_woocommerce_export_' . date('Y-m-d_H-i-s') . '.csv"');
$output = fopen('php://output', 'w');
// BOM для корректного отображения UTF-8 в Excel
fprintf($output, chr(0xEF).chr(0xBB).chr(0xBF));
// Заголовки
fputcsv($output, array('№', 'ID', 'URL', 'Заголовок', 'Тип', 'Статус'), ';');
// Данные
foreach ($all_pages as $index => $page) {
fputcsv($output, array(
$index + 1,
$page['id'],
$page['url'],
$page['title'],
$page['type'],
$page['status']
), ';');
}
fclose($output);
exit;
} elseif ($format === 'json') {
// ЭКСПОРТ В JSON
header('Content-Type: application/json; charset=utf-8');
header('Content-Disposition: attachment; filename="wordpress_woocommerce_export_' . date('Y-m-d_H-i-s') . '.json"');
$export_data = array(
'export_date' => date('Y-m-d H:i:s'),
'site_url' => home_url(),
'total_count' => $total_count,
'pages' => $all_pages
);
echo json_encode($export_data, JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT);
exit;
} else {
// ОТОБРАЖЕНИЕ В HTML
echo "<div style='margin: 20px 0;'>";
echo "<a href='?format=csv' style='margin-right: 10px; padding: 10px 15px; background: #0073aa; color: white; text-decoration: none; border-radius: 3px;'>Скачать CSV</a>";
echo "<a href='?format=json' style='padding: 10px 15px; background: #00a32a; color: white; text-decoration: none; border-radius: 3px;'>Скачать JSON</a>";
echo "</div>";
echo "<table border='1' cellpadding='5' cellspacing='0' style='border-collapse: collapse; width: 100%; font-size: 12px;'>";
echo "<thead style='background: #f1f1f1;'>";
echo "<tr><th>№</th><th>ID</th><th>URL</th><th>Заголовок</th><th>Тип</th><th>Статус</th></tr>";
echo "</thead>";
echo "<tbody>";
foreach ($all_pages as $index => $page) {
$row_color = ($index % 2 == 0) ? '#f9f9f9' : '#ffffff';
echo "<tr style='background: {$row_color};'>";
echo "<td>" . ($index + 1) . "</td>";
echo "<td>" . htmlspecialchars($page['id']) . "</td>";
echo "<td><a href='" . htmlspecialchars($page['url']) . "' target='_blank'>" . htmlspecialchars($page['url']) . "</a></td>";
echo "<td>" . htmlspecialchars($page['title']) . "</td>";
echo "<td>" . htmlspecialchars($page['type']) . "</td>";
echo "<td>" . htmlspecialchars($page['status']) . "</td>";
echo "</tr>";
}
echo "</tbody>";
echo "</table>";
// Статистика по типам
echo "<h3>Статистика по типам контента:</h3>";
$type_stats = array();
foreach ($all_pages as $page) {
$type = $page['type'];
if (!isset($type_stats[$type])) {
$type_stats[$type] = 0;
}
$type_stats[$type]++;
}
arsort($type_stats);
echo "<ul>";
foreach ($type_stats as $type => $count) {
echo "<li><strong>{$type}:</strong> {$count} записей</li>";
}
echo "</ul>";
echo "<p><small>Скрипт выполнен: " . date('Y-m-d H:i:s') . "</small></p>";
}
?>
<style>
body {
font-family: Arial, sans-serif;
margin: 20px;
line-height: 1.6;
}
table {
margin-top: 20px;
font-size: 12px;
}
th {
background: #0073aa;
color: white;
padding: 8px;
text-align: left;
}
td {
padding: 5px;
border: 1px solid #ddd;
}
a {
color: #0073aa;
text-decoration: none;
}
a:hover {
text-decoration: underline;
}
h1, h2, h3 {
color: #333;
}
.download-buttons {
margin: 20px 0;
}
.btn {
display: inline-block;
padding: 10px 15px;
margin-right: 10px;
background: #0073aa;
color: white;
text-decoration: none;
border-radius: 3px;
}
.btn:hover {
background: #005a87;
}
.btn.green {
background: #00a32a;
}
.btn.green:hover {
background: #007c20;
}
</style>Сохраняем полученный код под именем export_pages.php в корне вашего сайта и запускаем через браузер по адресу yoursite.ru/export_pages.php
Результат работы скрипта:

Скачиваем табличку, в случае необходимости открываем в excel и удаляем лишние страницы (желательно поправить нумерацию строк). После отработки скрипта, лучше его удалить с хостинга.
Далее опять идём в клод,









