Cover Image for Делаем ИИ агента про описание продукта на WordPress & WooCommerce

Делаем ИИ агента про описание продукта на WordPress & WooCommerce

26 февраля 2025

Как сделать качественные описания продуктов в каталоге с использованием AI-агентов (ИИ, нейросети).

В современном мире электронной коммерции качественное описание продукта играет ключевую роль в конверсии посетителей в покупателей. Однако создание уникальных и информативных описаний для каждого товара может быть трудоемким процессом. В этой статье мы рассмотрим, как автоматизировать этот процесс с помощью ИИ и WordPress.

Технический стек решения

  • WordPress: Базовая CMS платформа
  • WooCommerce: Плагин электронной коммерции
  • Action Scheduler: Библиотека для управления фоновыми задачами
  • AI API: Для генерации описаний товаров через ИИ

Вводные и компоненты системы

  • Интеграция с WooCommerce — Система будет работать непосредственно с продуктами WooCommerce, получая доступ к существующим данным товара и обновляя описания.
  • Очередь обработки — Action Scheduler будет использоваться для создания очереди обработки товаров, что позволит:
    • Равномерно распределить нагрузку на сервер
    • Избежать таймаутов при обработке большого количества товаров
    • Отслеживать прогресс обработки
  • Генерация контента — ИИ агент будет использовать следующие данные для генерации описаний:
    • Название товара
    • Категории и атрибуты
    • Существующее краткое описание
    • Технические характеристики

Процесс работы

  1. Администратор выбирает товары для обработки через SCF
  2. Система создает задачи в Action Scheduler
  3. Каждая задача обрабатывается в фоновом режиме
  4. ИИ генерирует новое описание на основе имеющихся данных
  5. Описание сохраняется в базе данных

Преимущества решения

  • Автоматизация рутинной работы
  • Уникальные описания для каждого товара
  • Оптимизация под SEO
  • Масштабируемость решения

Планы по развитию

В будущих версиях планируется добавить:

  • Улучшение качества выходных данных и текстов
  • Настраиваемые шаблоны для разных категорий товаров
  • Расширенная аналитика и отчетность

Заключение

Использование ИИ для генерации описаний товаров — это эффективный способ улучшить качество контента интернет-магазина при минимальных затратах времени. Интеграция с Action Scheduler обеспечивает надежную и масштабируемую обработку даже большого количества товаров.

Пример кода
<?php

namespace App\AIBots\AutoReviewForProduct;

use AIPress\Perplexity;
use WP_CLI;

/**
 * Обзор продукта с учетом поиска
 */
const ACTION = 'app_ai_review_for_product';

add_action(ACTION, function ($product_id) {

    if (empty($product_id)) {
        return;
    }

    $id = $product_id;

    $out = process($id);

    if ($out) {
        update_post_meta($id, 'ai_review', $out);
    }
    update_post_meta($id, 'ai_review_done', true);
    wc_get_logger()->info('app_ai_review_for_product - ' . wc_get_product($id)->get_name(), [
        'source' => 'app-ai-bots',
        'link' => get_edit_post_link($product_id),
        'product_id' => $id,
        'out' => [$out],
    ]);
});

add_action('init', function () {
    if (as_has_scheduled_action(ACTION)) {
        return;
    }

    $pid = get_next_product_id();
    if(empty($pid)) {
        return;
    }

    $args = [
        'product_id' => $pid,
    ];

    as_schedule_single_action(time() + HOUR_IN_SECONDS / 2, ACTION, $args, 'app', true);
});


function get_next_product_id()
{
    $product_next = get_posts([
        'post_type' => 'product',
        'posts_per_page' => 1,
        'orderby' => 'post_date',
        'order' => 'DESC',
        'fields' => 'ids',
        'meta_query' => [
            [
                'key' => 'ai_review_done',
                'compare' => 'NOT EXISTS',
            ],
        ],

    ]);

    return $product_next[0] ?? null;
}

function process($product_id = null)
{
    if (empty($product_id)) {
        return null;
    }

    $product = wc_get_product($product_id);

    if (empty($product)) {
        return null;
    }

    $text = $product->get_name() . ' - обзор';

    $out = Perplexity::prompt($text);

    if (empty($out)) {
        return null;
    }

    return $out;
}