惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

T
Threat Research - Cisco Blogs
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
V
Vulnerabilities – Threatpost
GbyAI
GbyAI
P
Proofpoint News Feed
L
LINUX DO - 热门话题
P
Palo Alto Networks Blog
A
About on SuperTechFans
T
Tenable Blog
M
MIT News - Artificial intelligence
IT之家
IT之家
I
Intezer
D
DataBreaches.Net
爱范儿
爱范儿
T
Threatpost
C
CERT Recently Published Vulnerability Notes
云风的 BLOG
云风的 BLOG
博客园 - 三生石上(FineUI控件)
WordPress大学
WordPress大学
K
Kaspersky official blog
大猫的无限游戏
大猫的无限游戏
A
Arctic Wolf
Y
Y Combinator Blog
Cyberwarzone
Cyberwarzone
酷 壳 – CoolShell
酷 壳 – CoolShell
D
Darknet – Hacking Tools, Hacker News & Cyber Security
H
Help Net Security
Microsoft Security Blog
Microsoft Security Blog
Spread Privacy
Spread Privacy
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
AWS News Blog
AWS News Blog
博客园 - 聂微东
C
Check Point Blog
S
Securelist
有赞技术团队
有赞技术团队
雷峰网
雷峰网
aimingoo的专栏
aimingoo的专栏
Last Week in AI
Last Week in AI
Stack Overflow Blog
Stack Overflow Blog
MongoDB | Blog
MongoDB | Blog
D
Docker
G
GRAHAM CLULEY
T
The Exploit Database - CXSecurity.com
C
Cybersecurity and Infrastructure Security Agency CISA
T
Tailwind CSS Blog
L
Lohrmann on Cybersecurity
G
Google Developers Blog
C
Cyber Attacks, Cyber Crime and Cyber Security
L
LangChain Blog

Hacker News: Show HN

