# Londýnská.cz Novinky (`gearshift-data/londynska-novinky`) Actor

Hlídá web ZŠ Londýnská (londynska.cz) a pošle vám e-mail, když škola zveřejní novou zprávu, důležité oznámení nebo akci. Stačí zadat e-mail a ročník dítěte.

- **URL**: https://apify.com/gearshift-data/londynska-novinky.md
- **Developed by:** [gearshift-data](https://apify.com/gearshift-data) (community)
- **Stats:** 8 total users, 1 monthly users, 91.7% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.00005 / actor start

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## Hlídač novinek ZŠ Londýnská

Hlídá web [londynska.cz](https://www.londynska.cz/) (ZŠ Londýnská, Praha) a **pošle vám e-mail, když škola zveřejní něco nového**. Nemusíte tak web každý den kontrolovat sami. Stačí zadat e-mail a ročníky svých dětí.

### Co hlídač sleduje

- **Nejnovější zprávy** — novinky vybraného ročníku, nebo celé školy (když žádný ročník nevyberete)
- **Velmi důležité zprávy** — důležitá oznámení, týkají se vždy celé školy (lze vypnout, ale doporučujeme nechat zapnuté)
- **Akce na tento den** — volitelně; akce se mění každý den, takže e-mail pak chodí prakticky denně (proto je tato volba ve výchozím stavu vypnutá)

### Jak si nastavit upozornění (krok za krokem)

Nastavení zabere asi 10 minut a nevyžaduje žádné technické znalosti. Kroky 1–4 rozjedou hlídače, krok 5 (plánovač) zajistí, že pak pracuje sám.

#### 1. Založte si účet na Apify

Hlídač běží na platformě [Apify](https://console.apify.com/sign-up). Registrace je zdarma (stačí e-mail nebo účet Google) a bezplatný tarif na tento hlídač bohatě stačí — nemusíte zadávat platební kartu.

**Důležité:** registrujte se e-mailem, na který chcete dostávat upozornění. Na bezplatném tarifu
totiž Apify posílá e-maily **jen na adresu vašeho účtu** — je to ochrana proti spamu, ne chyba
hlídače. Adresu někoho dalšího (partnera, prarodičů) tedy na free tarifu zadat nelze.

**Už účet na Apify máte?** Přihlaste se a použijte e-mail toho účtu. Když chcete upozornění
na jinou adresu, máte dvě možnosti: založit si nový účet na požadovaný e-mail, nebo si
v e-mailu nastavit přeposílání z účtové adresy na tu, kterou chcete.

#### 2. Otevřete hlídače a vyplňte dvě pole

Otevřete hlídače na Apify:

**→ [apify.com/gearshift-data/londynska-novinky](https://apify.com/gearshift-data/londynska-novinky)**

Klikněte na **Try for free** (nebo **Start**, pokud už jste přihlášení). Hlídač se otevře
v Apify Console. Na záložce **Input** vyplňte:

- **E-mail pro upozornění** — zadejte adresu, se kterou jste se registrovali na Apify. (Na bezplatném tarifu je to jediná adresa, kam lze doručovat; s placeným tarifem sem lze zadat libovolné adresy, max 20, oddělené čárkou.)
- **Ročníky** — vyberte ročník, do kterého chodí vaše dítě. **Máte ve škole víc dětí?**
  Vyberte v seznamu klidně několik ročníků najednou (např. 3. a 7.) — hlídač pak sleduje
  zprávy pro všechny vybrané ročníky a pošle je v jednom e-mailu, kde má každý ročník
  vlastní nadpis („Nejnovější zprávy — 3. ročník“). Víc e-mailů ani víc hlídačů
  nastavovat nemusíte.

  *(Chodí-li dvě děti do stejného ročníku, stačí ten ročník vybrat jednou.)*

  Nic dalšího není potřeba.

#### 3. Vyzkoušejte testovací e-mail

Zapněte přepínač **Poslat testovací e-mail** a klikněte na **Start**. Do pár minut vám přijde e-mail s náhledem několika položek z každé sledované sekce — ověříte si, že vše funguje a jak budou upozornění vypadat. Potom přepínač zase **vypněte**.

Pokud e-mail nepřišel, zkontrolujte složku Spam/Hromadné a překlepy v adrese.

#### 4. Spusťte první „ostré“ spuštění

Klikněte na **Start** ještě jednou (s vypnutým testovacím e-mailem). První spuštění si jen zapamatuje, co na webu už je, a **žádný e-mail neposílá** — jinak by vám hned přišlo všechno staré. Od dalšího spuštění už chodí jen skutečné novinky.

#### 5. Nastavte automatické spouštění (plánovač)

Zatím jste hlídače spouštěli ručně. Aby pracoval sám, nastavte mu **plánovač** (anglicky *Schedule*) —
ten ho spouští v zadaných časech za vás. Nastavuje se jednou a zabere asi 3 minuty.

**Pozor na dvě věci**, kvůli kterým plánovač lidem nejčastěji nefunguje:

- Nový plánovač je po vytvoření **vypnutý**. Musíte ho zapnout (krok 6 níže).
- Plánovač má **vlastní kopii nastavení**. Nepřebírá to, co jste vyplnili na záložce **Input**,
  takže e-mail a ročníky je potřeba zadat i tady (krok 4 níže).

##### Krok za krokem

1. Na stránce Actora klikněte vpravo nahoře na **⋯** (tři tečky) → **Schedule Actor**.
   Apify tím vytvoří nový plánovač a hlídače do něj hned vloží.
   *(Druhá cesta: v levém menu **Schedules** → **Create new**. Pak ale hlídače musíte přidat sami —
   v kartě **Actors and tasks** klikněte na **Add** → **Actor** a vyberte tohoto hlídače.)*

2. **Pojmenujte plánovač** — klikněte na jeho název nahoře a napište třeba `hlidac-londynska`.
   Název může mít 3–63 znaků, bez mezer a diakritiky.

3. **Nastavte časy** v kartě **Schedule setup**:

   - **Timezone** (časové pásmo) přepněte na **Europe/Prague**. Jinak by se časy počítaly v UTC
     a hlídač by v zimě běžel o hodinu a v létě o dvě hodiny dřív, než čekáte.
   - **Cron expression** je pole, do kterého se čas zapisuje pěti hodnotami oddělenými mezerou
     (např. `0 7,16 * * 1-5`). **Nemusíte tomu rozumět** — najděte si níže v tabulce řádek,
     který vám vyhovuje, zkopírujte hodnotu z prostředního sloupce a vložte ji do pole
     **Cron expression**. Co v poli původně je, smažte.

   Nejčastěji doporučujeme **2× denně ve školní dny** (`0 7,16 * * 1-5`) — ráno před školou
   a odpoledne po ní, a o víkendu vás hlídač neotravuje. Častější kontrola než pár × denně
   nemá smysl: škola novinky nepřidává po minutách.

   | Jak často | Co vepsat do pole Cron expression | Kdy poběží |
   |---|---|---|
   | **2× denně, jen školní dny (doporučeno)** | `0 7,16 * * 1-5` | 7:00 a 16:00, pondělí–pátek |
   | 2× denně, každý den | `0 7,16 * * *` | 7:00 a 16:00, včetně víkendu |
   | 1× denně ráno, jen školní dny | `0 7 * * 1-5` | 7:00, pondělí–pátek |
   | 1× denně ráno, každý den | `0 7 * * *` | 7:00, každý den |
   | 1× denně odpoledne | `0 16 * * *` | 16:00, každý den |
   | 3× denně, jen školní dny | `0 7,12,17 * * 1-5` | 7:00, 12:00 a 17:00, pondělí–pátek |
   | Ráno v 6:30 (jiná minuta) | `30 6 * * 1-5` | 6:30, pondělí–pátek |
   | Každou hodinu (víc, než je potřeba) | `0 * * * *` | v každou celou hodinu, i v noci |
   | Jen v pondělí ráno | `0 7 * * 1` | 7:00 každé pondělí |
   | Jen v pátek odpoledne | `0 15 * * 5` | 15:00 každý pátek |
   | 1× týdně v nedělní podvečer | `0 18 * * 0` | 18:00 každou neděli |

   Pod polem Apify vypisuje, kdy poběží nejbližší spuštění (**Next run**) —
   **vždy si tam zkontrolujte, že vypsaný čas odpovídá tomu, co jste chtěli.**
   Je to nejrychlejší způsob, jak poznat překlep v zápisu.

4. **Zadejte nastavení hlídače** — v kartě **Actors and tasks** rozklikněte u hlídače
   **Input** (nebo **Options**) a vyplňte **stejný e-mail a ročníky** jako v kroku 2 tohoto návodu.
   Bez toho by plánovač spustil hlídače s prázdným nastavením a e-mail by nikam nedošel.

   Ověřte přitom, že **Poslat testovací e-mail** je **vypnuté** — jinak by vám dvakrát denně
   chodil testovací náhled místo skutečných novinek.

5. **Uložte** — tlačítko **Save** vpravo nahoře.

6. **Zapněte plánovač** přepínačem **Enabled** (nahoře na stránce plánovače).
   Dokud je vypnutý, nic se nespouští. Tohle je nejčastější důvod, proč e-maily nechodí.

##### Jak se cron čte (nepovinné)

Tuhle část si můžete přeskočit — tabulka výše stačí. Hodí se, když si chcete čas nastavit po svém.

Pět hodnot znamená po řadě: **minuta**, **hodina**, **den v měsíci**, **měsíc**, **den v týdnu**.
Hvězdička `*` znamená „na tomhle mi nezáleží / vždy“.

```
0 7,16 * * 1-5
│ │    │ │ └── den v týdnu: 1-5 = pondělí až pátek
│ │    │ └──── měsíc: * = každý měsíc
│ │    └────── den v měsíci: * = každý den
│ └─────────── hodina: 7 a 16 (tedy 7:00 a 16:00)
└───────────── minuta: 0 (v celou)
```

Užitečné zápisy:

- **Více časů** oddělte čárkou: `0 7,16 * * *` = 7:00 a 16:00
- **Rozsah** zapište pomlčkou: `0 7 * * 1-5` = pondělí–pátek
- **Konkrétní minuta** je první číslo: `30 6 * * *` = 6:30
- **Dny v týdnu** se číslují: `1` = pondělí, `2` = úterý, `3` = středa, `4` = čtvrtek,
  `5` = pátek, `6` = sobota, `0` = neděle
- **Vybrané dny** taky čárkou: `0 7 * * 1,3,5` = pondělí, středa, pátek

Používejte celé hodiny nebo půlhodiny — nic častějšího než jednou za hodinu není potřeba,
škola nepřidává novinky po minutách.

##### Jak si ověřit, že to funguje

Na stránce plánovače uvidíte **Next run** (kdy poběží příště) a po prvním automatickém spuštění
i **Last run**. Když nastal čas prvního spuštění, otevřete v levém menu **Runs** —
měl by tam být nový běh se zeleným stavem **Succeeded**.

E-mail dorazí jen tehdy, když škola opravdu něco nového zveřejnila. Zelený běh bez e-mailu
tedy **není chyba** — znamená, že nic nového nebylo.

##### Když plánovač neběží

| Co vidíte | Co s tím |
|---|---|
| Žádný běh se nespustil | Plánovač je vypnutý — zapněte přepínač **Enabled** |
| Běhy se spouští v jiný čas | Špatné časové pásmo — přepněte **Timezone** na **Europe/Prague** |
| Běh je zelený, ale e-mail nechodí | Buď nebylo nic nového (v pořádku), nebo v plánovači chybí e-mail (krok 4). Zkontrolujte i složku Spam |
| Běh skončil červeně (**Failed**) | Otevřete běh a podívejte se do **Log**. Pokud hlásí, že se nepodařilo načíst položky, škola změnila web — dejte vědět správci |
| Chodí testovací e-maily | V nastavení plánovače vypněte **Poslat testovací e-mail** (krok 4) |

##### Pozdější změny

Plánovač najdete kdykoli v levém menu pod **Schedules**. Můžete v něm změnit časy,
upravit e-mail nebo ročníky (např. na začátku školního roku, když děti postoupí
do dalšího ročníku, nebo když nejstarší školu dokončí),
nebo ho na dobu dovolených přepínačem **Enabled** vypnout a potom zase zapnout.

Hotovo! Od teď vám přijde e-mail vždy, když škola zveřejní něco nového. Když nic nového není, žádný e-mail nechodí.

### Nastavení (přehled polí)

| Pole | Výchozí hodnota | Význam |
|---|---|---|
| E-mail pro upozornění | — (prázdné) | Free tarif: adresa vašeho Apify účtu. Placený tarif: libovolné adresy, max 20, oddělené čárkou. Prázdné pole = nové položky se jen ukládají do datasetu |
| Ročníky | žádný | Ročníky (1–9), jejichž zprávy sledovat — vyberte jich klidně víc, když máte ve škole víc dětí. Žádný = zprávy celé školy |
| Posílat „Velmi důležité zprávy“ | zapnuto | Důležitá oznámení celé školy. Doporučujeme nechat zapnuté |
| Posílat i denní přehled akcí | vypnuto | Hlídat i „Akce na tento den“. E-mail pak chodí prakticky denně |
| Poslat testovací e-mail | vypnuto | Pošle náhled několika položek z každé sekce a nic neovlivní. Po testu vypněte |

### Kolik to stojí?

Nic. Hlídač stáhne jen jednu až několik stránek a běží pár sekund, takže se bezpečně vejde do bezplatného tarifu Apify (5 USD kreditu měsíčně) i při spouštění několikrát denně.

### Časté dotazy

**Přijde mi e-mail, i když nic nového není?**
Ne. E-mail chodí jen tehdy, když se na webu objeví něco, co hlídač ještě nehlásil. (Výjimka: zapnutý denní přehled akcí — akce jsou každý den „nové“.)

**Můžu posílat upozornění na jinou adresu, než mám u Apify?**
Na bezplatném tarifu ne — e-maily chodí jen na adresu vašeho Apify účtu (ochrana proti spamu). S placeným tarifem lze zadat až 20 libovolných adres oddělených čárkou.

**Proč mi po prvním spuštění nepřišel e-mail?**
To je záměr — první spuštění si jen zapamatuje aktuální obsah webu jako výchozí stav. E-maily chodí až od dalších spuštění. Chcete-li si e-mail vyzkoušet hned, použijte přepínač **Poslat testovací e-mail**.

**Mám ve škole dvě (nebo víc) dětí v různých ročnících. Jak to nastavit?**
Jedním hlídačem. V poli **Ročníky** vyberte všechny ročníky, které vás zajímají (např. 3. a 7.).
Přijde vám jeden e-mail, ve kterém má každý ročník vlastní nadpis
(„Nejnovější zprávy — 3. ročník“, „Nejnovější zprávy — 7. ročník“) — uvidíte tedy hned,
co se týká kterého dítěte. Zakládat druhý hlídač nebo druhý účet není potřeba.
Důležitá oznámení a akce se týkají celé školy, takže se v e-mailu neopakují.

**Sledují se důležité zprávy i při výběru ročníku?**
Ano. „Velmi důležité zprávy“ (a případné akce) se týkají celé školy a na výběru ročníku nezávisí; výběr ročníku ovlivňuje jen sekci „Nejnovější zprávy“.

**Nastavil jsem plánovač, ale nic se nespouští.**
Nejčastěji je plánovač jen **vypnutý** — nové plánovače jsou po vytvoření vypnuté.
Otevřete **Schedules**, klikněte na svůj plánovač a zapněte přepínač **Enabled**.

**Plánovač běží, ale e-maily nechodí.**
Zkontrolujte, že máte e-mail a ročníky vyplněné **i v plánovači** (karta **Actors and tasks** →
**Input**). Plánovač nepřebírá nastavení ze záložky **Input** na stránce Actora, má vlastní kopii.
Když je zelený běh a e-mail nechodí, druhá možnost je, že prostě nic nového nebylo — to je v pořádku.

**Hlídač běží v jiný čas, než jsem nastavil.**
V plánovači je špatné časové pásmo. Přepněte **Timezone** na **Europe/Prague** —
jinak Apify počítá časy v UTC, což je v zimě o hodinu a v létě o dvě hodiny dřív.

**Můžu plánovač na dobu dovolených vypnout?**
Ano. V **Schedules** u něj přepněte **Enabled** na vypnuto a po dovolené zase zapněte.
Nastavení se nikam neztratí. Po zapnutí pošle první běh i novinky, které vyšly během pauzy.

**Spuštění skončilo chybou „Ze sledovaných sekcí se nepodařilo načíst žádné položky“.**
Škola pravděpodobně změnila podobu webu a hlídač potřebuje aktualizaci. Dejte vědět správci.

### Výstup (pro zvídavé)

Kromě e-mailu si hlídač každou nalezenou položku ukládá i do tabulky u daného spuštění
(v Console záložka **Storage** → **Dataset**). Najdete tam sekci, titulek, odkaz, datum, autora,
ročníky, odkaz na přílohu a úryvek textu. Tabulku lze stáhnout jako Excel, CSV nebo JSON —
třeba když si chcete novinky archivovat. Pro běžné používání ji nepotřebujete.

### Pro vývojáře

```bash
apify run    # lokální test (vstup v storage/key_value_stores/default/INPUT.json)
apify push   # nasazení na Apify
```

Hlídač stahuje stránky obyčejným HTTP požadavkem (CheerioCrawler, bez prohlížeče) — u vybraných ročníků jednu stránku na ročník (`?rocnik=N`). Sekce „Velmi důležité zprávy“ a „Akce na tento den“ jsou na všech ročníkových stránkách stejné, proto se deduplikují; zprávy nesou seznam ročníků, ke kterým patří.

Actor běží s **limited permissions**. Už ohlášené položky si pamatuje pojmenované key-value úložiště `londynska-novinky-state`, které si vytvoří první běh Actora — limited režim dovoluje používat úložiště vytvořená vlastními běhy, ale ne sahat na cizí úložiště na účtu uživatele (proto název nesmí kolidovat s existujícím store). Z téhož důvodu nejde zjistit e-mail účtu uživatele (`users/me` vrací 403), takže adresu musí vyplnit uživatel. Pole ale není povinné — bez něj běh jen uloží nové položky do datasetu a skončí úspěšně, aby Actor šel spustit i s výchozím vstupem. Adresa webu a limit pamatovaných položek jsou záměrně napevno v `src/main.js`, aby vstupní formulář zůstal co nejjednodušší. E-maily odesílá Actor `apify/send-mail` (sám běží s limited permissions, volat ho lze). Při změně struktury webu spuštění selže — upravte selektory v `src/main.js`.

# Actor input Schema

## `notificationEmail` (type: `string`):

Kam poslat e-mail, když škola zveřejní něco nového. Na bezplatném tarifu Apify lze doručovat pouze na adresu vašeho Apify účtu — zadejte tedy stejnou adresu, se kterou jste se registrovali. S placeným tarifem lze zadat libovolné adresy (max 20, oddělené čárkou). Když pole necháte prázdné, monitor jen ukládá nové položky do datasetu a žádný e-mail neposílá.

## `rocniky` (type: `array`):

Vyberte ročník, do kterého chodí vaše dítě — „Nejnovější zprávy“ se pak sledují zvlášť pro každý vybraný ročník. Máte ve škole víc dětí? Vyberte klidně několik ročníků najednou; zprávy pro všechny přijdou v jednom e-mailu rozdělené podle ročníků. Když nevyberete žádný, sledují se zprávy celé školy z domovské stránky. „Velmi důležité zprávy“ a akce se týkají celé školy vždy.

## `watchImportant` (type: `boolean`):

Hlídat sekci „Velmi důležité zprávy“ — důležitá oznámení týkající se celé školy. Doporučujeme nechat zapnuté.

## `watchEvents` (type: `boolean`):

Hlídat také sekci „Akce na tento den“ (týká se celé školy). Pozor: akce se mění každý den, takže e-mail pak chodí prakticky denně. Vypnuto = e-mail jen o nových zprávách a důležitých oznámeních.

## `sendTestEmail` (type: `boolean`):

Zapněte pro vyzkoušení: pošle e-mail s náhledem několika položek z každé sledované sekce a hned skončí, aniž by cokoli ovlivnil. Po testu zase vypněte.

## Actor input object example

```json
{
  "rocniky": [],
  "watchImportant": true,
  "watchEvents": false,
  "sendTestEmail": false
}
```

# Actor output Schema

## `newItems` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "notificationEmail": ""
};

// Run the Actor and wait for it to finish
const run = await client.actor("gearshift-data/londynska-novinky").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = { "notificationEmail": "" }

# Run the Actor and wait for it to finish
run = client.actor("gearshift-data/londynska-novinky").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "notificationEmail": ""
}' |
apify call gearshift-data/londynska-novinky --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,gearshift-data/londynska-novinky"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/1GfNqqgNOedeVNgZx/builds/yTZLAgkTyOMJYcHcp/openapi.json
