https://github.com/notoriouslab/issueops-digest
Turn a GitHub Issue into a search trigger — keywords in, AI-filtered digest out. No backend needed. Just fork and go. 用 GitHub Issue 當操作介面,填關鍵字即觸發 Actions 自動搜尋、AI 篩選並回傳摘要。免後台、Fork 即用,適合懶人情報收集。
https://github.com/notoriouslab/issueops-digest
digest issueops keywords
Last synced: 2 months ago
JSON representation
Turn a GitHub Issue into a search trigger — keywords in, AI-filtered digest out. No backend needed. Just fork and go. 用 GitHub Issue 當操作介面,填關鍵字即觸發 Actions 自動搜尋、AI 篩選並回傳摘要。免後台、Fork 即用,適合懶人情報收集。
- Host: GitHub
- URL: https://github.com/notoriouslab/issueops-digest
- Owner: notoriouslab
- License: mit
- Created: 2026-03-06T05:57:11.000Z (3 months ago)
- Default Branch: main
- Last Pushed: 2026-04-02T05:36:43.000Z (2 months ago)
- Last Synced: 2026-04-02T18:56:18.277Z (2 months ago)
- Topics: digest, issueops, keywords
- Language: Python
- Homepage:
- Size: 954 KB
- Stars: 30
- Watchers: 1
- Forks: 10
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# issueops-digest
AI-powered news curation using GitHub Issues as your UI. No frontend, no server, no monthly fees.
**Search → AI Score → Checkbox Pick → Auto-capture**
## How it works
1. **Search**: Brave + Tavily (optional) fetch news and web results for your keywords
2. **Score**: Gemini AI filters out noise, scores articles by relevance and depth
3. **Pick**: Results appear as a GitHub Issue with checkboxes — open the GitHub app on your phone, tick what you want
4. **Capture**: Close the Issue → GitHub Actions auto-fetches full articles as Markdown
### The full flow in action
**Trigger a search via Telegram (optional) or CLI → get notified when results are ready → pick articles → auto-capture:**

**GitHub Issue with scored checkbox list — tick what you want, close to capture:**

**Captured article as clean Markdown:**

## Quick Start
### Option A: CLI Mode (run on your machine)
```bash
git clone https://github.com/notoriouslab/issueops-digest.git
cd issueops-digest
pip install -r requirements.txt
cp .env.example .env
# Fill in your API keys in .env
python web_digest.py "your search keywords"
```
### Option B: Zero-Server Mode (GitHub Actions only)
1. Fork this repo (keep it **private** — your Issues contain personal search data)
2. Go to **Settings → Secrets and variables → Actions**
3. Add these secrets: `BRAVE_API_KEY`, `GEMINI_API_KEY`, `GITHUB_TOKEN`
4. Optional: `TAVILY_API_KEY`, `TELEGRAM_BOT_TOKEN`, `TELEGRAM_CHAT_ID`
5. Edit `config.yaml` to set your topics
6. The scheduled search runs daily, or trigger manually via **Actions → Scheduled Search → Run workflow**
## API Keys
| Service | Required | Free Tier | Get it |
|---------|----------|-----------|--------|
| **Brave Search** | Yes | ~1000 calls/mo ($5 credit, requires card) | [brave.com/search/api](https://brave.com/search/api/) |
| **Gemini** | Yes | 1500 req/day | [aistudio.google.com/apikey](https://aistudio.google.com/apikey) |
| **GitHub Token** | Yes | Free | [github.com/settings/tokens](https://github.com/settings/tokens) (needs `repo` scope) |
| **Tavily** | No | 1000 calls/mo | [tavily.com](https://tavily.com/) |
| **Jina Reader** | No | Free (rate-limited) | No signup needed |
| **Telegram Bot** | No | Free | Talk to [@BotFather](https://t.me/BotFather) |
## Telegram Notifications (optional)
If configured, you'll get a ping when:
- **New Issues are ready** — "go check and pick your articles"
- **Capture is complete** — "your Markdown files are saved"
Setup: create a bot via [@BotFather](https://t.me/BotFather), get your Chat ID, add both as GitHub Secrets. That's it — no server, no polling, just two one-line `curl` calls in the Actions workflow.
Not configured? Everything still works, you just won't get push notifications.
## Configuration
Edit `config.yaml`:
```yaml
# Topics for scheduled search
topics:
- "AI agent framework"
- "台積電 供應鏈"
# Weight profile: default, news, research
weight_profile: default
# Your trusted sources (higher = more trusted, max 15)
authority_domains:
bloomberg.com: 15
reuters.com: 12
```
### Weight Profiles
| Profile | Best for | Behavior |
|---------|----------|----------|
| `default` | General use | Balanced scoring |
| `news` | Breaking news | Recency weighted higher |
| `research` | Deep research | Evergreen content protected from time decay |
```bash
python web_digest.py "quantum computing" --profile=research
```
## Security
> ⚠️ **Use a private repo.** Your Issues contain search keywords, selected articles, and personal notes.
- API keys: stored in `.env` (local) or GitHub Secrets (Actions) — never committed
- `.env` is pre-configured in `.gitignore`
- The app checks on startup that `.env` is gitignored and warns you if not
## Quota Tracking
In CLI mode, the app tracks your API usage in `.usage_stats.json` (gitignored) and warns you:
- **80%**: yellow warning
- **95%**: red alert
Limits are configurable in `config.yaml` under `quotas`.
## How the scoring works
1. **Brave Search** fetches news + web results; **Tavily** (optional) adds advanced search
2. Results are merged via **round-robin interleaving** so no single source dominates
3. **Jina Reader** fetches full text from quality platforms (Substack, Medium, etc.)
4. **Gemini AI** scores each result for relevance (0-10), flags duplicates
5. A **fuzzy keyword filter** (bilingual, order-independent) penalizes off-topic results
6. **Authority bonus** from your configured trusted domains
7. **Recency scoring** with evergreen protection in `research` mode
## License
MIT
## Credits
Built with the help of AI. Inspired by the belief that anyone with an idea can build useful tools — no CS degree required.