uNews

GitHub Pages Telegram License: MIT

uNews — единая система публикации новостей, патчноутов и отчётов разработки по проектам Антона.

Главная идея: каждый проект хранит свои новости в папке news/, а uNews забирает эти патчноуты и публикует их в Telegram-канал через бота.

Что уже умеет

Основные проекты

Как работает система

  1. В репозитории проекта создаётся папка news/.
  2. В неё добавляется Markdown-файл патчноута.
  3. Рядом кладётся изображение или несколько изображений.
  4. uNews читает YAML и текст патчноута.
  5. Скрипт отправляет публикацию в Telegram-канал.

Пример структуры патчноута

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

Пример YAML

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

Поля

Если указано images, порядок картинок берётся строго из YAML. Первая картинка получает подпись, остальные отправляются без подписи.

Короткий текст для Telegram

Внутри патчноута можно добавить блок:

Короткий текст для 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.

Telegram

GitHub Actions

Текущий workflow Collect project news пока умеет вручную проверить структуру проекта и наличие папки news/.

Следующий этап — сделать центральный publisher для всех репозиториев автора:

Статус

Проект находится на этапе первичной настройки.

Уже проверено на практике:

Лицензия

MIT