PurrrrrFocus: Pomodoro Timer App - App Store Workflow Engine — Multi-Step Orchestration for Bun RapidPhoto: Pro Photo Editor App - App Store GitHub - amitb-quantum/roboapi: The unified API layer for robotics. Connect any robot, any brand, with one SDK. Like Stripe, but for robots. GitHub - manankharwar/fusioncore: ROS 2 sensor fusion SDK: UKF, 3D native, proper GNSS, zero manual tuning. Apache 2.0. Show HN: Wayland Wlroot Hjkl Everywhere Show HN: Codex context bloat? 87% avg reduction on SWE-bench Verified traces GitHub - NoahCristino/llmcat: A simple CLI that transforms your code into clean, structured text for feeding into LLMs. GitHub - actuallyepic/background-computer-use GitHub - h4ckf0r0day/obscura: The headless browser for AI agents and web scraping GitHub - anthonybudd/Express-ts-API-Template: Production-ready minimal REST API boilerplate using Express.js, Sequelize and MySQL. GitHub - molefrog/lilmd: Agent-friendly CLI for reading large Markdown files Show HN: I built a simple site to reduce tool overload and improve focus GitHub - JonathanRosado/claude-anyteam: Native Claude Code teammates, any LLM. Codex today. Gemini, Kimi, GLM, DeepSeek next. GitHub - abi/lilo Show HN: ffmpeg-render-pro – Parallel video rendering with live dashboard GitHub - adam-s/HNswered: Notifies you when someone replies to your Hacker News posts and comments. GitHub - arian-gogani/nobulex: The accountability primitive for AI agents. Cryptographic behavioral commitments with trustless verification. GitHub - Developing-Gamer/roids: Steroids for your AI agents GitHub - nellavio/nellavio: 🚀 Next.js dashboard starter with auth, i18n, 18 pages, 60+ charts and 90+ UI components Spotify – Web Player GitHub - tillahoffmann/cctape: Claude proxy to record all interactions in a local database, allowing you to browse and search sessions, track usage, and let Claude search its own history over MCP. Show HN: Rook, a macOS notes app for developers GitHub - donchuru/mr-links: Chrome extension that shows referenced links above comments on Marginal Revolution assorted links posts GitHub - anubhavgupta/whisper-npu: Speech to text at cursor using NPU. (shortcut -> win+/) SHOW HN: I built a marketplace agency that treats profit as the actual metric GitHub - trycua/cua: Open-source infrastructure for Computer-Use Agents. Sandboxes, SDKs, and benchmarks to train and evaluate AI agents that can control full desktops (macOS, Linux, Windows). GitHub - montanaflynn/headless-terminal: Headless terminal — puppeteer for TUIs (vim/emacs/htop/nethack) with a Go CLI backed by libghostty-vt The Genesis of TurboPentest.com: Bridging the Gap in an AI-Code Explosion Era GitHub - VincenzoManto/Doxa: A YAML-driven multi-agent simulation platform for economic and social systems. It combines LLM-backed agents, market microstructure, relation graphs, and world events behind a FastAPI API and a React client. GitHub - IdreesInc/PokeMesh: Collaborative Pokémon over a decentralized network, no internet required! GitHub - tamnd/python-one: Historical Python source tarballs (1.0.1 through 2.0c1) mirrored from legacy.python.org, extracted and committed at their original release dates. GitHub - dixalex/decision-linter: Decision Linter — like ESLint for your thinking. Claude Code plugin that scores assumptions, runs consider-the-opposite, and outputs judgment memos. GitHub - pitermarx/Virgulas: An Workflowy Inspired Outliner Show HN: A standalone YouTube Music popup for OBS (no plugins required) GitHub - polotno-project/render-tag: Render HTML string into canvas using 2d native API libgoc/bench/README.md at 81798b3dd5e27d7f1e752b6cff0bdf3a95d381b7 · libgoc/libgoc Show HN: Llm.sql – Run a 640MB LLM on SQLite, with 210MB peak RSS and 7.4 tok/s GitHub - RivoLink/leaf: Terminal Markdown previewer — GUI-like experience. [China AI News] Eight Chinese chip families ran DeepSeek V4 on launch day GitHub - michaelaz774/decision-engine: A decision operating system for startup founders, powered by Claude Code. Synthesizes wisdom from 25+ legendary founders and investors into interactive AI-driven decision frameworks. Sheetflow App - Webflow Apps & Integrations Questly — The Third Rail GitHub - crufter/safer: Sleep better while AI agents have shell access. gitrails/README.md at main · maxawzsinger/gitrails Show HN: RustNmap | Hacker News GitHub - 0x0funky/agent-sprite-forge: Agent Skill for generating 2D sprite sheets, transparent PNG frames, and animated GIFs from prompts. Submissions from github.com/darshanfofadiya | Hacker News GitHub - seb3773/ntfs-repair-rfc: A legally defensible, industry-grade blueprint for building an open-source NTFS structural repair engine from scratch. TOSTask - Chrome 应用商店 GitHub - Fergana-Labs/stash: Shared memory for your team's coding agents GitHub - AdirAmsalem/easl: Instant hosting for AI agents — turn output into pages worth sharing Show HN: Pdfnative – zero-dependency TypeScript PDF engine GitHub - EricNelson12/retrocycles-hilbert GitHub - ONSARI/payclaw-skill Earful — A voice-only social network GitHub - Chrilleweb/dotenv-diff: Validate environment variable usage in your codebase llms-wordpress-plugin-benchmark/README.md at main · guilamu/llms-wordpress-plugin-benchmark GitHub - agentdmai/teamfuse: Fuse Claude Code agents into a working team. AgentDM-powered template with a cabinet-style control panel, five starter roles Thedex — AI-Native Log Intelligence Introducing Universal Deploy (+server) | Vike GitHub - thomas-vilte/mls-go: MLS Protocol (RFC 9420) implementation in Go. Secure group key exchange with forward secrecy and post-compromise security for E2EE messaging. GitHub - tamnd/python-0.9.1: Python 0.9.1 from 1991, Guido van Rossum's first public release, patched to compile on modern systems GitHub - orchidfiles/ungate: Use your Claude and ChatGPT subscriptions in Cursor instead of paying for API tokens. Show HN: Rusty Browser – AI rust service spinning up AI browsers Show HN: Seleci – Pre-built AI agents that keeps your business running GitHub - SkardiLabs/skardi: Spark for Agents — a data platform that gives AI agents full data autonomy so every dataset in your stack becomes something an agent can actually use. sss/Design.md at share-hn · ekipan/sss GitHub - TwillAI/agentbox-sdk: The open-source TypeScript SDK for running AI coding agents in sandboxes. One unified API — swap agents and infrastructure providers without changing your code. GitHub - cheprasov/ts-jsbt: JavaScript Binary Transfer (JSBT) – a binary serialization format designed for JavaScript → JavaScript communication. GitHub - AI-Colleagues/skill-mgr: Agent Skill manager. Install a skill for all supported or specified agents When Your Repo Moves, Your AI Coding History Doesn’t Buffer zoom GitHub - janaraj/tnl: Structured English contracts for AI coding agents — proposed by the agent, approved by you, saved on disk, read by every future session. Show HN: Slopify – An AI agent skill to slopify a codebase GitHub - tinyhumansai/openhuman: Your Personal AI super intelligence. Private, Simple and extremely powerful. Show HN: Reducing a 66-node dependency cycle to 13 in Scrapy GitHub - NV404/gova GitHub - latitude-dev/eval-skills: LLM eval skills for developers. Free tools to find failure patterns, build evals, and improve AI quality in production GitHub - BadC-mpany/lilith-zero: ⚸ Lilith Zero - Security Middleware for MCP tool calls written in Rust. GitHub - pumpkin-bit/Flux3n1: Music generation using the Collatz conjecture formula GitHub - Lumen-Labs/brainapi2: BrainAPI is a knowledge graph–powered AI memory layer that transforms unstructured data into structured knowledge, enabling intelligent search, recommendations, and contextual memory for AI agents and applications. An agent-native static host for AI-generated sites · VibeDrop GitHub - k38f/envsleuth: 🕵️ Detective for env vars in Python code. Finds os.getenv/os.environ usages via AST and checks them against your .env file. whodb/cli at main · clidey/whodb GitHub - Higangssh/winclipshot: Windows clipboard-to-path helper for terminal CLIs like Claude Code. Screenshot with Win+Shift+S, paste the saved path with Ctrl+V GitHub - decisionbox-io/decisionbox-platform: DecisionBox connects to your data warehouse, runs autonomous AI agents that write and execute SQL, and surfaces validated insights and actionable recommendations — without you asking a single question. GitHub - scastiel/kado: Kadō — A privacy-first habit tracker for iPhone and iPad. GitHub - franzenzenhofer/tinyscreenshot: Token-frugal screenshots for AI agents. A default capture costs ~540 tokens instead of ~2100. GitHub - russellromney/honker: SQLite extension + bindings for Postgres NOTIFY/LISTEN semantics with durable queues, streams, pub/sub, and scheduler Manex Hub App - App Store Release 0.5 · greymattergames/unbug GitHub - mljar/features_goldmine: Features Engineering Made Easy GitHub - chojs23/lazyagent: TUI for watching all your AI coding agents(claude, codex and opencode) Running Is The Hardest Endurance Sport? Not so Fast Show HN: Canopy – A2UI experiment in Go for macOS/AppKit Show HN: Share browser recordings on Cloudflare Pages from the command line GitHub - aiptimizer/TurboOCR: Fast GPU OCR server. 270 img/s on FUNSD. TensorRT FP16, PP-OCRv5, HTTP + gRPC. Show HN: We built a way for Claude Code to join meetings like a real teammate Show HN: Razorpay-universal – A framework-agnostic Razorpay SDK
feed-repeat
abhin4v · 2026-06-13 · via Hacker News: Show HN

