uNews — единая система публикации новостей, патчноутов и отчётов разработки по проектам Антона.
Главная идея: каждый проект хранит свои новости в папке news/, а uNews забирает эти патчноуты и публикует их в Telegram-канал через бота.
sendMediaGroup;images;image как запасной вариант для одной картинки;.md.500 Tower DefenseuSugaruDreamuChurchGOARTTime Riftnews/.news/
├── 2026-06-14-500td-v1-0-2-pages-preview.md
├── 2026-06-14-500td-v1-0-2-pages-preview.png
└── 2026-06-14-500td-v1-0-2-pages-preview_2.png
type: patch
project: 500 Tower Defense
series: 500td
title: Версия 1.0.2 подготовлена для веб-запуска
version: 1.0.2
repo_url: https://github.com/sunpole/500
web_url: https://sunpole.github.io/500/previews/500td/1.0.2/
image: 2026-06-14-500td-v1-0-2-pages-preview.png
images:
- 2026-06-14-500td-v1-0-2-pages-preview_2.png
- 2026-06-14-500td-v1-0-2-pages-preview.png
type — тип публикации: intro, patch, report, note.project — название проекта.series — короткий ключ серии, например 500td, usugar, udream.title — заголовок публикации.version — версия, если она есть.repo_url — ссылка на GitHub-репозиторий.web_url — ссылка на рабочую веб-версию или preview.image — одна картинка или fallback.images — список картинок для Telegram-альбома.Если указано images, порядок картинок берётся строго из YAML. Первая картинка получает подпись, остальные отправляются без подписи.
Внутри патчноута можно добавить блок:
Короткий текст для Telegram:
Текст после этого блока будет использован как короткая подпись к Telegram-публикации. Это удобно, если полный патчноут длинный.
Проверка без отправки:
npm run publish:projects:check -- "../500_td_game/news/2026-06-14-500td-v1-0-2-pages-preview.md"
Ожидаемый результат для альбома:
{
"method": "sendMediaGroup",
"captionWasTruncated": false
}
Отправка в Telegram:
npm run publish:projects -- "../500_td_game/news/2026-06-14-500td-v1-0-2-pages-preview.md"
Локальные секреты должны храниться только в .env. Этот файл нельзя добавлять в GitHub.
@uNewsDev_botТекущий workflow Collect project news пока умеет вручную проверить структуру проекта и наличие папки news/.
Следующий этап — сделать центральный publisher для всех репозиториев автора:
projects.json;data/published.json;Проект находится на этапе первичной настройки.
Уже проверено на практике:
500TD v1.0.2 опубликован с двумя изображениями;publish:projects:check работает.MIT