尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证A 3-minute AI briefing written every weekday by an AI agent, with every fact checked against its source. MCP server + Gemini agent + guardrails.
翻译准备中
取自仓库 README
正在加载完整 README。
查看完整 README ↗A 3-minute AI briefing, written every morning by an AI agent, with every fact checked against its source.
thedailyaicup.pages.dev · Built by Shreya Deshpande
Every morning at 6–7 AM Central, with no human in the loop until review:
RSS feeds ─┐
Luma (iCal)┤ ┌─────────────┐
├─► MCP server ──►│ digest agent│──► checks.py ──► issue JSON ──► web app (Cloudflare Pages)
│ (6 tools) │ (Gemini) │ numbers, email (Buttondown, soon)
│ └─────────────┘ names, quotes
GitHub Actions: runs it every day, commits the issue, redeploys the app
The guardrails are the core of the project. The model only ever sees story IDs, titles, and summaries, never links. It returns JSON that refers to stories by ID, and the code, not the model, attaches every link, source name, and date. checks.py then verifies that each number, capitalized name, and quoted phrase in the model's text appears in that story's source.
server.py is a Model Context Protocol server, so Claude Desktop or any MCP client can use the same tools as the agent:
| Tool | What it returns |
|---|---|
get_ai_news | Recent AI stories from major tech outlets |
get_company_ai_updates | How real companies are using AI (optionally for one company) |
get_upcoming | Launches, betas, and events still to come, with a date only if the source states one |
get_dev_updates | New AI tools and techniques for engineers |
get_long_reads | Essays from respected AI newsletters |
get_ai_events | AI meetups and hackathons near a US state or Indian city |
Every tool clamps its inputs, times out after 10 seconds per feed, skips feeds that fail and reports which ones, and never crashes the server.
More detail: decisions, trade-offs, failure modes, and what changes at scale are in docs/DESIGN.md.
Python 3.10 · uv · MCP Python SDK · Gemini API · httpx · feedparser · Jinja2 · vanilla JavaScript · GitHub Actions · Cloudflare Pages
uv sync
echo "GEMINI_API_KEY=your-key" > .env # free key from aistudio.google.com
uv run mcp dev server.py # try the tools in MCP Inspector
uv run digest.py --dry-run # write today's issue into issues/
uv run build_site.py # build the web app into site/
uv run pytest # 50 tests, no network needed
uv run evals.py # fact-check the newest issue with the LLM judge
Use the tools in Claude Desktop with uv run mcp install server.py --name "Daily AI Cup" --with feedparser --with httpx --with pyyaml.
| File | Job |
|---|---|
server.py | MCP server: the 6 tools, each a thin wrapper |
feeds.py | Reading sources.yaml and fetching feeds |
filters.py | Text rules: cleaning, sponsored and AI detection, dates, dedupe |
evals.py | LLM-judge faithfulness scores, plus judge calibration |
digest.py | The agent: gather, write with Gemini, check, render |
checks.py | Guardrails for numbers, names, and quotes |
llm.py | The one place that talks to the LLM, with fallback models |
events.py | AI events from Luma city calendars |
build_site.py, templates/, site_static/ | The web app |
tests/ | pytest suite: guardrails, filters, dedupe, feeds, tools, events, agent steps (HTTP mocked) |
sources.yaml | Every feed, by section |
learning_path.yaml, resources.yaml, polls.yaml | Human-reviewed content the agent may copy but never invent |