A Haskell tool that repeats entries from RSS/Atom feeds into new feeds. It fetches entries from source feeds, and selects a random subset using weighted sampling where older entries have higher priority, and inserts them in output feeds. This blog post describes the motivation behind it.

Table of Contents

  • Features
  • Installation
  • Prerequisites
  • Building
    • Build with Cabal
    • Build with Nix
  • Usage
    • NixOS Module
    • systemd Service
    • Docker
    • Web Server
    • GitHub Pages
  • CLI Usage
  • Configuration
  • License
  • Changelog
  • Contributing

Features

  • Processes multiple source feeds with individual configurations.
  • Uses exponential weighting to prioritize older entries.
  • Caches fetched feeds to handle source feed unavailability.
  • Filters entries by minimum age to avoid repeating recent content.
  • Supports RSS, Atom and RDF feed formats.

Installation

feed-repeat is available as statically-linked binaries for AArch64 and AMD64 architectures in the releases. It is also available as a Docker image in the GitHub Container Repo.

Prerequisites

This project is written in Haskell. You don’t need Haskell experience to use this tool, but you’ll need the Haskell compiler and build tools installed to build it.

The easiest way to install Haskell is via GHCup. Run GHCup to install GHC (9.10+) and Cabal. Alternatively, check your system’s package manager for pre-built packages.

