← Back to Skills Marketplace
broedkrummen

Danish News Aggregator

by Broedkrummen · GitHub ↗ · v1.0.0
cross-platform ⚠ suspicious
373
Downloads
0
Stars
0
Active Installs
1
Versions
Install in OpenClaw
/install danish-news-aggregator
Description
Comprehensive Danish News RSS Aggregator - combines 100+ Danish RSS feeds into category-based unified feeds. Produces 6 curated RSS feeds: - danish-all.xml (...
README (SKILL.md)

Danish News Aggregator Skill

Aggregates 100+ Danish RSS feeds into category-based unified RSS feeds.

Quick Start

# Install dependencies
pip install feedparser python-dateutil

# Run aggregator
python3 aggregator.py

# Output feeds in output/ directory
ls output/

Configuration

Edit feeds.json to customize which feeds to include:

{
  "refresh_interval": 900,  // seconds (15 min)
  "max_items_per_feed": 50,
  "deduplicate": true,
  "feeds": {
    "national": ["https://..."],
    "sports": ["https://..."]
  }
}

Output Feeds

Feed Description Sources
danish-all.xml All news combined Top 30
danish-national.xml DR, Berlingske, Politiken 8
danish-regional.xml Nordjyske, Fyens, etc 5
danish-sports.xml Bold, Tipsbladet, TV2 Sport 8
danish-business.xml Finans, Nationalbanken 6
danish-tech.xml Version2, Ingeniøren 10
danish-english.xml The Local, CPH Post 5

Features

  • ✅ Category-based feeds
  • ✅ Deduplication (same article from multiple sources)
  • ✅ Source authority ranking (DR > major newspapers > regional)
  • ✅ Time filtering (last 24h by default)
  • ✅ RSS 2.0 compliant
  • ✅ UTF-8 encoding
  • ✅ Auto-refresh (15 min interval)
  • ✅ Media RSS extensions for images

Hosting

Self-Host (Docker)

docker build -t danish-news-aggregator .
docker run -d -p 8080:8080 danish-news-aggregator

Cron Job

# Add to crontab
*/15 * * * * cd /path/to/aggregator && python3 aggregator.py

Subscribe

Add these URLs to your RSS reader:

Credits

Aggregates from: DR, Berlingske, Politiken, Information, Nordjyske, Fyens, JydskeVestkysten, Bold.dk, Tipsbladet, TV2 Sport, Finans, Nationalbanken, Version2, Ingeniøren, Computerworld, The Local Denmark, The Copenhagen Post, and many more.


Danish News Aggregator v1.0 - Built by Nexus Orchestrator

Usage Guidance
This skill appears to do what it claims (aggregate Danish RSS feeds), but review and fix a few things before running it on a production system: 1) The aggregate_feeds.py file disables SSL certificate verification (ctx.verify_mode = ssl.CERT_NONE). Either remove that code or ensure you trust your environment — running with verification disabled exposes you to MITM attacks. 2) aggregator.py contains a malformed feed entry in the sports list (a broken URL/string) — expect runtime errors or skipped feeds; test in a safe environment and correct the feed list. 3) SKILL.md suggests building a Docker image but no Dockerfile is provided; if you want containerized deployment, add a Dockerfile or use the cron example. 4) Because the scripts fetch many external URLs, run them in a network-restricted or monitored environment until you confirm behavior. 5) If you will expose generated feeds publicly, confirm the feed source attributions and that you comply with the source sites' terms of service. If the author can provide an updated release that removes disabled SSL verification, fixes the malformed feed entry, and includes a Dockerfile (or clarifies intended run mode), my confidence would increase.
Capability Analysis
Type: OpenClaw Skill Name: danish-news-aggregator Version: 1.0.0 The skill bundle is a functional Danish news aggregator, but it contains a significant security vulnerability in aggregate_feeds.py, where SSL certificate verification is explicitly disabled (ssl.CERT_NONE). This allows for potential Man-in-the-Middle (MitM) attacks when fetching feeds. While likely an unintentional development shortcut rather than a malicious backdoor, it constitutes a high-risk vulnerability. The rest of the code, including aggregator.py and the RSS configurations, appears aligned with the stated purpose, though aggregator.py contains minor syntax errors in its feed list.
Capability Assessment
Purpose & Capability
Name/description align with the code and bundled feed lists: the scripts fetch RSS feeds, deduplicate and produce combined feeds. However there are small mismatches: SKILL.md suggests Docker hosting (docker build/run) but no Dockerfile is included; SKILL.md promises auto-refresh every 15 minutes but the provided aggregator.py is a one-shot script (no long-running scheduler) — though SKILL.md also shows a cron example which is reasonable. Output locations differ: SKILL.md claims output/ directory (correct for aggregator.py) while aggregate_feeds.py writes combined_danish_news.xml next to the script. These are likely engineering oversights, not deliberate misdirection.
Instruction Scope
Runtime code performs exactly the expected network I/O (fetching many external RSS URLs). However aggregate_feeds.py creates an SSL context that disables certificate verification (ctx.check_hostname = False; ctx.verify_mode = ssl.CERT_NONE) which weakens transport security and can facilitate man-in-the-middle attacks. aggregator.py contains a malformed feed entry in the sports list (corrupted string/URL) indicating a bug that could crash or skip sources. SKILL.md's Quick Start asks to run python3 aggregator.py and to pip install feedparser and python-dateutil (correct for aggregator.py). No instructions ask for unrelated files, credentials, or external endpoints beyond RSS sources.
Install Mechanism
There is no install spec; this is instruction-plus-code that relies on standard Python packages. SKILL.md suggests installing feedparser and python-dateutil via pip — reasonable and proportional. No downloads from unknown hosts or archive extraction are present. The absence of a Dockerfile (despite Docker build instructions) is an inconsistency but not an installation security risk by itself.
Credentials
The skill requests no environment variables, no credentials, and no config paths beyond editing feeds.json — appropriate for an RSS aggregator. Network access to the listed RSS URLs is expected and necessary for function.
Persistence & Privilege
The skill does not request always:true and does not attempt to modify other skills or system-wide configuration. It writes generated feed files to an output directory (aggregator.py creates output/) and a combined XML file is included — normal behavior for a feed generator.
How to Use
  1. Make sure OpenClaw is installed (local or Docker)
  2. Run the install command in chat: /install danish-news-aggregator
  3. After installation, invoke the skill by name or use /danish-news-aggregator
  4. Provide required inputs per the skill's parameter spec and get structured output
