Реализация планировщика автопостинга контента из сайта в соцсети

Наша компания занимается разработкой, поддержкой и обслуживанием сайтов любой сложности. От простых одностраничных сайтов до масштабных кластерных систем построенных на микро сервисах. Опыт разработчиков подтвержден сертификатами от вендоров.

Разработка и обслуживание любых видов сайтов:

Информационные сайты или веб-приложения
Сайты визитки, landing page, корпоративные сайты, онлайн каталоги, квиз, промо-сайты, блоги, новостные ресурсы, информационные порталы, форумы, агрегаторы
Сайты или веб-приложения электронной коммерции
Интернет-магазины, B2B-порталы, маркетплейсы, онлайн-обменники, кэшбэк-сайты, биржи, дропшиппинг-платформы, парсеры товаров
Веб-приложения для управления бизнес-процессами
CRM-системы, ERP-системы, корпоративные порталы, системы управления производством, парсеры информации
Сайты или веб-приложения электронных услуг
Доски объявлений, онлайн-школы, онлайн-кинотеатры, конструкторы сайтов, порталы предоставления электронных услуг, видеохостинги, тематические порталы

Это лишь некоторые из технических типов сайтов, с которыми мы работаем, и каждый из них может иметь свои специфические особенности и функциональность, а также быть адаптированным под конкретные потребности и цели клиента

Предлагаемые услуги
Показано 1 из 1 услугВсе 2065 услуг
Реализация планировщика автопостинга контента из сайта в соцсети
Средняя
~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

Реализация планировщика автопостинга контента из сайта в соцсети

Планировщик — это не просто «поставить задачу в очередь». Это инструмент управления контент-потоком: очередь постов на несколько недель вперёд, визуальный календарь, ограничение частоты, приоритеты, паузы по расписанию (ночь, выходные).

Модель данных

CREATE TABLE scheduled_posts (
    id              SERIAL PRIMARY KEY,
    source_type     VARCHAR(50),        -- 'product', 'promotion', 'article', 'manual'
    source_id       INTEGER,
    channel         VARCHAR(30),        -- 'vk', 'telegram', 'instagram', 'ok'
    scheduled_at    TIMESTAMP NOT NULL,
    status          VARCHAR(20) DEFAULT 'pending',  -- pending|processing|sent|failed|cancelled
    attempts        SMALLINT DEFAULT 0,
    last_error      TEXT,
    external_post_id VARCHAR(100),      -- ID поста на платформе после публикации
    content         JSONB,              -- сериализованный контент (текст, медиа, ссылки)
    created_at      TIMESTAMP DEFAULT NOW()
);

CREATE INDEX idx_scheduled_posts_fire ON scheduled_posts (scheduled_at, status)
    WHERE status = 'pending';

Диспетчер задач

Диспетчер запускается каждую минуту через cron (или как демон с sleep-loop):

def dispatch_pending_posts():
    now = datetime.utcnow()
    posts = db.query("""
        SELECT * FROM scheduled_posts
        WHERE status = 'pending'
          AND scheduled_at <= %s
        ORDER BY scheduled_at ASC
        LIMIT 50
        FOR UPDATE SKIP LOCKED
    """, [now])

    for post in posts:
        db.execute("UPDATE scheduled_posts SET status='processing' WHERE id=%s", [post.id])
        enqueue_post_job(post)

FOR UPDATE SKIP LOCKED — защита от двойной обработки при нескольких воркерах.

Ограничение частоты (rate limiting)

Каждая платформа имеет лимиты:

Платформа Лимит
Instagram Graph API 25 постов/сутки на аккаунт
ВКонтакте 50 постов/сутки на сообщество
Telegram Bot ~30 сообщений/сек на бота
Facebook Page без жёсткого лимита, soft throttle

Перед постановкой в очередь диспетчер проверяет счётчики через Redis:

key = f"post_count:{channel}:{date.today().isoformat()}"
count = redis.incr(key)
redis.expire(key, 86400)

if count > DAILY_LIMITS[channel]:
    reschedule_to_tomorrow(post)
    return

Временны́е окна публикации

Настройки по каналу определяют, когда можно публиковать:

{
  "vk": {
    "allowed_hours": [9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20],
    "allowed_days": [1, 2, 3, 4, 5, 6, 7],
    "min_interval_minutes": 30
  },
  "telegram": {
    "allowed_hours": [8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21],
    "allowed_days": [1, 2, 3, 4, 5, 6, 7],
    "min_interval_minutes": 15
  }
}

Если пост запланирован на ночное время, диспетчер сдвигает его на ближайшее разрешённое окно.

Умное распределение

При включении опции smart_schedule система не ставит все посты в одно время. Алгоритм:

  1. Берёт все посты со статусом pending без конкретного времени
  2. Вычисляет доступные слоты в ближайшие 7 дней с учётом уже запланированных
  3. Равномерно распределяет посты по слотам с минимальным интервалом

Это актуально для интернет-магазинов с сотнями товаров — чтобы не публиковать всё разом после импорта каталога.

Интерфейс управления

В CMS — страница «Очередь постов» с:

  • Таблицей запланированных постов с фильтрами по каналу, статусу, дате
  • Кнопками «Опубликовать сейчас», «Перенести», «Отменить»
  • Календарным видом (месяц/неделя) с drag-and-drop переносом слотов
  • Историей отправленных постов с ссылками на опубликованные записи

Сроки реализации

Планировщик с базовыми правилами и двумя каналами — 6–8 рабочих дней. Умное распределение, календарный UI, rate limiting по всем платформам — ещё 3–5 дней.