Nix is optional. It is required for nix builds and NixOS module support.

Building

First, clone the repository and navigate into it:

git clone https://github.com/abhin4v/feed-repeat.git
cd feed-repeat

Build with Cabal

Build with Nix

Enter the Nix shell:

Run the scripts available in Nix shell:

# Build the project
build

# Build a static binary
build-static x86_64
# or build-static aarch64

# Run the tool with example config
run

Usage

This project can be used as a Nix module, a Systemd service, a Docker container, or hosted on GitHub Pages.

Using as a NixOS Module

The project includes a NixOS module (nix/module.nix) for easy integration into NixOS systems. Import it in your configuration:

{
  imports = [ ./feed-repeat/nix/module.nix ];

  services.feed-repeat = {
    enable = true;
    
    # Feed configurations
    config = [
      {
        sourceFeedUrl = "https://example.com/feed.atom";
        outputFilename = "example-feed";
        saveSourceFeedEntries = true;
        repeatedEntryCount = 3;
        minimumEntryAgeDays = 7;
        maxEntryCountPerDomain = 1;
        selectionAlpha = 0.9;
      }
    ];
    
    # Output and cache directories
    outputDir = "/var/lib/feed-repeat";
    cacheDir = "/var/cache/feed-repeat";
    
    # Run frequency
    timerOnCalendar = "daily";
    
    # Optional: serve feeds via Nginx
    enableNginx = true;
    virtualHost = "feeds.example.com";
    virtualHostPath = "/";
    enableSSL = true;
  };
}

The module automatically:

  • Creates a systemd service with configurable timer.
  • Sets up user/group with appropriate permissions.
  • Generates the configuration file from your NixOS settings.
  • Optionally configures Nginx to serve the output feeds.

Using as a systemd Service

For non-NixOS systems, a systemd service file (configs/feed-repeat.service) is provided. To set it up:

  1. Create user and group:

    sudo useradd -r -s /bin/false feed-repeat
  2. Create required directories:

    sudo mkdir -p /var/lib/feed-repeat /var/cache/feed-repeat /etc/feed-repeat
    sudo chown feed-repeat:feed-repeat /var/lib/feed-repeat /var/cache/feed-repeat
    sudo chmod 750 /var/lib/feed-repeat /var/cache/feed-repeat
  3. Add web server user to feed-repeat group:

    sudo usermod -a -G feed-repeat www-data

    This allows the web server (running as www-data) to read the output feeds from /var/lib/feed-repeat. Change the user as appropriate.

  4. Install the service file:

    sudo cp configs/feed-repeat.service /etc/systemd/system/
  5. Place your configuration:

    sudo cp config.yaml /etc/feed-repeat/config.yaml
    sudo chown feed-repeat:feed-repeat /etc/feed-repeat/config.yaml
    sudo chmod 640 /etc/feed-repeat/config.yaml
  6. Build and install the binary:

    cabal install --installdir=/tmp --install-method=copy --overwrite-policy=always
    sudo install -D -m 0755 /tmp/feed-repeat /usr/local/bin/feed-repeat

    Or use the binaries available for download.

  7. Install the timer unit:

    sudo cp configs/feed-repeat.timer /etc/systemd/system/
  8. Enable and start the service:

    sudo systemctl daemon-reload
    sudo systemctl enable --now feed-repeat.timer

Using as a Docker Image

A Docker image can be built with Nix:

# Enter nix-shell, then build the Docker image
build-docker x86_64
# or build-docker aarch64

# Load into Docker daemon
docker load < result

# Alternatively, you can pull the pre-built image from GHCR
docker pull ghcr.io/abhin4v/feed-repeat:latest

# Run the container
docker run --rm \
  -v /path/to/config.yaml:/etc/feed-repeat/config.yaml:ro \
  -v feed-repeat-output:/var/lib/feed-repeat \
  -v feed-repeat-cache:/var/cache/feed-repeat \
  feed-repeat:latest

