# AI Hot Brief Telegram Public

> Build a Chinese AI news digest for Telegram with a public-safe two-stage workflow. Use when Codex needs to run a bundled Stage 1 collector, do a mandatory second live-web pass, merge both stages into one candidate pool, rank 5 hot items plus 5 watch items, and send the final digest with the bundled Telegram sender helpers from any writable workspace.

- Skill: `godgod126/ai-hot-brief-telegram-public` (Agent Skill, multi-file: 5 files)
- Install (CLI): `npx skillmds@latest add godgod126/ai-hot-brief-telegram-public`
- Raw SKILL.md: https://api.skillmd.com/api/skills/godgod126/ai-hot-brief-telegram-public/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Productivity
- Author: godgod126 (https://skillmd.com/u/godgod126)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/godgod126/ai-hot-brief-telegram-public

---


# AI Hot Brief Telegram Public

Run this skill when the goal is to produce a Chinese AI digest for a general audience and send it to Telegram from any writable workspace.

## Workspace Compatibility

Before running, confirm the current workspace provides:

- write access, because Stage 1 creates `output/briefings/`
- Python 3.10+ with the packages listed in `requirements.txt`
- `TELEGRAM_BOT_TOKEN` and `TELEGRAM_CHAT_ID` for the final send step, either as environment variables or via a workspace `.env` file

The skill no longer depends on a project-local `main.py` or `scripts/send_latest_brief.ps1`. The bundled sender script is the default send path for public users.

## Workflow

1. Work from the current workspace. Stage 1 writes candidate-pool files into `output/briefings/`.
2. Treat this as a strict two-stage workflow:
   - Stage 1: run the bundled `scripts/build_brief.py` with `--skip-send`. The script only collects and organizes a candidate pool. It does not decide the final 5 + 5 and it must not send.
   - Stage 2: Codex must do another live web collection pass, add more candidates into the same pool, and only after that perform the final ranking.
3. Treat `--runtime-budget-seconds` as a hard timeout ceiling, not a fixed collection window. The script should finish as soon as the planned source batches are scanned.
4. Stage 2 is mandatory. Never skip it.
5. The automation-safe path must avoid browser MCP tools. Use only:
   - the Stage 1 script output
   - native live web search
   - direct webpage reading via non-browser web access
6. During both Stage 1 and Stage 2 collection, only add to the candidate pool. Do not decide the final 5 + 5 until collection is complete.
7. After both collection stages are done, rank the full combined pool with:
   - quantitative signals from `latest.json`
   - Codex qualitative judgment about public interest, freshness, spread, and mainstream relevance
8. Ensure the final brief has exactly 2 sections:
   - `过去 2 小时最值得发的 5 条`
   - `接下来可能爆的 5 条`
9. Ensure every item in both sections contains exactly `标题`、`时间`、`简介`、`来源`、`链接`.
10. Keep the output in Chinese except for necessary product names, company names, platform names, and a few unavoidable AI terms.
11. Only send after Stage 2 final ranking is complete and `latest.txt` has been rewritten as the final brief.
12. The final brief must be mostly Chinese. An English draft is invalid and must be translated before sending.

## Stage 1 Command

Run this first to generate the Stage 1 candidate pool.

Resolve `<skill-dir>` to the installed root of this skill, not the workspace root:

```powershell
python "<skill-dir>/scripts/build_brief.py" --cwd "." --window-minutes 120 --runtime-budget-seconds 600 --x-budget-seconds 180 --hot-count 5 --watch-count 5 --skip-send
```

## Stage 2 Collection And Ranking

After Stage 1:

1. Read `output/briefings/latest.json` first.
2. Treat `candidate_pool` as the current combined pool baseline, not as the final answer.
3. Always do a second live-web collection pass before ranking:
   - search the web again for fresher coverage
   - inspect the pages listed in `stage2_web_source_hints`
   - open and read direct story pages through native web access when needed
4. Check high-value pages such as:
   - Techmeme
   - Wired AI
   - CNBC AI
   - Financial Times AI
   - Product Hunt AI
5. Add Stage 2 findings into the same candidate pool. Do not bypass the pool and write the final 5 + 5 directly.
6. Only after the pool is complete, rank it with both:
   - quantitative fields already computed in `latest.json`, such as `review_score`, `heat_score`, `breakout_score`, `source_count`, and `observed_sources`
   - qualitative judgment about whether a story is actually broad, timely, and interesting for ordinary readers
7. Then write the final selections into:
   - `output/briefings/latest.txt`
   - `output/briefings/latest.json`
   - use UTF-8-safe file editing only
   - prefer direct file editing tools such as `apply_patch`
   - do not use shell redirection or PowerShell `Set-Content` for the final Chinese brief text
8. Before sending, update `latest.json` so it reflects:
   - the final combined candidate pool
   - final `hot_items`
   - final `watch_items`
   - `final_selection_ready = true`

## Send Command

After Stage 2 is complete, send the final brief:

```powershell
python "<skill-dir>/scripts/send_brief.py" --message-file "./output/briefings/latest.txt"
```

## Output Rules

- The script writes:
  - `output/briefings/latest.txt`
  - `output/briefings/latest.json`
- Stage 1 output is only a candidate-pool note.
- Stage 2 must rewrite `latest.txt` into the final brief before sending.
- Stage 2 must rewrite the final brief in Chinese, not English.
- Do not turn the brief into a technical digest.
- Do not fill the brief with papers, benchmarks, parameter counts, or low-level infra unless they have already become broad public stories.
- Cross-run repeats are allowed. Only dedupe inside the current run.
- `简介` must explain what the news actually says in 1 to 2 short sentences, not generic trend commentary.

## Source And Style References

- Read [references/source-policy.md](references/source-policy.md) for source priority, collection rules, and final ranking rules.
- Read [references/output-style.md](references/output-style.md) for the exact Chinese output format.

