Автопостинг в Telegram, VK и LinkedIn одним скриптом на Python

Автопостинг в Telegram, VK и LinkedIn одним скриптом на Python

15.03.2026 0 Автор Павел

Каждая статья в моём блоге через 5 минут после публикации появляется в трёх соцсетях: Telegram-канале, VK-группе и LinkedIn. И я ни разу не заходил руками ни в одну из них, чтобы скопировать текст и нажать «Опубликовать».

Всё делает один Python-скрипт. Он берёт текстовые файлы с постами, адаптированными под каждую платформу, и через API публикует их автоматически — с обложкой, ссылкой и хэштегами. Одна команда в терминале — три поста в трёх соцсетях.

Расскажу, как это устроено, чем отличаются форматы постов на разных платформах, и покажу код.

Зачем автоматизировать постинг

Стандартный сценарий после публикации статьи в блог: открыл Telegram, написал текст, прикрепил картинку, отправил. Потом то же самое в VK. Потом в LinkedIn. Минимум 15-20 минут ручной работы — и это без учёта того, что формат поста надо адаптировать под каждую платформу.

Я выпускаю 3-5 статей в неделю. Если каждый раз копировать руками — это час-полтора еженедельно только на дистрибуцию. А ведь ещё нужно следить за форматами: Telegram поддерживает HTML-разметку, VK — нет, LinkedIn любит развёрнутый текст.

Решение: написал один скрипт, который делает всё сам. Вот что это даёт:

  • Скорость. Одна команда — три поста за 10 секунд
  • Адаптация. Каждый пост — в своём формате: HTML для TG, чистый текст для VK, развёрнутый для LinkedIn
  • Консистентность. Обложка, хэштеги, CTA — везде одинаково правильные
  • Нет ошибок. Забыл прикрепить картинку? Скопировал не тот текст? С кодом это невозможно

Три платформы — три формата

Главная ошибка — публиковать одинаковый текст везде. Каждая платформа поддерживает разное форматирование и имеет свою аудиторию:

✈️
Telegram
HTML
  • Жирный, курсив, ссылки
  • Кликабельный URL в тексте
  • Фото в посте
  • Нет OG-превью ссылок
  • Лимит: 1024 символа (caption)
🔵
VKонтакте
Plain text
  • Без HTML-разметки
  • Автоматическое превью ссылки
  • Фото на стене
  • Нативные хэштеги
  • Лимит: 2000 символов
💼
LinkedIn
Plain text
  • Без HTML-разметки
  • OG-превью подтягивается
  • Видео-посты
  • Развёрнутый формат
  • Лимит: 3000 символов

Поэтому я генерирую три разных текста для каждой статьи. Telegram-пост — короткий, с HTML-тегами <b> и <a href>. VK-пост — чистый текст, чуть развёрнутее. LinkedIn — самый подробный, с контекстом и цифрами.

Как устроен скрипт: publish_social.py

Весь автопостинг — один файл на Python, 400 строк. Внутри — функции для каждой платформы и CLI с подкомандами:

Python
# Telegram — Bot API
def send_telegram(text, image_path=None):
    # sendPhoto с caption (если есть картинка)
    # sendMessage с HTML parse_mode (если без)

# VK — API стены
def send_vk(text, image_path=None):
    # photos.getWallUploadServer → upload → saveWallPhoto
    # wall.post с attachment

# LinkedIn — REST API
def send_linkedin(text, video_path=None):
    # POST /rest/posts с commentary
    # Если video — initializeUpload → chunks → finalizeUpload

Каждая функция самодостаточна: принимает текст и опционально медиафайл, обращается к API платформы, возвращает ссылку на пост. Все credentials хранятся в .env и загружаются через python-dotenv.

Telegram: Bot API и HTML-форматирование

Telegram Bot API — самый простой из трёх. Два метода: sendMessage для текста и sendPhoto для фото с подписью.

1
POST sendPhoto / sendMessage
chat_id + caption/text + parse_mode=HTML + photo file
2
Ответ с message_id
Формируем ссылку: t.me/{channel_username}/{message_id}

Особенность Telegram: поддерживает HTML в тексте — <b> для жирного, <a href="..."> для ссылок. Это позволяет делать кликабельные CTA прямо в тексте поста, без голой URL.

Пример поста для Telegram:

HTML
🎬 <b>Генерирую Reels кодом. Без видеоредактора.</b>

 Python-скрипт собирает 5 слайдов на градиенте
 moviepy склеивает видео и накладывает музыку
 Готовый .mp4 за 30 секунд

👉 <a href="https://pavezlo.ru/ai/...">Разбираю подробно в блоге →</a>

#Reels #Python #автоматизация #pavezlo

Честно про рекламу и маркетинг

Разбираю реальные кейсы, делюсь цифрами и инструментами в Telegram-канале. Без воды и мотивационных цитат.

Подписаться на канал

VK: стена группы и автопревью ссылок

VK API сложнее Telegram в части медиа. Чтобы прикрепить картинку к посту на стене, нужно пройти три шага:

1
GET photos.getWallUploadServer
Получаем upload_url для группы
2
POST Upload файла
Загружаем фото на upload_url → получаем server, photo, hash
3
GET photos.saveWallPhoto
Сохраняем фото → получаем owner_id и photo_id для attachment
4
GET wall.post
Публикуем пост: message + attachments=photo{owner}_{id}

Зато VK автоматически генерирует OG-превью для ссылок — не нужно прикреплять картинку отдельно, если ссылка ведёт на блог с настроенным OpenGraph.