Version History
v1.0.0
- Initial release of Danish News Aggregator. - Aggregates 100+ Danish RSS feeds into 7 unified, category-based RSS feeds. - Features automatic refresh every 15 minutes, deduplication of articles, and source authority ranking. - Supports category feeds: national, regional, sports, business, tech, and English-language Danish news. - Outputs RSS 2.0 compliant feeds with UTF-8 encoding and media support.
Metadata
Slug danish-news-aggregator
Version 1.0.0
License
All-time Installs 0
Active Installs 0
Total Versions 1
Frequently Asked Questions

What is Danish News Aggregator?

Comprehensive Danish News RSS Aggregator - combines 100+ Danish RSS feeds into category-based unified feeds. Produces 6 curated RSS feeds: - danish-all.xml (... It is an AI Agent Skill for Claude Code / OpenClaw, with 373 downloads so far.

How do I install Danish News Aggregator?

Run "/install danish-news-aggregator" in the OpenClaw or Claude Code chat to install it in one step — no extra setup required.

Is Danish News Aggregator free?

Yes, Danish News Aggregator is completely free (open-source). You can download, install and use it at no cost.

Which platforms does Danish News Aggregator support?

Danish News Aggregator is cross-platform and runs anywhere OpenClaw / Claude Code is available (cross-platform).

Who created Danish News Aggregator?

It is built and maintained by Broedkrummen (@broedkrummen); the current version is v1.0.0.

💬 Comments