Когда-то делал подобное человечку. Получился костыль, но рабочий, вдруг возьмешь за идею и сделаешь свое. Значит, человек хотел, что бы не ВСЕ статьи публиковались в телеграм-вк-дискорд, а определенные. Так вот, когда он вручную делал пост в телеграм канале - ничего не "перекидывалось". Теперь к делу (идее).
Человек был обычным пользователем и все должно было быть "человекоподобно" и просто. Так вот, я сделал ему простую форму публикации ПОСТА на его сайте. Понятно, выделил то, что ему нужно. Фото и текст. Записывалось это все в JSON файл. Можно и в БД, как удобнее, объем маленький. Далее в уже имеющегося бота библиотекой asincio, методом sleep каждый час проверял на наличие новых ПОСТОВ в БД и с помощью методов библиотек aiogram, discord-webhook и vk_api делал посты в группы-каналы. Вот ЧАСТЬ конечного кода, остальное не хочу копаться (сама функция и куча донастроек и т.п.). Можно написать, что б прям сразу же публиковалось, но я не помню почему он так захотел, была причина.
import aiogram
import vk_api
from discord_webhook import DiscordWebhook
async def bids():
fresh_bids = get_freshbids() ### Функция сортировки новых/старых, разбивка и присвоение переменных и т.п.
### Разное оформление для каждой СОЦ СЕТИ
tgbid = f" <u>ПОСТ (из бд)</u>"
discbid = f" <u>ПОСТ (из бд)</u>"
vkbid = f" <u>ПОСТ (из бд)</u>"
### ПОСТ В ТГ
await bot.send_message(-10000000000, tgbid, reply_markup=ХХХ,disable_web_page_preview=True)
### ПОСТ В ДИСК
webhook = DiscordWebhook(url='https://discord.com/api/webhooks/969вава4931/n5CваE САМ ВЕБХУК', content=f'{discbid}')
response = webhook.execute()
### ПОСТ В ВК
authorize.method('wall.post', {'owner_id': -1000000000, 'message': vkbid})
await asyncio.sleep(3600)
P.S ЕСЛИ ОЧЕНЬ КОРОТКО тебе нужен бот, который все посты в канале ТГ будет записывать в БД, либо в переменную, а после методами vk_api публиковать пост в ВК. Все просто)