Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx skills add lovekeji-ai/keji-skills --skill ai-news-kejigit clone --depth 1 https://github.com/lovekeji-ai/keji-skillsWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/lovekeji-ai/keji-skills/ai-news-keji)<a href="https://agentmods.dev/skills/lovekeji-ai/keji-skills/ai-news-keji"><img src="https://agentmods.dev/badge/skills/lovekeji-ai/keji-skills/ai-news-keji/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/lovekeji-ai/keji-skills/ai-news-keji"><img src="https://agentmods.dev/badge/skills/lovekeji-ai/keji-skills/ai-news-keji.svg" alt="Reviewed on agentmods" width="80" height="20"></a>- NVIDIA SkillSpector pass
What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00130 | $0.07908 |
| Opus 5 | $0.00065 | $0.03954 |
| Sonnet 5 | $0.00026 | $0.01582 |
| Haiku 4.5 | $0.00013 | $0.00791 |
Grade A, and why
ai-news-keji scanned grade A with 1 finding against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 12d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Makes network callslowCapability
Not a fault in itself. Listed so you know the mod talks to something, and to what.
默认抓 `items?mode=selected`,脚本会自动带 AI HOT API 要求的浏览器式 `User-Agent`,并按目标日期过滤 `publishedAt`。不要手写 `curl` 省略 UA,也不要把整份 API raw JSON 直接喂给 LLM;后续只让 `build-summary-context.py` 读取 `aihot-normalized.json`。 How it starts
The opening of the file, as written. The whole thing — 387 lines — stays where its author put it; the contents beside it link to each section on GitHub.
AI 科技新闻日报
从用户配置的信息源生成适合 Obsidian 使用的 AI/科技新闻原始稿和摘要稿。
交互语言
所有面向用户的说明、进度更新、错误解释和最终回复都必须使用中文。命令、文件名、配置键、环境变量、URL、产品名和 Newsletter 名称保持原样。
启动工作流时不要用英文开场,例如不要说 “I'll start...”。应使用类似“我先检查 ai-news-keji 的初始化状态。”这样的中文说明。
运行约束(重要)
- 所有 Python 命令默认使用 repo-local
.venv/bin/python,优先从实际开发仓库根目录运行,而不是盲目假设~/.hermes/skills/...就是可执行 repo。先用scripts/doctor.py确认当前环境指向的真实仓库路径;如果 doctor 输出了开发仓库(例如~/Code/ai-news-keji),后续init.py/check-run-state.py/build-summary-context.py/ fetch 脚本都从那个 repo root 执行,确保使用同一份.venv、prompts/summary-template.md和最新脚本。 - 凭据只走环境变量:IMAP 账号/密码/授权码绝不写入
config.yaml,只通过email.imap.username_env/password_env指定的环境变量提供。 - 不要把整份 raw JSON / normalized JSON / 原始稿 / transcript 直接喂给模型。heavy source 必须先 deterministic normalization,再构建 compact context,最后才进入 LLM 总结步骤。
- cron / 无人值守场景下的 partial-run 默认策略:如果
check-run-state.py显示has_existing=true,且现有产物只有缓存、原始稿/摘要稿缺失,这类情况默认视为“补充抓取 / 补全产物”,优先复用已有缓存、补抓当前可用来源、重建summary-context.md,然后补写原始稿和摘要稿;不要把这种 cache-only partial run 直接当成需要覆盖重跑的信号。 - 网站来源与 compact context 的一致性要显式验证:抓到
websites.json之后,必须确认当前build-summary-context.py是否真的把网站条目纳入summary-context.md。如果没有纳入,就要么先补齐脚本/流程再依赖这些网站条目,要么明确把网站来源降级为“已缓存但未进入本轮 compact context”,不要声称它已经参与了原始稿/摘要稿生成。 - email.mode = mcp 且目标时区为亚洲早晨时,Newsletter 搜索默认用近 2–3 天窗口再过滤目标日期:不要只按“目标日期当天”搜索 Gmail,因为美区 newsletter 经常在上海上午之前仍落在前一自然日或跨日边界。抓取后只保留命中白名单来源、且实际属于本轮日报的结构化条目。
- 缓存结构化邮件或网页摘要前,先做不可见字符清洗:去掉零宽字符、方向控制符等隐形字符,再写
email-raw.json/ 其他缓存,避免安全扫描把结构化缓存误判为可疑内容。
路径
所有文件都相对于 skill 目录解析,也就是包含 SKILL.md 的目录。
- 本地配置:
config.yaml - 公开配置模板:
config.example.yaml - 本地来源:
sources.yaml - 公开来源模板:
sources.example.yaml - 初始化入口:
scripts/init.py - 初始化向导:
scripts/init_wizard.py - 运行状态检查:
scripts/check-run-state.py - 摘要模板:
prompts/summary-template.md - 健康检查:
scripts/doctor.py - AI HOT 抓取脚本:
scripts/fetch-aihot.py - RSS 抓取脚本:
scripts/fetch-rss.py - IMAP 邮件抓取脚本:
scripts/fetch-email-imap.py - 外部重型来源 normalization:
scripts/normalize-external-source.py
What ships with it
24 files beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.
- agents/openai.yaml 229 B
- config.example.yaml 3.6 KB
- prompts/summary-template.md 1.1 KB
- README.en.md 9.2 KB
- README.md 12 KB
- references/filter-rules.example.md 1.3 KB
- references/init-flow.md 2.7 KB
- requirements.txt 34 B
- scripts/_runtime.py 1.5 KB runs code
- scripts/analyze-source-freshness.py 8.2 KB runs code
- scripts/build-summary-context.py 21 KB runs code
- scripts/check-run-state.py 13 KB runs code
- scripts/doctor.py 9.9 KB runs code
- scripts/fetch-aihot.py 11 KB runs code
- scripts/fetch-email-imap.py 12 KB runs code
- scripts/fetch-rss.py 4.7 KB runs code
- scripts/init_wizard.py 21 KB runs code
- scripts/init.py 34 KB runs code
- scripts/normalize-external-source.py 26 KB runs code
- scripts/sync-hermes-skill.sh 2.5 KB runs code
- sources.example.yaml 2.2 KB
- tests/test_aihot_integration_flow.py 5.1 KB runs code
- tests/test_fetch_aihot.py 4.1 KB runs code
- tests/test_normalize_external_source.py 4.4 KB runs code
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 12d ago First seen · 387 lines · 130 tokens per session scan A b158699098cd
ai-news-keji is a skill published in the GitHub repository lovekeji-ai/keji-skills (49 stars, last pushed 1mo ago), licensed MIT. It adds 130 tokens to every session and 7,908 once invoked, about $0.0006 per session on Opus 5. A static security scan graded it A with 1 finding (makes network calls). No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.
Other skills, from other repositories
systematic-debugging
Use when encountering any bug, test failure, or unexpected behavior, before proposing fixes.
local-ai-agents
Build local-first AI agents that run entirely on a developer workstation with Microsoft Foundry Local and Qwen function-calling models. Covers Small Language Models (SLMs), the OpenAI-compatible local endpoint, sandboxed local tools, local RAG with Chroma, local MCP servers, hybrid cloud/local routing, and the…
next-cache-components-adoption
Turn on Cache Components in a Next.js app and resolve the blocking routes it surfaces. Use when the user wants to enable, adopt, or migrate to Cache Components, flip the cacheComponents flag, work through a flood of blocking-prerender / instant validation errors, run the cache-components-instant-false codemod, or…
chat-pet-sprite-creation
Use when creating or changing VS Code chat pet sprite art, sprite sheets, state animations, eye treatments, Stable/Insiders variants, or pet transitions under src/vs/workbench/contrib/chat/browser/widget/media/chatPet.
cpu-profile-analysis
Analyze V8/Chrome CPU profiles (.cpuprofile) and DevTools trace files (Trace-.json). Use when: profiling performance, investigating slow functions, comparing code paths, finding bottlenecks, analyzing timeToRequest, understanding call trees from sampling profiler data, analyzing layout/paint/rendering, investigating…
insight-error-page
Write or audit an insight-kind error page for the Next.js dev overlay. Use when creating a new errors/ .mdx page, auditing an existing one, or checking that a page matches the framework fix cards. Covers page structure, title alignment, FixCard cards with Copy prompt button, code snippets, terminology verification…