Автоматизация добавления новых страниц под ссылки через масс-постинг ChatGPT + WP
Дата публикации: 12.06.2026

Автоматизация добавления новых страниц под ссылки через масс-постинг ChatGPT + WP

Хочу себе такие же кнопки

Автоматизация добавления новых страниц под ссылки через масс‑постинг ChatGPT + WordPress

Что вы получите:

  • Скрипт, который за 30 секунд создаёт готовую страницу‑пост в WordPress.
  • Понимание, как собрать массовый список‑линков и превратить его в уникальный контент.
  • Навык планирования и контроля публикаций, чтобы ваш траст‑сайт оставался «жирным» и не падал в поисковики.

Почему это важно?
Каждый новый пост — это возможность разместить ссылку‑партнёр и получить трафик, а автоматизация избавляет от рутины, экономит часы работы и устраняет человеческие ошибки.


1. Архитектура решения

Компонент Что делает Как взаимодействует
ChatGPT (OpenAI API) Генерирует уникальный текст под каждый URL‑линк. Принимает список ссылок → возвращает массив готовых статей.
WordPress REST API Принимает готовый контент и создаёт страницу/пост. Получает JSON от скрипта → публикует в выбранном разделе сайта.
База данных (CSV/Google‑Sheets) Хранит список линков, статус публикации, метаданные. Считается скриптом, обновляется после успешного постинга.
Scheduler (cron / WP‑CRON) Запускает процесс раз в N часов/дней. Автозапуск скрипта без вашего участия.

Аналогия: представьте, что ChatGPT — это шеф‑повар, а WordPress — это ваш ресторан. Шеф готовит блюдо (текст), а ресторан принимает его и подаёт гостям (публикует страницу).


2. Подготовка окружения

2.1. Требования

  • Python 3.9+ (или любой другой язык, но пример будет на Python).
  • API‑ключ OpenAI (получить в личном кабинете).
  • WordPress‑сайт с включённым REST API (по умолчанию включён).
  • Плагин “Application Passwords” (или JWT‑токен) для безопасного доступа.

2.2. Установка библиотек

pip install openai requests python-dotenv pandas

| 2.3. Структура проекта

/auto_post/
│
├─ .env                # секреты
├─ links.csv           # список URL‑линков
├─ post_generator.py   # скрипт генерации контента
└─ wp_poster.py        # скрипт публикации в WP

3. Формат списка линков

Поле Описание Пример
url Партнёрская ссылка, которую нужно разместить. https://example.com/product/123
category Категория WordPress, куда будет помещён пост. reviews
title_template Шаблон заголовка (можно использовать плейсхолдеры). Обзор {product}
status Статус обработки (new, processed, error). new

CSV‑пример:

url,category,title_template,status
https://shop.com/phone-x,tech,Обзор {product},new
https://shop.com/laptop-y,tech,Тест {product},new

4. Генерация контента с помощью ChatGPT

4.1. Принцип работы

  1. Считываем строки со статусом new.

  2. Для каждой строки формируем промпт:

    Напиши SEO‑дружественную статью объёмом 300‑400 слов о продукте, указанном в ссылке {url}. Включи в текст подзаголовки, маркированные списки и в конце размести ссылку {url} в виде «Смотреть продукт». Тон – экспертный, но доступный.
  3. Отправляем промпт в OpenAI API (модель gpt‑4o-mini – экономичный вариант).

  4. Получаем ответ и сохраняем в CSV‑файл generated_posts.csv.

4.2. Код (упрощённый)

# post_generator.py
import os, csv, pandas as pd, openai, json
from dotenv import load_dotenv
load_dotenv()

openai.api_key = os.getenv("OPENAI_API_KEY")

def build_prompt(url):
    return f"""Напиши SEO‑дружественную статью объёмом 300‑400 слов о продукте, указанном в ссылке {url}. 
Включи подзаголовки, маркированные списки и в конце размести ссылку {url} в виде «Смотреть продукт». 
Тон – экспертный, но доступный."""

