docs: add README
This commit is contained in:
parent
f739508c8c
commit
01e11c6443
127
README.md
Normal file
127
README.md
Normal file
@ -0,0 +1,127 @@
|
||||
# Discord Feed Bots 🤖
|
||||
|
||||
Automated feed system that posts daily AI/agent digests to Discord channels. Zero LLM tokens — just fetch, format, and webhook.
|
||||
|
||||
## Feeds
|
||||
|
||||
| Feed | What it does | Schedule |
|
||||
|------|-------------|----------|
|
||||
| **Reddit Digest** | Top posts from AI subreddits (r/LocalLLaMA, r/ClaudeAI, r/ChatGPT, etc.) | Daily 7am MT |
|
||||
| **Trending Repos** | Trending GitHub repos in the AI/agent space | Daily 7am MT |
|
||||
| **New AI Repos** | New repos (<7 days old) with >100 stars | Daily 7am MT |
|
||||
| **Twitter/X** | Trending AI threads via Twitter API v2 | Daily 7am MT |
|
||||
| **Claude Code Releases** | New version detection from npm registry | Every 6h |
|
||||
| **Weekly Trends** | Clustered trend analysis using qdrant + ollama | Sundays 9am MT |
|
||||
|
||||
## Quick Start
|
||||
|
||||
```bash
|
||||
bun install
|
||||
|
||||
# Run a single feed (outputs to stdout)
|
||||
bun run feed reddit
|
||||
bun run feed trending
|
||||
bun run feed new-repos
|
||||
bun run feed twitter
|
||||
bun run feed claude-releases
|
||||
bun run feed weekly-trends
|
||||
|
||||
# Run all feeds
|
||||
bun run feed all
|
||||
|
||||
# Post directly to Discord via webhooks
|
||||
bun run src/post.ts reddit
|
||||
bun run src/post.ts all
|
||||
```
|
||||
|
||||
## Tools
|
||||
|
||||
### Image Generation
|
||||
```bash
|
||||
bun run src/tools/image-gen.ts "your prompt here"
|
||||
```
|
||||
Uses Google AI (Gemini 3 Pro Image Preview). Outputs to `/mnt/work/tmp/image-gen/`.
|
||||
|
||||
### Stem Splitting
|
||||
```bash
|
||||
bun run src/tools/stem-split.ts "artist - song name"
|
||||
```
|
||||
Downloads audio via yt-dlp, separates stems using UVR5 (audio-separator). Models stored at `/mnt/work/models/audio-separator/`.
|
||||
|
||||
## Architecture
|
||||
|
||||
```
|
||||
src/
|
||||
feeds/
|
||||
reddit-digest.ts — Reddit JSON API (7 subreddits, score ≥ 50)
|
||||
github-trending.ts — GitHub search API (AI/agent topics)
|
||||
new-ai-repos.ts — GitHub search (created last 7 days, >100★)
|
||||
claude-code-releases.ts — npm registry version tracking
|
||||
twitter-ai.ts — Twitter API v2 search/recent
|
||||
weekly-trends.ts — qdrant + ollama pipeline
|
||||
tools/
|
||||
image-gen.ts — Google AI image generation
|
||||
stem-split.ts — UVR5 audio stem separation
|
||||
config.ts — All feed configuration
|
||||
utils.ts — Shared helpers
|
||||
index.ts — CLI entry point
|
||||
post.ts — Webhook posting to Discord
|
||||
```
|
||||
|
||||
## How It Works
|
||||
|
||||
1. **Feeds** scrape public APIs (Reddit, GitHub, Twitter, npm)
|
||||
2. **Filters** apply score/age/relevance thresholds
|
||||
3. **Formatter** outputs Discord-ready markdown
|
||||
4. **Poster** sends to Discord channels via webhooks
|
||||
5. **Timers** (systemd) trigger everything on schedule
|
||||
|
||||
No AI is used for the daily feeds — just HTTP requests and string formatting.
|
||||
|
||||
The **weekly trends** feed is the exception: it embeds posts with `nomic-embed-text` (ollama), clusters them in qdrant, and summarizes with `glm-4.7-flash` — all local, zero API cost.
|
||||
|
||||
## Environment Variables
|
||||
|
||||
Copy `.env.example` to `.env` and fill in:
|
||||
|
||||
```
|
||||
TWITTER_BEARER_TOKEN=...
|
||||
QDRANT_URL=...
|
||||
QDRANT_API_KEY=...
|
||||
OLLAMA_HOST=http://localhost:11434
|
||||
GOOGLE_AI_API_KEY=...
|
||||
WEBHOOK_REDDIT=...
|
||||
WEBHOOK_TRENDING=...
|
||||
WEBHOOK_NEW_REPOS=...
|
||||
WEBHOOK_CLAUDE_RELEASES=...
|
||||
WEBHOOK_TWITTER=...
|
||||
WEBHOOK_WEEKLY_TRENDS=...
|
||||
```
|
||||
|
||||
## Deployment
|
||||
|
||||
Runs as systemd user timers:
|
||||
|
||||
```bash
|
||||
# Check timer status
|
||||
systemctl --user list-timers | grep feed
|
||||
|
||||
# Manual trigger
|
||||
systemctl --user start feed-bot-daily.service
|
||||
|
||||
# Logs
|
||||
cat /tmp/feed-bot.log
|
||||
```
|
||||
|
||||
## Adding a New Feed
|
||||
|
||||
1. Create `src/feeds/my-feed.ts` exporting `run(): Promise<string>`
|
||||
2. Add config to `src/config.ts`
|
||||
3. Add to `COMMANDS` in `src/index.ts`
|
||||
4. Add to `FEEDS` in `src/post.ts` with webhook env var
|
||||
5. Create Discord webhook for the target channel
|
||||
6. Add to systemd timer or create a new one
|
||||
|
||||
## License
|
||||
|
||||
MIT
|
||||
Loading…
x
Reference in New Issue
Block a user