Skip to main content

minigist

AI-powered summaries for your Miniflux feeds.

Turn your long Miniflux articles into clear, concise summaries.

Build status  License  PyPI 

✨ Why minigist?

Long-form feed entries are great for depth but hard to keep up with. Miniflux shows the full content, and without a summary layer you still have to read everything to decide what matters.

minigist solves this by generating concise summaries on the server side and writing them directly into each unread entry. This works with your current way to read Miniflux entries, no client changes needed.

🧠 How it works

  • You define prompts and targets in a YAML config file
  • minigist fetches the full text of unread entries (using pure.md if configured)
  • Your configured LLM generates summaries using your prompts
  • Summaries are written back into the Miniflux entry

🚀 Installation

Install minigist using pip:

pip install minigist

Install minigist using uv:

uv tool install minigist

📄 Usage

Configuration

Find below an example config file. By default, minigist searches for a config file in this order:

  • ~/.config/minigist/config.yaml
  • ~/.config/minigist/config.yml
  • ./config.yaml
  • ./config.yml
  • /etc/minigist/config.yaml
  • /etc/minigist/config.yml

You can override the path with the --config-file flag.

For credentials, you can set environment variables to override the YAML values:

  • MINIGIST_MINIFLUX_API_KEY → miniflux.api_key
  • MINIGIST_LLM_API_KEY → llm.api_key
miniflux:
  # Base URL of your Miniflux instance (required)
  url: "https://your-miniflux-instance.com"
  # Miniflux API key (required)
  api_key: "your-miniflux-api-key"
  # Request timeout in seconds (optional; default: 2)
  timeout_seconds: 2

llm:
  # API key for your LLM provider (required)
  api_key: "your-ai-service-api-key"
  # API base URL (optional; default: OpenRouter)
  base_url: "https://openrouter.ai/api/v1"
  # Model identifier to use (optional; default shown)
  model: "google/gemini-2.5-flash-lite"
  # Request timeout in seconds (optional; default: 60)
  timeout_seconds: 60
  # Max number of concurrent LLM requests (optional; default: 5)
  concurrency: 5

prompts:
  # Prompts define how summaries are produced.
  # Each prompt must have a unique id.
  - id: "default"
    prompt: "Generate an executive summary of the provided article."
  - id: "deep-dive"
    prompt: "Extract the nuanced arguments and counterpoints."

# minigist always appends a fixed system instruction that enforces JSON output
# and requires summary_markdown to be Markdown. This cannot be overridden.

# Optional: when no targets are defined, this prompt is used for all unread entries.
# If omitted, the first prompt in the "prompts" list is used.
default_prompt_id: "default"

targets:
  # Targets map feeds or categories to prompts.
  # When targets are defined, ONLY these feeds/categories are processed.
  # Overlaps across targets are errors.
  - prompt_id: "default"
    feed_ids: [1, 2]
  - prompt_id: "deep-dive"
    category_ids: [5]
    # Prefer pure.md for this target (optional; default: false)
    use_pure: true

scraping:
  # Token for pure.md (optional; improves rate limits)
  pure_api_token: "optional-pure-md-token"
  # Always route matching URLs through pure.md
  pure_base_urls:
    - "https://text.npr.org/"
  # Request timeout for scraping in seconds (optional; default: 5)
  timeout_seconds: 5

fetch:
  # Max unread entries to fetch per feed (optional; default: 50)
  limit: 50

notifications:
  # Apprise notification URLs for error/failure alerts (optional)
  - "discord://webhook_id/webhook_token"
  - "telegram://bot_token/chat_id"

[!NOTE] Notifications are only sent for errors or runs that finish with failures; summaries are not pushed as notifications.

See Apprise documentation for all supported notification services.

Run

Run minigist to process unread entries:

minigist run

Run in dry-run mode to see what would happen without making changes:

minigist run --dry-run

Increase logging verbosity:

minigist run --log-level DEBUG

Use a different configuration file:

minigist run --config-file /path/to/config.yaml

Metadata

Release files for minigist 0.9.6

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for minigist 0.9.6
File Size Uploaded
minigist-0.9.6.tar.gz 24.1 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for minigist 0.9.6
File Interpreter ABI Platform
minigist-0.9.6-py3-none-any.whl Python 3 none any Details

Total release size: 52.7 kB

Release files / minigist-0.9.6.tar.gz

Download URL minigist-0.9.6.tar.gz
Size 24.1 kB
Tags Source
SHA-256 checksum
How to use checksums
2d0dc7611bdd565365a3e1ff6cfff70c2f79e42c3bb45185fdd647810693554c
BLAKE2b-256 checksum
How to use checksums
088a6a72f30b19c715fab4100230b296f34a1e79dac55235d8a69e21fb5254c0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.12.6 {"installer":{"name":"uv","version":"0.12.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / minigist-0.9.6-py3-none-any.whl

Download URL minigist-0.9.6-py3-none-any.whl
Size 28.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
1a2dec3dd9efc9c44e4da7ea6951772f4235a3e380d00d912bef2b9c230cb3fe
BLAKE2b-256 checksum
How to use checksums
d233152155c692398ec91b0bcd9f1f254b2c9c0ba39383cd6d65e7a6cc6ed4f6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.12.6 {"installer":{"name":"uv","version":"0.12.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release history Release notifications | RSS feed

This release

0.9.6 This release

2 release files

0.9.5

2 release files

0.9.4

2 release files

0.9.3

2 release files

0.9.2

2 release files

0.9.1

2 release files

0.9.0

2 release files

0.8.0

2 release files

0.7.0

2 release files

0.6.2

2 release files

0.6.1

2 release files

0.6.0

2 release files

0.5.2

2 release files

0.5.1

2 release files

0.5.0

2 release files

0.4.0

2 release files

0.3.6

2 release files

0.3.5

2 release files

0.3.4

2 release files

0.3.3

2 release files

0.3.2

2 release files

0.3.1

2 release files

0.3.0

2 release files

0.2.8

2 release files

0.2.7

2 release files

0.2.6

2 release files

0.2.5

2 release files

0.2.4

2 release files

0.2.3

2 release files

0.2.2

2 release files

0.2.1

2 release files

0.2.0

2 release files

0.1.2

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page