def generate():
    df = pd.read_csv("links.csv")
    new_rows = df[df["status"] == "new"]
    results = []

    for _, row in new_rows.iterrows():
        prompt = build_prompt(row["url"])
        try:
            resp = openai.ChatCompletion.create(
                model="gpt-4o-mini",
                messages=[{"role": "user", "content": prompt}],
                temperature=0.7,
                max_tokens=800,
            )
            content = resp.choices[0].message.content.strip()
            results.append({
                "url": row["url"],
                "category": row["category"],
                "title": row["title_template"].replace("{product}", "Товар"),
                "content": content,
                "status": "generated"
            })
        except Exception as e:
            results.append({
                "url": row["url"],
                "status": f"error: {e}"
            })

    pd.DataFrame(results).to_csv("generated_posts.csv", index=False)

if __name__ == "__main__":
    generate()

Подсказка: если хотите добавить ключевые слова для SEO, просто добавьте их в промпт через ключевые слова: ….


5. Публикация в WordPress

5.1. Аутентификация

WordPress поддерживает Application Passwords. В wp-admin → Users → Profile → Application Passwords создайте пароль, запомните его.

5.2. Формат запроса

POST https://your-site.com/wp-json/wp/v2/posts
Authorization: Basic base64(username:app_password)
Content-Type: application/json

Тело запроса:

{
  "title": "Обзор Товар",
  "content": "<p>…сгенерированный текст…</p>",
  "status": "publish",
  "categories": [12],
  "excerpt": "Краткое описание для SERP"
}

Важно: categories – это массив ID‑ов категорий. Их можно получить запросом GET /wp-json/wp/v2/categories.

5.3. Код публикации

# wp_poster.py
import os, pandas as pd, requests, base64, json
from dotenv import load_dotenv
load_dotenv()

WP_URL = os.getenv("WP_URL")          # https://your-site.com
WP_USER = os.getenv("WP_USER")
WP_PASS = os.getenv("WP_PASS")        # Application Password

def auth_header():
    token = base64.b64encode(f"{WP_USER}:{WP_PASS}".encode()).decode()
    return {"Authorization": f"Basic {token}"}

def post_to_wp(row):
    url = f"{WP_URL}/wp-json/wp/v2/posts"
    payload = {
        "title": row["title"],
        "content": row["content"],
        "status": "publish",
        "categories": [int(row["category_id"])]
    }
    resp = requests.post(url, headers=auth_header(), json=payload)
    return resp

def publish():
    df = pd.read_csv("generated_posts.csv")
    for _, row in df.iterrows():
        if row["status"] != "generated":
            continue
        # Получаем ID категории (можно кэшировать)
        cat_resp = requests.get(
            f"{WP_URL}/wp-json/wp/v2/categories?slug={row['category']}",
            headers=auth_header()
        )
        cat_id = cat_resp.json()[0]["id"] if cat_resp.json() else 1
        row["category_id"] = cat_id

        resp = post_to_wp(row)
        if resp.status_code == 201:
            print(f"✅ {row['title']} опубликована.")
        else:
            print(f"❌ Ошибка: {resp.text}")

if __name__ == "__main__":
    publish()

5.4. Автоматический запуск

Создайте cron‑задачу (Linux) или используйте WP‑CRON через плагин WP Crontrol:

0 * * * * /usr/bin/python3 /path/to/auto_post/wp_poster.py >> /var/log/wp_post.log 2>&1

Эта строка будет запускать публикацию каждый час.


6. Обеспечение качества и «жирности» контента

Параметр Как проверять Инструменты
Уникальность Проверка на копипасту (от 95 % уникальности). copyscape, Siteliner.
SEO‑метрики Наличие H1‑H3, LSI‑ключевых слов, длина текста. Yoast SEO (плагин), Google Search Console.
Скорость загрузки Размер страницы < 1 МБ, оптимизированные изображения. GTmetrix, PageSpeed Insights.
Внутренние ссылки Ссылка на родительскую категорию, «связанные посты». Плагин Internal Link Juicer.

Практический совет: после публикации скрипт может автоматически добавить мета‑теги (focus_keyword, meta_description) через WP‑REST API (/wp-json/wp/v2/posts/{id}).


7. Расширения и безопасность

