TARS to autorski system, który zarządza zestawem mini-modułów wspierających pracę redakcji „Gazety Wyborczej” i „Wyborcza.pl”. Jako orkiestrator koordynuje i uruchamia zadania według harmonogramu, dostarcza im dane wejściowe, odbiera wyniki i udostępnia je dalej. Każdy moduł działa niezależnie i odpowiada za inne zadanie — od pobierania danych rynkowych, przez monitoring zdarzeń, po przygotowanie materiałów do publikacji — a nawet przesyłanie alertów. TARS działa w pełni autonomicznie.
Masz pytania, lub chciałbyś wykorzystać jakieś dane do swojego projektu poza „Wyborczą”? tomasz.lebioda@wyborcza.pl
Dane w formacie CSV są dostępne publicznie. Możesz z nich korzystać w swoich projektach pod warunkiem podania źródła: Tomasz Lebioda / Wyborcza.pl.
Moduły
Dane rynkowe (market-data)
Codzienne pobieranie danych finansowych z trzech źródeł:
- Yahoo Finance — indeksy giełdowe (DAX, S&P 500, NASDAQ, WIG20, Nikkei 225…), kryptowaluty (Bitcoin, Ethereum, Solana…), kursy walut (USD/PLN, EUR/PLN, GBP/PLN), surowce (ropa, gaz, złoto, srebro), akcje spółek (Tesla, Apple, NVIDIA, CD Projekt, KGHM…)
- Stooq.pl — WIG20, WIG, WIG Nieruchomości, InPost
- NBP — stopy procentowe (referencyjna, lombardowa, depozytowa, redyskonta, dyskonta weksli) — dane historyczne od 1998 roku
📄 Wynik: market-data.csv
Ceny paliw (petrol-data)
Tygodniowe średnie ceny detaliczne paliw w Polsce:
- PB95, PB98, Diesel (ON), LPG
- Źródło: Reflex (GraphQL API)
📄 Wynik: petrol-data.csv
Ceny energii elektrycznej (electricity-data)
Dzienne hurtowe ceny energii elektrycznej w Europie:
- 26 krajów w formacie pivot (daty jako wiersze, kraje jako kolumny)
- Dwa warianty walutowe — EUR i PLN (przeliczenie po kursie NBP)
- Źródło: Ember Energy
📄 Wyniki: europe-electricity-data-eur.csv · europe-electricity-data-pln.csv
Oprócz statycznych CSV-ek dostępne jest też dynamiczne API z filtrowaniem, konwersją walut i różnymi formatami wyjściowymi:
Bazowy URL: https://europe-electricity-proxy.tlebioda.workers.dev/
Parametry:
| Parametr | Opis | Domyślnie |
|---|---|---|
days | Liczba ostatnich dni | 90 |
start / end | Zakres dat (YYYY-MM-DD) | — |
countries | Kody krajów przez przecinek (np. PL,DE,FR) | wszystkie |
pivot=1 | Kraje jako kolumny, daty jako wiersze | wyłączony |
latest=1 | Tylko najnowszy dzień | wyłączony |
currency | EUR, PLN lub BOTH | EUR |
format | csv lub json | csv |
Przykłady:
- Najnowsze ceny (mapa):
/?latest=1 - Ostatnie 90 dni, pivot:
/?days=90&pivot=1 - PL, DE, FR w PLN za rok:
/?days=365&countries=PL,DE,FR&pivot=1¤cy=PLN - Najnowsze w JSON:
/?latest=1&format=json
Wyniki sportowe (scores-data)
Tabele ligowe i rankingi aktualizowane co godzinę:
- Piłka nożna — Ekstraklasa, Premier League, Bundesliga, La Liga, Serie A, Ligue 1
- Tenis — rankingi ATP i WTA
- Źródła: Football-Data.org API, tennisexplorer.com, ekstraklasa.org
📄 Wyniki: ekstraklasa.csv · premierleague.csv · bundesliga.csv · laliga.csv · seriea.csv · ligue1.csv · atpranking.csv · wtaranking.csv
Mapa zagranicznych tekstów (zagranica-mapa)
Dane do interaktywnej mapy Leaflet z artykułami zagranicznymi GW:
- Źródło: Google Sheets (redakcja uzupełnia na bieżąco)
- Automatyczne geokodowanie lokalizacji (City + Country → Lat/Lon) przez Nominatim
- Cache geokodowania — nowe lokalizacje geokodowane raz, potem z cache
📄 Wynik: zagranica-mapa-tekstow.csv
Monitor trzęsień ziemi (earthquake-monitor)
System monitorowania trzęsień ziemi dla redakcji newsowej.
- Źródła: USGS (świat + Europa) + GRSS GIG (Polska)
- Sprawdzanie: automatycznie co 15 minut, 24/7
- Alerty: Teams — tylko istotne zdarzenia: Polska powyżej 3.0M, Europa powyżej 4.5M, świat powyżej 5.5M (odczuwalne przez ludzi), katastrofy powyżej 6.5M zawsze
- Embedy: automatyczne tworzenie map Datawrapper z lokalizacją trzęsienia dołączane do alertu
- Dashboard: interaktywna mapa z filtrem magnitudy i regionu, oraz możliwością przesyłania powiadomienia do kanału newsroomu
🌐 Dashboard: earthquake.tomaszlebioda.com
Monitor pogodowy IMGW (weather-monitor)
System ostrzeżeń meteorologicznych IMGW dla redakcji newsowej.
- Źródło: IMGW — Instytut Meteorologii i Gospodarki Wodnej
- Sprawdzanie: automatycznie co 15 minut, 24/7
- Alerty: Teams — ostrzeżenia 2. i 3. stopnia (burze, wichury, upały, mrozy, intensywne opady)
- Dashboard: mapa Polski z kolorowaniem województw wg stopnia ostrzeżenia, lista aktywnych ostrzeżeń z możliwością przesłania do newsroomu
🌐 Dashboard: weather.tomaszlebioda.com
Monitor lotów VIP (flight-monitor)
Śledzenie wybranych samolotów rządowych i VIP w czasie rzeczywistym.
- Źródło: OpenSky Network (dane ADS-B, pobierane przez TARS →
flights-live.json) - Sprawdzanie: co 15 minut, 24/7
- Alerty: Teams — powiadomienie o starcie i lądowaniu śledzonych samolotów
- Dashboard: mapa z pozycjami samolotów, panel zarządzania listą śledzonych maszyn, dodawanie własnych kodów ICAO24
- Starter pack: samoloty rządu RP (Gulfstream G550, Boeing BBJ), Air Force One/Two, Michael Jordan, Elon Musk, LOT BZG-WAW
🌐 Dashboard: flights.tomaszlebioda.com
Monitor jakości powietrza (airquality-monitor)
Monitoring jakości powietrza w Polsce na podstawie danych GIOŚ.
- Źródło: GIOŚ — Główny Inspektorat Ochrony Środowiska (~300 stacji pomiarowych)
- Sprawdzanie: co godzinę, 24/7
- Alerty: Teams — gdy jakość powietrza spadnie do poziomu “Zły” lub “Bardzo zły” (indeks 4-5)
- Dashboard: mapa Polski z kolorowymi pinami stacji, filtrowanie po poziomie jakości, szczegóły PM10/PM2.5/SO2/NO2/O3
🌐 Dashboard: airquality.tomaszlebioda.com
Agregator newsów (news-monitor)
Zagregowany feed z najważniejszych światowych agencji i redakcji.
- Źródła: BBC World/Europe/Business, NYT World/Europe, The Guardian, Al Jazeera, DW World/Europe, France24
- Sprawdzanie: co 15 minut, 24/7
- Alerty: Teams — artykuły pasujące do słów kluczowych (Poland, Ukraine, NATO, breaking, war, attack…)
- Dashboard: chronologiczny feed z wyszukiwaniem, filtrowaniem po źródle i kategorii, podświetlanie artykułów z kluczowymi słowami
🌐 Dashboard: news.tomaszlebioda.com
Kalendarz Newsroomu (calendar-monitor)
Zagregowany kalendarz wydarzeń dla redakcji newsowej.
- Źródła: Sejm RP (API — posiedzenia, głosowania), kalendarz makroekonomiczny (dane GUS, ECB, Fed, NBP), ręcznie dodawane wydarzenia NATO/UE
- Morning briefing: Teams — codziennie rano lista wydarzeń na dany dzień
- Dashboard: timeline z wydarzeniami po dniach, filtrowanie po typie, sidebar z nadchodzącymi wydarzeniami, możliwość ręcznego dodawania
🌐 Dashboard: calendar.tomaszlebioda.com
Monitor nowości wydawniczych (books-monitor)
Dashboard nowości i zapowiedzi polskich wydawnictw literackich.
- Źródła: ponad 30 wydawnictw — RSS/Atom, HTML scraping, GraphQL (Świat Książki)
- Odświeżanie: dwa razy dziennie (6:00 i 18:00 UTC)
- Dashboard: siatka okładek z filtrami kategorii, wydawnictwa i wyszukiwaniem tytułu/autora
🌐 Dashboard: new-books.tomaszlebioda.com
Narzędzia
Zestaw narzędzi wspierających codzienną pracę redakcji.
- Geocoder adresów — zamiana adresów na współrzędne geograficzne (Lat/Lon). Obsługuje pojedyncze adresy, listy i pliki CSV/Excel. Dane z OpenStreetMap Nominatim.
- NOTAM Polska — parser NOTAMów lotniczych. Wklej tekst lub wgraj plik. Interpretacja kodów, filtrowanie po Polsce.
- Ukraine Frontline — pobieranie GeoJSON z linii frontu w Ukrainie (DeepState Map). Dane historyczne od lipca 2024.
- Numer wydania GW — kalkulator numerów wydań na 2025–2026. Święta, weekendy, imieniny.
Architektura
gw-tars/
├── .github/workflows/ # harmonogramy (cron)
│ ├── market-data.yml ← codziennie 05:55 CEST
│ ├── petrol-data.yml ← codziennie 06:10 CEST
│ ├── electricity-data.yml ← codziennie 06:25 CEST
│ ├── scores-data.yml ← co godzinę
│ ├── zagranica-mapa.yml ← codziennie 06:40 CEST
│ └── flights-data.yml ← co 15 minut
├── modules/
│ ├── market-data/ # agent: dane finansowe
│ ├── petrol-data/ # agent: ceny paliw PL
│ ├── electricity-data/ # agent: ceny energii EU
│ ├── scores-data/ # agent: wyniki sportowe
│ ├── zagranica-mapa/ # agent: mapa zagranicznych tekstów
│ └── flights-data/ # agent: dane lotów z OpenSky → JSON
└── csv/ # wyniki — serwowane przez GitHub Pages
Każdy moduł jest niezależny — ma własny skrypt Python, własne zależności i własny workflow. Awaria jednego agenta nie wpływa na pozostałe.
Wyniki są commitowane do repozytorium i natychmiast dostępne publicznie przez GitHub Pages pod domeną dane.tomaszlebioda.com.
Dostępne dane
| Plik | Opis | Aktualizacja |
|---|---|---|
market-data.csv | 45 instrumentów finansowych | codziennie ~06:00 |
petrol-data.csv | PB95, PB98, Diesel, LPG (PL) | codziennie ~06:10 |
europe-electricity-data-eur.csv | Ceny energii EU (EUR/MWhe) | codziennie ~06:25 |
europe-electricity-data-pln.csv | Ceny energii EU (PLN/MWhe) | codziennie ~06:25 |
ekstraklasa.csv | Ekstraklasa — tabela | co godzinę |
premierleague.csv | Premier League — tabela | co godzinę |
bundesliga.csv | Bundesliga — tabela | co godzinę |
laliga.csv | La Liga — tabela | co godzinę |
seriea.csv | Serie A — tabela | co godzinę |
ligue1.csv | Ligue 1 — tabela | co godzinę |
atpranking.csv | ATP ranking | co godzinę |
wtaranking.csv | WTA ranking | co godzinę |
zagranica-mapa-tekstow.csv | Mapa zagranicznych artykułów GW | codziennie ~06:40 |
flights-live.json | Pozycje śledzonych samolotów (OpenSky) | co 15 minut |
Wszystkie pliki CSV można otworzyć bezpośrednio w Excelu, Google Sheets, Datawrapperze lub dowolnym narzędziu obsługującym format CSV.