The container runs as a non-root user (UID/GID 1000:1000). If you bind-mount host directories instead of using named volumes, ensure they are writable by that UID, for example:

sudo chown -R 1000:1000 /path/to/output /path/to/cache

Named Docker volumes (as used in the examples above) are handled automatically by the Docker runtime.

Scheduling Runs

Since the container runs once and exits, you need to schedule it externally:

  • Use the host’s cron or systemd timer to run the container periodically:

    # Via cron: add to crontab (runs daily at 2 AM)
    0 2 * * * docker run -v /path/to/config.yaml:/etc/feed-repeat/config.yaml:ro -v feed-repeat-output:/var/lib/feed-repeat -v feed-repeat-cache:/var/cache/feed-repeat feed-repeat:latest
  • Docker Compose with Ofelia: Use Docker Compose with the Ofelia scheduler to run the container on a schedule:

    services:
      feed-repeat:
        image: feed-repeat:latest
        volumes:
          - /path/to/config.yaml:/etc/feed-repeat/config.yaml:ro
          - feed-repeat-output:/var/lib/feed-repeat
          - feed-repeat-cache:/var/cache/feed-repeat
        labels:
          ofelia: "enabled"
          ofelia.enabled: "true"
          ofelia.my-task.schedule: "@daily"
          ofelia.my-task.command: "/bin/feed-repeat --config /etc/feed-repeat/config.yaml --output-dir /var/lib/feed-repeat --cache-dir /var/cache/feed-repeat"
    
      ofelia:
        image: mcuadros/ofelia:latest
        volumes:
          - /var/run/docker.sock:/var/run/docker.sock
        command: daemon --docker
    
    volumes:
      feed-repeat-output:
      feed-repeat-cache:

    Run with: docker-compose up -d.

  • Kubernetes: If deployed on Kubernetes, use native CronJob resources for scheduling.

  • Docker Swarm: Use native scheduled task features if using Docker Swarm.

Serving Feeds with a Web Server

To serve the output feeds publicly, you can use any web server. Basic example configurations are provided for Nginx, Apache, and Caddy in the configs directory.

Hosting on GitHub Pages

You can run and host feed-repeat on GitHub Actions and Pages: fork this repo, edit config.yaml, and let GitHub Actions publish your repeated feeds to GitHub Pages. See the full Hosting on GitHub Pages guide for the step-by-step setup.

CLI Usage

feed-repeat --config config.yaml --output-dir ./output --cache-dir ./cache

Options

  • --config FILE: Path to YAML configuration file containing feed sources (required).
  • --output-dir DIR: Directory where output Atom files will be written (required).
  • --cache-dir DIR: Directory where cached Atom files will be stored (default: current directory).
  • --user-agent STRING: User-Agent header to send in HTTP requests (default: ‘feed-repeat/’).
  • --validate: Only validate the config file and exit.
  • --verbose: Enable all logging.
  • --quiet: Enable only warning and error logging.
  • --version: Show version information.

Configuration

Create a YAML file with a list of feed tasks:

- sourceFeedUrl: "https://example.com/feed.atom"
  outputFilename: "unique-id-1"
  saveSourceFeedEntries: true
  repeatedEntryCount: 3
  minimumEntryAgeDays: 7
  maxEntryCountPerDomain: 1
  selectionAlpha: 0.9
  passthroughNewEntries: true

- sourceFeedUrl: "https://another-site.com/rss.xml"
  outputFilename: "unique-id-2"
  saveSourceFeedEntries: false
  repeatedEntryCount: 1
  minimumEntryAgeDays: 14

See config.yaml for all available parameters and their meanings.

License

MIT

Changelog

See CHANGELOG.

Contributing

I consider this is a done software. Maybe some day when JSONFeed gets popular, I’d consider adding support for it. Other than that, I don’t foresee adding any new features. I’ll keep doing bugfixes, security fixes and dependency upgrades.

Please feel free to create an issue if you find a bug. I’m not inclined to accept pull requests unless there is a very compelling reason.

Disclaimer: This is a personal project. The views, code, and opinions expressed here are my own and do not represent those of my current or past employers.