Автопостинг в Telegram, VK и LinkedIn одним скриптом на Python
Каждая статья в моём блоге через 5 минут после публикации появляется в трёх соцсетях: Telegram-канале, VK-группе и LinkedIn. И я ни разу не заходил руками ни в одну из них, чтобы скопировать текст и нажать «Опубликовать».
Всё делает один Python-скрипт. Он берёт текстовые файлы с постами, адаптированными под каждую платформу, и через API публикует их автоматически — с обложкой, ссылкой и хэштегами. Одна команда в терминале — три поста в трёх соцсетях.
Расскажу, как это устроено, чем отличаются форматы постов на разных платформах, и покажу код.
Зачем автоматизировать постинг
Стандартный сценарий после публикации статьи в блог: открыл Telegram, написал текст, прикрепил картинку, отправил. Потом то же самое в VK. Потом в LinkedIn. Минимум 15-20 минут ручной работы — и это без учёта того, что формат поста надо адаптировать под каждую платформу.
Я выпускаю 3-5 статей в неделю. Если каждый раз копировать руками — это час-полтора еженедельно только на дистрибуцию. А ведь ещё нужно следить за форматами: Telegram поддерживает HTML-разметку, VK — нет, LinkedIn любит развёрнутый текст.
Решение: написал один скрипт, который делает всё сам. Вот что это даёт:
- Скорость. Одна команда — три поста за 10 секунд
- Адаптация. Каждый пост — в своём формате: HTML для TG, чистый текст для VK, развёрнутый для LinkedIn
- Консистентность. Обложка, хэштеги, CTA — везде одинаково правильные
- Нет ошибок. Забыл прикрепить картинку? Скопировал не тот текст? С кодом это невозможно
Три платформы — три формата
Главная ошибка — публиковать одинаковый текст везде. Каждая платформа поддерживает разное форматирование и имеет свою аудиторию:
- ✓ Жирный, курсив, ссылки
- ✓ Кликабельный URL в тексте
- ✓ Фото в посте
- ✗ Нет OG-превью ссылок
- Лимит: 1024 символа (caption)
- ✗ Без HTML-разметки
- ✓ Автоматическое превью ссылки
- ✓ Фото на стене
- ✓ Нативные хэштеги
- Лимит: 2000 символов
- ✗ Без HTML-разметки
- ✓ OG-превью подтягивается
- ✓ Видео-посты
- ✓ Развёрнутый формат
- Лимит: 3000 символов
Поэтому я генерирую три разных текста для каждой статьи. Telegram-пост — короткий, с HTML-тегами <b> и <a href>. VK-пост — чистый текст, чуть развёрнутее. LinkedIn — самый подробный, с контекстом и цифрами.
Как устроен скрипт: publish_social.py
Весь автопостинг — один файл на Python, 400 строк. Внутри — функции для каждой платформы и CLI с подкомандами:
# 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 для фото с подписью.
Особенность Telegram: поддерживает HTML в тексте — <b> для жирного, <a href="..."> для ссылок. Это позволяет делать кликабельные CTA прямо в тексте поста, без голой URL.
Пример поста для Telegram:
🎬 <b>Генерирую Reels кодом. Без видеоредактора.</b> • Python-скрипт собирает 5 слайдов на градиенте • moviepy склеивает видео и накладывает музыку • Готовый .mp4 за 30 секунд 👉 <a href="https://pavezlo.ru/ai/...">Разбираю подробно в блоге →</a> #Reels #Python #автоматизация #pavezlo
Честно про рекламу и маркетинг
Разбираю реальные кейсы, делюсь цифрами и инструментами в Telegram-канале. Без воды и мотивационных цитат.
Подписаться на каналVK: стена группы и автопревью ссылок
VK API сложнее Telegram в части медиа. Чтобы прикрепить картинку к посту на стене, нужно пройти три шага:
Зато VK автоматически генерирует OG-превью для ссылок — не нужно прикреплять картинку отдельно, если ссылка ведёт на блог с настроенным OpenGraph.
Текст VK-поста — чистый текст, без HTML. Ссылка — простым URL. VK сам превращает её в кликабельную карточку.
LinkedIn: REST API и видео-посты
LinkedIn API — самый сложный из трёх. Аутентификация через OAuth 2.0, токен живёт 60 дней (нужно обновлять), а для видео — трёхэтапная загрузка с чанками:
Для текстовых постов проще: один POST /rest/posts с полем commentary. LinkedIn сам подтягивает OG-превью, если в тексте есть ссылка.
LinkedIn-пост я всегда делаю длиннее — платформа любит развёрнутый контент с контекстом и цифрами.
Одна команда — три платформы
Запуск — одна команда в терминале:
10 секунд — и пост появился на трёх платформах. С правильным форматированием, обложкой и ссылкой на статью.
Можно публиковать и по отдельности — для каждой платформы есть своя подкоманда:
# Только 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 — он не коммитится в репозиторий:
Самое неудобное — LinkedIn: токен живёт 60 дней, потом надо обновлять. Telegram и VK — бессрочные.
Сравнение API трёх платформ
| Параметр | Telegram | VKонтакте | |
|---|---|---|---|
| Сложность API | Простой | Средний | Сложный |
| HTML в тексте | Да | Нет | Нет |
| OG-превью ссылки | Нет | Да | Да |
| Фото в посте | 1 запрос | 3 запроса | Через image URN |
| Видео-посты | Есть | Есть | Чанками |
| Срок токена | Бессрочный | Бессрочный | 60 дней |
| Лимит текста | 1024 симв. | 2000 симв. | 3000 симв. |
Как это встроено в контент-пайплайн
Автопостинг — часть большого конвейера. Полный цикл выглядит так:
- Написал статью — HTML-файл в
articles/ - Проверил — скрипт
check_article.pyпрогоняет 10 проверок - Опубликовал в WordPress — через REST API, с обложкой и категорией
- Сгенерировал Reels — Python + Pillow + moviepy
- Опубликовал в соцсети — одной командой: TG + VK + LinkedIn
- VK Story + LinkedIn видео — дополнительная дистрибуция
От написания статьи до появления во всех каналах — 10-15 минут. Из них на автопостинг уходит 10 секунд.
Дистрибуция контента — половина успеха. Если статья выходит только в блоге — её никто не найдёт. Автоматизация снимает барьер «лень постить в три места».
Что в итоге: цифры
Результат: один скрипт для трёх платформ
Для сравнения: ручная публикация в три соцсети с адаптацией текста и загрузкой обложки — 15-20 минут. При 5 статьях в неделю — 1.5 часа ручной работы, которые скрипт экономит полностью.
Выводы
Автоматический постинг — это не сложная инженерная задача. Telegram Bot API осваивается за час, VK API — за два, LinkedIn REST API — за полдня (из-за OAuth и видео-загрузки). Всё вместе — один вечер работы, который потом экономит часы каждую неделю.
Главный принцип: каждая платформа — свой формат. Не копируй один текст во все соцсети. Telegram любит короткие посты с HTML-разметкой. VK — чистый текст с ссылкой. LinkedIn — развёрнутые тексты с контекстом.
Весь скрипт publish_social.py написан в Claude Code — от первой функции до CLI. Если делаете контент-пайплайн — автоматизируйте дистрибуцию первой. Это самая рутинная часть, и она автоматизируется проще всего.
Я собрал шаблоны, которые использую в работе: медиаплан, учёт рабочего времени, аналитические отчёты. Скачайте бесплатно на странице шаблонов.
Нужна автоматизация дистрибуции контента?
Расскажите про задачу — разберём, как ускорить публикацию с ИИ и кодом.
Написать мне