ai-news-keji

ai-news-keji is a skill for Claude Code, Codex from lovekeji-ai/keji-skills. It costs 130 tokens per session (7,908 once invoked), scanned A, original, MIT.

A workflow for producing a daily AI and technology news digest in Markdown from configured newsletters, RSS feeds, websites, and optional external sources. It supports both source drafts and summaries for Obsidian, a note-taking app.

In plain words
What is it for?
Use it to generate, refresh, or reconfigure the daily digest, including its sources, output folder, personal preferences, and newsletter settings.
Why use it?
It organizes fetching, deduplication, scoring, and summarization while avoiding oversized or incomplete input to the language model. It also handles partial runs and keeps credentials out of configuration files.

Skill for Claude CodeCodex

Written for Claude Code and Codex: shipped in a Claude Code plugin, but also agents/openai.yaml present. Also seen: names the AskUserQuestion tool.

Part of the keji-skills plugin — 3 skills shipped together

Good fit Use it to generate, refresh, or reconfigure the daily digest, including its sources, output folder, personal preferences, and newsletter settings.

Compare 6 skills from other repositories ↓
Install with agentmods
npx agentmods add skills/lovekeji-ai/keji-skills/ai-news-keji
Install

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.

Any agent
npx skills add lovekeji-ai/keji-skills --skill ai-news-keji
Clone the repo
git clone --depth 1 https://github.com/lovekeji-ai/keji-skills

Made for: Claude Code, Codex.

Or install keji-skills, the plugin that ships this one along with the rest of its 3 skills.

Wrote 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.

agentmods badge for ai-news-keji

README.md
[![agentmods](https://agentmods.dev/badge/skills/lovekeji-ai/keji-skills/ai-news-keji/github.svg)](https://agentmods.dev/skills/lovekeji-ai/keji-skills/ai-news-keji)
Your own site
<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.

agentmods 80×15 button for ai-news-keji

Your own site · 80×15
<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>
Per session 130 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 7,908 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 1 finding. A grade says what 26 rules found in the file — not that it is safe. Third-party audits
  • NVIDIA SkillSpector pass 7 Sept 2026
How audits are shown
Origin original No closer match found in the catalogue.
Token cost

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.

ModelPer sessionOnce 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

Measured 12d ago against content hash b158699098cd, method: parsed. Prices are Anthropic first-party input rates as of 2026-09-12, from the pricing page.

Security

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.

The scan reads SKILL.md. This mod also ships 15 executable files (scripts/_runtime.py, scripts/analyze-source-freshness.py, scripts/build-summary-context.py, …), listed below but not scanned — reading those needs a real analyzer, not pattern matching.

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`。
skills/ai-news-keji/SKILL.md · 387 lines

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 执行,确保使用同一份 .venvprompts/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

Read the full file on GitHub · 387 lines

Changes

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.

  1. 12d ago First seen · 387 lines · 130 tokens per session scan A b158699098cd

Subscribe to this mod's changes

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.

Related

Other skills, from other repositories

systematic-debugging

Use when encountering any bug, test failure, or unexpected behavior, before proposing fixes.

obra/superpowers · 21 tokens

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…

microsoft/ai-agents-for-beginners · 200 tokens

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…

vercel/next.js · 95 tokens

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.

microsoft/vscode · 53 tokens

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…

microsoft/vscode · 71 tokens

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…

vercel/next.js · 83 tokens