Текст VK-поста — чистый текст, без HTML. Ссылка — простым URL. VK сам превращает её в кликабельную карточку.

LinkedIn: REST API и видео-посты

LinkedIn API — самый сложный из трёх. Аутентификация через OAuth 2.0, токен живёт 60 дней (нужно обновлять), а для видео — трёхэтапная загрузка с чанками:

1
POST /rest/videos?action=initializeUpload
Указываем размер файла → получаем video URN и upload URLs для чанков
2
PUT Загрузка чанков по 4 МБ
Каждый чанк → отдельный PUT → собираем ETags
3
POST /rest/videos?action=finalizeUpload
Передаём video URN + ETags → видео финализируется
4
POST /rest/posts
Создаём пост с commentary + content.media.id = video URN

Для текстовых постов проще: один POST /rest/posts с полем commentary. LinkedIn сам подтягивает OG-превью, если в тексте есть ссылка.

LinkedIn-пост я всегда делаю длиннее — платформа любит развёрнутый контент с контекстом и цифрами.

Одна команда — три платформы

Запуск — одна команда в терминале:

Terminal — publish_social.py
$ py scripts/publish_social.py all \
–tg-file articles/social_tg.txt \
–vk-file articles/social_vk.txt \
–li-file articles/social_li.txt \
–image cover_preview.png

[OK] Telegram: https://t.me/pavezlomarketing/11
[OK] VK: https://vk.com/wall-209938534_1116
[OK] LinkedIn: https://www.linkedin.com/feed/update/urn:li:share:…

10 секунд — и пост появился на трёх платформах. С правильным форматированием, обложкой и ссылкой на статью.

Можно публиковать и по отдельности — для каждой платформы есть своя подкоманда:

Bash
# Только Telegram
py scripts/publish_social.py telegram --text-file social_tg.txt --image cover.png

# Только VK
py scripts/publish_social.py vk --text-file social_vk.txt --image cover.png

# Только LinkedIn (с видео)
py scripts/publish_social.py linkedin --text-file social_li.txt --video reels.mp4

Credentials: что нужно настроить

Все токены и ID хранятся в файле .env — он не коммитится в репозиторий:

🤖
TG_BOT_TOKEN
Токен от @BotFather
📢
TG_CHANNEL_ID
ID канала (@pavezlomarketing)
🔵
VK_ACCESS_TOKEN
Токен сообщества
👥
VK_GROUP_ID
ID группы (без минуса)
💼
LINKEDIN_ACCESS_TOKEN
OAuth 2.0 Bearer (60 дней)
🆔
LINKEDIN_PERSON_ID
Из /userinfo endpoint

Самое неудобное — LinkedIn: токен живёт 60 дней, потом надо обновлять. Telegram и VK — бессрочные.

Сравнение API трёх платформ

Параметр Telegram VKонтакте LinkedIn
Сложность API Простой Средний Сложный
HTML в тексте Да Нет Нет
OG-превью ссылки Нет Да Да
Фото в посте 1 запрос 3 запроса Через image URN
Видео-посты Есть Есть Чанками
Срок токена Бессрочный Бессрочный 60 дней
Лимит текста 1024 симв. 2000 симв. 3000 симв.

Как это встроено в контент-пайплайн

Автопостинг — часть большого конвейера. Полный цикл выглядит так:

  1. Написал статью — HTML-файл в articles/
  2. Проверил — скрипт check_article.py прогоняет 10 проверок
  3. Опубликовал в WordPress — через REST API, с обложкой и категорией
  4. Сгенерировал Reels — Python + Pillow + moviepy
  5. Опубликовал в соцсети — одной командой: TG + VK + LinkedIn
  6. VK Story + LinkedIn видео — дополнительная дистрибуция

От написания статьи до появления во всех каналах — 10-15 минут. Из них на автопостинг уходит 10 секунд.

Дистрибуция контента — половина успеха. Если статья выходит только в блоге — её никто не найдёт. Автоматизация снимает барьер «лень постить в три места».

Что в итоге: цифры

Результат: один скрипт для трёх платформ

10 с
на три поста
3
платформы
400
строк кода
0
ручных действий

Для сравнения: ручная публикация в три соцсети с адаптацией текста и загрузкой обложки — 15-20 минут. При 5 статьях в неделю — 1.5 часа ручной работы, которые скрипт экономит полностью.

Выводы

Автоматический постинг — это не сложная инженерная задача. Telegram Bot API осваивается за час, VK API — за два, LinkedIn REST API — за полдня (из-за OAuth и видео-загрузки). Всё вместе — один вечер работы, который потом экономит часы каждую неделю.

Главный принцип: каждая платформа — свой формат. Не копируй один текст во все соцсети. Telegram любит короткие посты с HTML-разметкой. VK — чистый текст с ссылкой. LinkedIn — развёрнутые тексты с контекстом.

Весь скрипт publish_social.py написан в Claude Code — от первой функции до CLI. Если делаете контент-пайплайн — автоматизируйте дистрибуцию первой. Это самая рутинная часть, и она автоматизируется проще всего.

Я собрал шаблоны, которые использую в работе: медиаплан, учёт рабочего времени, аналитические отчёты. Скачайте бесплатно на странице шаблонов.

Шаблоны для маркетинга

Профессиональные шаблоны для организации работы:
медиапланирование, учёт времени, аналитические отчёты
Telegram-канал Павезло маркетинг Павезло во ВКонтакте

Нужна автоматизация дистрибуции контента?

Расскажите про задачу — разберём, как ускорить публикацию с ИИ и кодом.

Написать мне