Реалізація AI-генерації контенту для CMS сайту

Наша компанія займається розробкою, підтримкою та обслуговуванням сайтів будь-якої складності. Від простих односторінкових сайтів до масштабних кластерних систем, побудованих на мікро сервісах. Досвід розробників підтверджено сертифікатами від вендорів.
Розробка та обслуговування будь-яких видів сайтів:
Інформаційні сайти або веб-програми
Сайти візитки, landing page, корпоративні сайти, онлайн каталоги, квіз, промо-сайти, блоги, ресурси новин, інформаційні портали, форуми, агрегатори
Сайти або веб-програми електронної комерції
Інтернет-магазини, B2B-портали, маркетплейси, онлайн-обмінники, кешбек-сайти, біржі, дропшиппінг-платформи, парсери товарів
Веб-програми для управління бізнес-процесами
CRM-системи, ERP-системи, корпоративні портали, системи управління виробництвом, парсери інформації
Сайти або веб-програми електронних послуг
Дошки оголошень, онлайн-школи, онлайн-кінотеатри, конструктори сайтів, портали надання електронних послуг, відеохостинги, тематичні портали

Це лише деякі з технічних типів сайтів, з якими ми працюємо, і кожен із них може мати свої специфічні особливості та функціональність, а також бути адаптованим під конкретні потреби та цілі клієнта.

Пропоновані послуги
Показано 1 з 1 послугУсі 2065 послуг
Реалізація AI-генерації контенту для CMS сайту
Середня
~3-5 робочих днів
Часті питання
Наші компетенції:
Етапи розробки
Останні роботи
  • image_website-b2b-advance_0.png
    Розробка сайту компанії B2B ADVANCE
    1262
  • image_web-applications_feedme_466_0.webp
    Розробка веб-додатків для компанії FEEDME
    1171
  • image_websites_belfingroup_462_0.webp
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    874
  • image_ecommerce_furnoro_435_0.webp
    Розробка інтернет магазину для компанії FURNORO
    1094
  • image_crm_enviok_479_0.webp
    Розробка веб-додатків для компанії Enviok
    831
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Розробка веб-сайту для компанії ФІКСПЕР
    851

Реалізація AI-генерації контенту для CMS сайту

AI-генерація в CMS — це не «кнопка написати статтю». Це асистентські інструменти для редактора: чернетка за брифом, переформулювання абзацу, SEO-оптимізація мета-тегів, переклад, генерація варіантів заголовків. Інтегрується прямо в редактор без переключення контексту.

Що реалізуємо в CMS

  • Генерація чернетки статті за заголовком та ключовими словами
  • Переформулювання виділеного тексту (зробити коротше / офіційніше / простіше)
  • Генерація SEO-мета: title, description, OG-теги
  • Варіанти заголовків (5 варіантів на вибір)
  • Автоматичний alt-text для зображень
  • Генерація витягу (excerpt) з тіла статті

Серверний API для генерації

// api/ai-content.js
import OpenAI from 'openai';

const openai = new OpenAI({ apiKey: process.env.OPENAI_API_KEY });

const BRAND_VOICE = `
Стиль бренду: професійний, без води, конкретні факти.
Заборонено: слова "унікальний", "інноваційний", "революційний".
Цільова аудиторія: технічні спеціалісти 25-45 років.
`;

export async function POST(request) {
  const { action, content, options = {} } = await request.json();

  const handlers = {
    draft: generateDraft,
    rephrase: rephraseText,
    seo_meta: generateSeoMeta,
    headlines: generateHeadlines,
    excerpt: generateExcerpt,
    alt_text: generateAltText,
  };

  const handler = handlers[action];
  if (!handler) return Response.json({ error: 'Unknown action' }, { status: 400 });

  const stream = await handler(content, options);
  return new Response(stream);
}

async function generateDraft(data, options) {
  const { title, keywords, outline, wordCount = 800 } = data;

  return openai.chat.completions.create({
    model: 'gpt-4o',
    stream: true,
    messages: [
      {
        role: 'system',
        content: `${BRAND_VOICE}\nГенеруй контент у Markdown. Використовуй H2, H3, списки, жирний текст.`,
      },
      {
        role: 'user',
        content: `Напиши статтю (~${wordCount} слів).
Заголовок: ${title}
Ключові слова: ${keywords?.join(', ')}
${outline ? `Структура:\n${outline}` : ''}`,
      },
    ],
  }).then(s => s.toReadableStream());
}

async function rephraseText(data, options) {
  const { text, tone } = data; // tone: shorter|formal|casual|simpler

  const toneInstructions = {
    shorter: 'Скороти текст удвічі, збережи сенс.',
    formal: 'Перепиши в офіційному ділова стилі.',
    casual: 'Перепиши у розмовному, дружелюбному стилі.',
    simpler: 'Спрости текст, замініть складні терміни на зрозумілі.',
  };

  return openai.chat.completions.create({
    model: 'gpt-4o-mini',
    stream: true,
    messages: [
      { role: 'system', content: toneInstructions[tone] || 'Переформулюй текст.' },
      { role: 'user', content: text },
    ],
    max_tokens: 500,
  }).then(s => s.toReadableStream());
}

async function generateSeoMeta(data) {
  const { title, body } = data;

  const response = await openai.chat.completions.create({
    model: 'gpt-4o-mini',
    response_format: { type: 'json_object' },
    messages: [
      {
        role: 'system',
        content: 'Поверни JSON: { meta_title: string (до 60 символів), meta_description: string (до 160 символів), og_title: string, og_description: string, focus_keyword: string }',
      },
      {
        role: 'user',
        content: `Згенеруй SEO для статті:\nЗаголовок: ${title}\nТекст:\n${body.slice(0, 1000)}...`,
      },
    ],
  });

  return JSON.parse(response.choices[0].message.content);
}

async function generateHeadlines(data) {
  const { body, count = 5 } = data;

  const response = await openai.chat.completions.create({
    model: 'gpt-4o-mini',
    response_format: { type: 'json_object' },
    messages: [
      {
        role: 'system',
        content: 'Поверни JSON: { headlines: [ { title: string, reason: string } ] }',
      },
      {
        role: 'user',
        content: `Згенеруй ${count} альтернативних заголовків для:\n${body.slice(0, 500)}`,
      },
    ],
  });

  return JSON.parse(response.choices[0].message.content).headlines;
}

Інтеграція редактора

function AIContentTools() {
  const { text, setText } = useEditor();
  const [loading, setLoading] = useState(false);

  async function callAPI(action, data) {
    setLoading(true);
    const response = await fetch('/api/ai-content', {
      method: 'POST',
      body: JSON.stringify({ action, content: data }),
    });

    const reader = response.body.getReader();
    let result = '';

    while (true) {
      const { done, value } = await reader.read();
      if (done) break;
      result += new TextDecoder().decode(value);
    }

    setLoading(false);
    return result;
  }

  return (
    <div className="ai-tools">
      <button onClick={() => callAPI('rephrase', { text, tone: 'shorter' })}>
        Зробити коротше
      </button>
      <button onClick={() => callAPI('seo_meta', { title: text, body: text })}>
        Згенерувати SEO
      </button>
      <button onClick={() => callAPI('headlines', { body: text })}>
        Альтернативні заголовки
      </button>
    </div>
  );
}

Терміни

  • Базова генерація чернетки + переформулювання — 2–3 дні
  • SEO мета + варіанти заголовків — плюс 1–2 дні
  • Генерація alt-text для зображень — плюс 1 день
  • Мультимовна підтримка — плюс 2–3 дні
  • Повна інтеграція з UI редактора + A/B тестування — 2–3 тижні