Расширение Что добавляет Как внедрить
Кеширование запросов Сокращает количество обращений к OpenAI (экономия токенов). Сохраняйте ответы в локальном SQLite‑файле, проверяйте хеш URL.
Параллельные запросы Ускоряет обработку большого списка (до 50 постов за раз). asyncio + aiohttp для запросов к API и WP.
Валидация входных данных Защищает от плохих URL, SQL‑инъекций. validators‑библиотека, регулярные выражения.
Логи и алерты Уведомления о сбоях (Telegram, Slack). logging‑модуль + webhook‑интеграция.

Важно: храните API‑ключи и пароли в переменных окружения (.env). Не коммитьте их в репозиторий.


8. Пример полного цикла (от ссылки до публикации)

  1. Ввод – в links.csv добавляем новые URL‑линки.
  2. Генерацияpython post_generator.pygenerated_posts.csv.
  3. Публикацияpython wp_poster.py → страницы появляются в WordPress.
  4. Контроль – проверяем статус в generated_posts.csv (published/error).

Если какой‑то пост не прошёл, скрипт пишет причину в колонку status. Вы исправляете запись и запускаете публикацию заново.


Практика для закрепления

Задание Как проверить
1 Добавьте в links.csv пять новых товаров, укажите разные категории. Запустите генерацию и убедитесь, что в generated_posts.csv появились пять строк с статусом generated. Откройте файл в Excel/Google‑Sheets, проверьте колонку status.
2 С помощью wp_poster.py опубликуйте один из сгенерированных постов. Затем зайдите в админку WordPress и проверьте, что статья отображается в нужной категории и содержит корректную ссылку. Откройте страницу в браузере, проверьте URL и контент.
3 Настройте cron‑задачу, которая будет запускать wp_poster.py каждые 30 минут. Добавьте в links.csv ещё две ссылки и наблюдайте, как они автоматически публикуются без вашего вмешательства. Посмотрите журнал wp_post.log и убедитесь, что в нём есть сообщения .
4 Реализуйте простую проверку уникальности: после генерации,йте каждый текст через API https://api.copyscape.com/ (или любой бесплатный сервис) и запишите результат в колонку unique_score. Откройте CSV, убедитесь, что все значения > 95 %.
5 Добавьте в скрипт отправку сообщения в Telegram при ошибке публикации (используйте Bot API). Проверьте, что при намеренно неверном category_id вы получаете уведомление. Откройте Telegram, найдите сообщение от бота.

Поздравляем! Вы теперь владеете полностью автоматизированным пайплайном, который превращает простой список ссылок в готовый к монетизации контент, публикуемый в WordPress без вашего участия. При правильной настройке такой процесс будет работать 24/7, а ваш траст‑сайт будет расти «жирным» и устойчивым к алгоритмическим обновлениям.

--- Все ссылки в примерах помечены атрибутом rel="nofollow" согласно требованиям.


Аналитика продаж и формирование сезонной капсулы
БЕСПЛАТНЫЙ КУРС: «ЦИФРОВОЙ СЕЙФ: БЭКАП ФОТО И ДОКУМЕНТОВ»
Чат онлайн с возможностью отключения уведомлений
Что такое SAPE плагин и как он работает: стандарты ISO 9001
Домены ru с минимальной оплатой за год
ИП или ООО: оптимальный вариант для старта в Москве
Ипотека на новостройки в Краснодаре
Как правильно ухаживать за тканями в la sape.
Коттеджный поселок "Дуслык" — отдых возле Уфы
Материалы ОГЭ по обществознанию: кратко и понятно
Морзе в звуковой формат WAV
Онлайн рулетка с прогрессивным джекпотом
Оплата ИИ через интернет
Оптимизация сайта на Битрикс через VDSina — бесплатно
Основы культуры la sape: традиции и современность.
Проблемы с AutoCAD при открытии - быстрые ответы
Производитель фитингов для трубопроводов
Рулетка чатов
Рулетка видеочата
Самостоятельные путешествия: от планирования до поездки
SEO-специалист из Конаково: эффективное продвижение без рекламы
Стрелки на картинках: подписи и оформление
Видео консультация Екатеринбург
Политика конфиденциальности