daily-news-portal
Wygeneruj dzienny portal newsowy jako jeden plik HTML w Canvas.
Parametry
- OUTPUT: ~/.openclaw/canvas/prasowka-{YYYYMMDD}.html
- DATA_DIR: ~/.openclaw/workspace/skills/prasowka/data
- REFS_DIR: ~/.openclaw/workspace/skills/prasowka/references
Kroki wykonawcze
Krok 1: Inicjalizacja
mkdir -p ~/.openclaw/canvas ~/.openclaw/workspace/skills/prasowka/data
DATE=$(date +%Y%m%d)
SEEN_URLS_FILE="$DATA_DIR/seen_urls.json"
Krok 2: Załaduj konfigurację
Przeczytaj $REFS_DIR/topics.md - format:
ai-models: 15
ai-tools: 10
ai-video: 15
...
Krok 3: Dla każdego tematu - fetch news
Uruchom subagenta dla każdego tematu:
# subagent: fetch_topic_news
def fetch_topic_news(topic, limit):
result = subprocess.run([
"python3", "scripts/fetch_news.py",
"--topic", topic,
"--limit", str(limit)
], capture_output=True, text=True)
if result.returncode != 0:
# fallback do web_search
return web_search(f"latest {topic} news {limit}")
return json.loads(result.stdout)
Krok 4: Filtruj URLe
def filter_new_urls(articles, seen_urls):
return [a for a in articles if a['url'] not in seen_urls]
Krok 5: Dla każdego artykułu - pobierz i streść
Uruchom subagenta dla każdego artykułu:
# subagent: summarize_article
def summarize_article(url):
content = web_fetch(url, extract_text=True)
if not content or len(content) < 100:
return None
# Wygeneruj własne streszczenie
summary = llm_summarize(content[:3000])
return summary
Krok 6: Generuj HTML
Użyj szablonu z toggle dark/light, 18 kategoriami, streszczeniami 2-3 zdania.
Krok 7: Zapisz i zaktualizuj
- Zapisz HTML do Canvas
- Zaktualizuj seen_urls.json
- Wywołaj prasowka-guardian
Obsługa błędów
- fetch_news.py zawiedzie → web_search
- Artykuł niedostępny → pomiń
- Streszczenie puste → użyj pierwszych 3 zdań
- Nie zatrzymuj się - kontynuuj
Wymagania
- scripts/fetch_news.py
- references/topics.md
- references/format.md