Metadata-Version: 2.4
Name: minigist
Version: 0.6.0
Summary: A tool that generates concise summaries for you Miniflux feeds.
Author: eikendev
Maintainer: eikendev
Project-URL: Homepage, https://github.com/eikendev/minigist
Keywords: miniflux,rss,feed,ai,summarization,cli
Classifier: Environment :: Console
Classifier: Programming Language :: Python :: 3
Classifier: Topic :: Internet :: WWW/HTTP :: Dynamic Content :: News/Diary
Classifier: Topic :: Text Processing :: Markup
Classifier: Topic :: Utilities
Requires-Python: >=3.13
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: apprise>=1.9.3
Requires-Dist: beautifulsoup4>=4.14.3
Requires-Dist: click>=8.1.8
Requires-Dist: httpx>=0.28.1
Requires-Dist: httpx-retries>=0.4.5
Requires-Dist: markdown>=3.8
Requires-Dist: miniflux>=1.1.3
Requires-Dist: nh3>=0.2.21
Requires-Dist: openai>=1.76.0
Requires-Dist: pydantic>=2.11.3
Requires-Dist: pyyaml>=6.0.2
Requires-Dist: structlog>=25.3.0
Requires-Dist: tenacity>=9.1.2
Requires-Dist: trafilatura>=2.0.0
Dynamic: license-file

<div align="center">
	<h1>minigist</h1>
	<h4 align="center">
		AI-powered summaries for your <a href="https://miniflux.app/">Miniflux</a> feeds.
	</h4>
	<p>Turn your long Miniflux articles into clear, concise summaries.</p>
</div>

<p align="center">
	<a href="https://github.com/eikendev/minigist/actions"><img alt="Build status" src="https://img.shields.io/github/actions/workflow/status/eikendev/minigist/main.yml?branch=main"/></a>&nbsp;
	<a href="https://github.com/eikendev/minigist/blob/main/LICENSE"><img alt="License" src="https://img.shields.io/github/license/eikendev/minigist"/></a>&nbsp;
	<a href="https://pypi.org/project/minigist/"><img alt="PyPI" src="https://img.shields.io/pypi/v/minigist"/></a>&nbsp;
</p>

## 🤘&nbsp;Features

- **Automatic summarization** of unread Miniflux entries
- **Configurable filters** to target specific feeds
- **Notification support** via Apprise for various messaging services
- **Dry-run mode** to preview changes without modifying entries
- **Structured logging** for better debugging and monitoring

## 🚀&nbsp;Installation

Install minigist using `pip`:

```bash
pip install minigist
```

Install minigist using `uv`:

```bash
uv tool install minigist
```

## 📄&nbsp;Usage

### Configuration

Create a configuration file at `~/.config/minigist/config.yaml`:

```yaml
miniflux:
  url: "https://your-miniflux-instance.com"
  api_key: "your-miniflux-api-key"

llm:
  api_key: "your-ai-service-api-key"
  base_url: "https://openrouter.ai/api/v1"   # Default
  model: "google/gemini-2.0-flash-lite-001"  # Default

prompts:
  - id: "default"
    system_prompt: "Generate an executive summary of the provided article."
  - id: "deep-dive"
    system_prompt: "Extract the nuanced arguments and counterpoints."

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

targets:
  # 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]
    use_pure: true  # Prefer pure.md for this target

scraping:
  pure_api_token: "optional-pure-md-token"
  # Always route matching URLs through pure.md.
  pure_base_urls:
    - "https://text.npr.org/"

fetch:
  limit: 50     # Default

notifications:
  urls:                # Apprise notification URLs (optional)
    - "discord://webhook_id/webhook_token"
    - "telegram://bot_token/chat_id"
```

See [Apprise documentation](https://github.com/caronc/apprise) for all supported notification services.

### Basic Commands

Run minigist to process unread entries:

```bash
minigist run
```

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

```bash
minigist run --dry-run
```

Increase logging verbosity:

```bash
minigist run --log-level DEBUG
```

Use a different configuration file:

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