Chinese documentation: README.zh-CN.md
如果你更习惯中文,请直接跳转到 中文版说明。
A personal multi-source recommendation and briefing system.
It pulls signals from GitHub, HuggingFace, X / Twitter, and other profile-driven sources, then uses your OpenAI-compatible LLM endpoint to:
- rank and summarize daily items
- generate source-level digests
- produce a cross-source narrative report
- generate research ideas from the day’s signals
This repository is useful in two modes:
-
Daily digest engineGenerate daily digests from GitHub, HuggingFace, and X / Twitter, then send them by email. -
Personal intelligence workflowMonitor a specific circle, merge signals across sources, and output a readable report with interpretation, predictions, and ideas.
| Source | Data | Notes |
|---|---|---|
| GitHub | Trending repositories | Good for open-source tools, frameworks, and engineering momentum |
| HuggingFace | Daily papers + popular models | Good for research and model ecosystem tracking |
| X / Twitter | Account timelines via RapidAPI | Supports static account pools and profile-driven discovery |
daily-recommender/
├── main.py # CLI entry
├── main_gpt.sh # Backward-compatible wrapper
├── scripts/run_daily.sh # Primary launcher script
├── config.py # Shared config dataclasses
├── base_source.py # Shared source pipeline
├── report_generator.py # Cross-source narrative report
├── idea_generator.py # Research idea generation
├── profiles/ # Input profiles and static account lists
├── docs/ # Technical notes
├── state/ # Local runtime watchlists / discovery state
├── sources/ # GitHub / HuggingFace / Twitter sources
├── fetchers/ # Raw data fetch clients
├── email_utils/ # HTML templates
├── llm/ # OpenAI-compatible + Ollama wrappers
└── history/ # Generated daily outputs
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txtcp .env.example .envMinimum required LLM settings:
PROVIDER=openai
MODEL_NAME=your-model-name
BASE_URL=https://your-openai-compatible-endpoint/v1
API_KEY=your_api_key
TEMPERATURE=0.5bash scripts/run_daily.shbash main_gpt.sh still works as a compatibility wrapper.
The project auto-loads .env from the repository root. Keep runtime settings there instead of hardcoding them in scripts.
The preferred path is the standard trio:
PROVIDER=openai
MODEL_NAME=gemini-3-flash-preview
BASE_URL=http://your-endpoint/v1
API_KEY=your_api_key
TEMPERATURE=0.5Notes:
PROVIDERis usuallyopenaiBASE_URLmust point to an OpenAI-compatible endpointMODEL_NAMEis the exact model stringAPI_KEYis your provider credential
If you want the main pipeline to actually send emails, SMTP is required:
SMTP_SERVER=smtp.example.com
SMTP_PORT=465
SMTP_SENDER=you@example.com
SMTP_RECEIVER=you@example.com
SMTP_PASSWORD=your_smtp_passwordNotes:
SMTP_RECEIVERsupports multiple emails separated by commas465uses SSL by default
X currently uses RapidAPI twitter-api45:
X_RAPIDAPI_KEY=your_rapidapi_key
X_RAPIDAPI_HOST=twitter-api45.p.rapidapi.com
X_ACCOUNTS_FILE=profiles/x_accounts.txtTo enable profile-driven account discovery:
X_DISCOVER_ACCOUNTS=1
X_PROFILE_FILE=
X_PROFILE_URLS=
X_DISCOVERY_PERSIST_FILE=state/x_accounts.discovered.txtDAILY_SOURCES="github huggingface"
NUM_WORKERS=8
DESCRIPTION_FILE=profiles/description.txt
GH_LANGUAGES="all"
GH_SINCE=daily
GH_MAX_REPOS=30
HF_CONTENT_TYPES="papers models"
HF_MAX_PAPERS=30
HF_MAX_MODELS=15
GENERATE_REPORT=0
GENERATE_IDEAS=0.venv/bin/python main.py --sources github --save
.venv/bin/python main.py --sources huggingface --save
.venv/bin/python main.py --sources twitter --save.venv/bin/python main.py --sources github huggingface twitter --save.venv/bin/python main.py \
--sources github huggingface twitter \
--save \
--generate_report.venv/bin/python main.py \
--sources github huggingface twitter \
--save \
--generate_ideas \
--researcher_profile profiles/researcher_profile.mdAll generated artifacts are written into history/:
history/
├── github/<date>/
├── huggingface/<date>/
├── twitter/<date>/
├── reports/<date>/
└── ideas/<date>/
Typical per-source outputs:
json/: item-level caches<date>.md: Markdown digest*_email.html: HTML email rendering
Report directory:
report.jsonreport.mdreport.html
A light interest profile used by source-level filtering and summarization.
A richer profile better suited for --generate_report and --generate_ideas.
Static monitoring account pool.
Persisted discovered account pool from profile-driven discovery. It is ignored by git by default.
If you only want to verify that the standard LLM trio works:
.venv/bin/python - <<'PY'
from main import load_dotenv, env_str
from llm.GPT import GPT
load_dotenv()
model = env_str("MODEL_NAME")
base_url = env_str("BASE_URL")
api_key = env_str("API_KEY")
client = GPT(model, base_url, api_key)
print(client.inference("Reply with exactly OK.", temperature=0))
PYIf the output is OK or OK., the standard endpoint path is working.
- The main pipeline sends email directly, so SMTP is required for full end-to-end runs
- X depends on RapidAPI stability
- GitHub / HuggingFace / Twitter digests are generated first, then optionally merged into a unified report
codex_bridgehas been removed; the repository now uses only the standard model configuration path