Комментарии 2
Хорошая статья, особенно про «кто первый обновил сессию, тот и выбил второго» — сам на это наступал.
Одно место я бы перепроверил: уведомление о сбое. В строке cron переменных BOT_TOKEN и CHAT_ID нет, а cron не читает .bashrc и .profile. Если они заданы там, то при сбое os.environ['BOT_TOKEN'] даёт KeyError, его ловит тот же except, в poster.log уходит «не смог написать в Телеграм», и вы ничего не узнаёте. У меня ровно так сторож автопостинга находил проблемы и молчал: из терминала всё работало, из cron нет. Если переменные подгружаются из файла внутри скрипта, этой проблемы нет.
Что помогло:
— сначала записывать находку в файл и только потом отправлять, чтобы она не терялась вместе с уведомлением;
— раз в неделю отправлять сообщение «жив, в очереди N», тогда тишина сама становится сигналом;
— один раз запустить отправку через env -i с тем же окружением, что у cron.
И мелочь: wait_for_url подтверждает только, что редактор закрылся. Для журнала я бы ещё открывал адрес поста в контексте без входа и проверял, что там есть заголовок. Это дешёвая проверка, что пост действительно вышел, а не пропал на модерации.

Автопостинг в TenChat без API: Playwright, редактор Quill и вставка через ClipboardEvent