Back to Skills
    🦞

    orf-digest

    On-demand ORF news digest in German.

    By @cpojer
    View on GitHub
    SKILL.md
    ---
    name: orf-digest
    description: "On-demand ORF news digest in German. Use when the user says 'orf', 'pull orf', or 'orf 10'. Focus on Austrian politics (Inland) and international politics (Ausland) + major headlines; exclude sports. Send each item as its own message (Title + Age + Link). Then generate a Nano Banana image in a cartoon ZiB studio with the anchor presenting the news, plus subtle Easter eggs based on the selected stories."
    ---
    
    # ORF Digest (news.orf.at)
    
    ## Command format
    
    Interpret a user message that starts with `orf` as a request for an ORF News digest.
    
    Supported forms:
    
    - `orf` → default 5 items
    - `orf <n>` → n items (max 15)
    - `orf inland` / `orf ausland` → bias selection
    - `orf <n> inland|ausland` → both
    
    ## Source + scope
    
    - Primary source: `news.orf.at` (German)
    - Prefer: **Inland** politics, **Ausland** / international politics, and major headlines.
    - Exclude: sports (Sport).
    
    ## Output requirements
    
    - Do **not** send any extra commentary/preamble/epilogue.
    - Send results as **individual messages**.
    - Each item message must be exactly:
      - first line: the headline (German)
      - second line: `<age>` (e.g. `45m ago`, `6h ago`, `2d ago`)
      - third line: the ORF link
    - After the item messages, send **one final message** with the generated image.
      - The image must visually incorporate the pulled news on the wraparound studio video wall using **4–6 distinct story panels**.
      - **Panel layout (must):**
        - TOP: big bold text (1–2 words, ALL CAPS). You must invent this.
        - MIDDLE: smaller text (3–6 words) that describes the story. You must invent this.
          - The two lines must **not** form a connected sentence.
          - Avoid repeating the same words between the two lines.
        - BOTTOM: exactly 1–2 simple icons (no maps, no busy collages)
        - **Icon variety:** make icons distinct across panels whenever possible.
          - Do not reuse the same icon pair across multiple panels.
          - Avoid overusing generic icons (e.g. globe + pin); only use them when no better match exists.
      - **Readability:** keep text minimal and large enough to render cleanly.
      - No logos/watermarks.
      - If the chat provider requires non-empty text for media, use a minimal caption `.`.
    
    ## Procedure
    
    1. Parse `n` and optional `focus` (`inland`|`ausland`) from the user message.
    2. Run `python3 skills/orf-digest/scripts/orf.py --count <n> --focus <focus> --format json`.
    3. Send each returned item as its own message (3-line format).
    4. Generate the ZiB studio mood image via Nano Banana:
       - Build prompt from items: `python3 skills/orf-digest/scripts/orf.py --count <n> --focus <focus> --format json | node skills/orf-digest/scripts/zib_prompt.mjs`
       - Generate: `skills/orf-digest/scripts/generate_zib_nano_banana.sh ./tmp/orf-zib/zib.png`
       - Send image as final message.
    
    If fetching/parsing fails or returns 0 items:
    - Use the browser tool to open `https://news.orf.at/`, pick N non-sport headlines by judgment, and send them in the same 3-line format.
    - Still generate a ZiB studio image with a few generic political-news Easter eggs.