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
- Work from the current workspace. Stage 1 writes candidate-pool files into
output/briefings/.
- 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.
- 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.
- Stage 2 is mandatory. Never skip it.
- 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
- 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.
- 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
- Ensure the final brief has exactly 2 sections:
过去 2 小时最值得发的 5 条
接下来可能爆的 5 条
- Ensure every item in both sections contains exactly
标题、时间、简介、来源、链接.
- Keep the output in Chinese except for necessary product names, company names, platform names, and a few unavoidable AI terms.
- Only send after Stage 2 final ranking is complete and
latest.txt has been rewritten as the final brief.
- 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:
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:
- Read
output/briefings/latest.json first.
- Treat
candidate_pool as the current combined pool baseline, not as the final answer.
- 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
- Check high-value pages such as:
- Techmeme
- Wired AI
- CNBC AI
- Financial Times AI
- Product Hunt AI
- Add Stage 2 findings into the same candidate pool. Do not bypass the pool and write the final 5 + 5 directly.
- 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
- 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
- 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:
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 for source priority, collection rules, and final ranking rules.
- Read references/output-style.md for the exact Chinese output format.
1---2name: ai-hot-brief-telegram-public3description: 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.4---56# AI Hot Brief Telegram Public78Run 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.910## Workspace Compatibility1112Before running, confirm the current workspace provides:1314- write access, because Stage 1 creates `output/briefings/`15- Python 3.10+ with the packages listed in `requirements.txt`16- `TELEGRAM_BOT_TOKEN` and `TELEGRAM_CHAT_ID` for the final send step, either as environment variables or via a workspace `.env` file1718The 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.1920## Workflow21221. Work from the current workspace. Stage 1 writes candidate-pool files into `output/briefings/`.232. Treat this as a strict two-stage workflow:24 - 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.25 - 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.263. 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.274. Stage 2 is mandatory. Never skip it.285. The automation-safe path must avoid browser MCP tools. Use only:29 - the Stage 1 script output30 - native live web search31 - direct webpage reading via non-browser web access326. 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.337. After both collection stages are done, rank the full combined pool with:34 - quantitative signals from `latest.json`35 - Codex qualitative judgment about public interest, freshness, spread, and mainstream relevance368. Ensure the final brief has exactly 2 sections:37 - `过去 2 小时最值得发的 5 条`38 - `接下来可能爆的 5 条`399. Ensure every item in both sections contains exactly `标题`、`时间`、`简介`、`来源`、`链接`.4010. Keep the output in Chinese except for necessary product names, company names, platform names, and a few unavoidable AI terms.4111. Only send after Stage 2 final ranking is complete and `latest.txt` has been rewritten as the final brief.4212. The final brief must be mostly Chinese. An English draft is invalid and must be translated before sending.4344## Stage 1 Command4546Run this first to generate the Stage 1 candidate pool.4748Resolve `<skill-dir>` to the installed root of this skill, not the workspace root:4950```powershell51python "<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-send52```5354## Stage 2 Collection And Ranking5556After Stage 1:57581. Read `output/briefings/latest.json` first.592. Treat `candidate_pool` as the current combined pool baseline, not as the final answer.603. Always do a second live-web collection pass before ranking:61 - search the web again for fresher coverage62 - inspect the pages listed in `stage2_web_source_hints`63 - open and read direct story pages through native web access when needed644. Check high-value pages such as:65 - Techmeme66 - Wired AI67 - CNBC AI68 - Financial Times AI69 - Product Hunt AI705. Add Stage 2 findings into the same candidate pool. Do not bypass the pool and write the final 5 + 5 directly.716. Only after the pool is complete, rank it with both:72 - quantitative fields already computed in `latest.json`, such as `review_score`, `heat_score`, `breakout_score`, `source_count`, and `observed_sources`73 - qualitative judgment about whether a story is actually broad, timely, and interesting for ordinary readers747. Then write the final selections into:75 - `output/briefings/latest.txt`76 - `output/briefings/latest.json`77 - use UTF-8-safe file editing only78 - prefer direct file editing tools such as `apply_patch`79 - do not use shell redirection or PowerShell `Set-Content` for the final Chinese brief text808. Before sending, update `latest.json` so it reflects:81 - the final combined candidate pool82 - final `hot_items`83 - final `watch_items`84 - `final_selection_ready = true`8586## Send Command8788After Stage 2 is complete, send the final brief:8990```powershell91python "<skill-dir>/scripts/send_brief.py" --message-file "./output/briefings/latest.txt"92```9394## Output Rules9596- The script writes:97 - `output/briefings/latest.txt`98 - `output/briefings/latest.json`99- Stage 1 output is only a candidate-pool note.100- Stage 2 must rewrite `latest.txt` into the final brief before sending.101- Stage 2 must rewrite the final brief in Chinese, not English.102- Do not turn the brief into a technical digest.103- Do not fill the brief with papers, benchmarks, parameter counts, or low-level infra unless they have already become broad public stories.104- Cross-run repeats are allowed. Only dedupe inside the current run.105- `简介` must explain what the news actually says in 1 to 2 short sentences, not generic trend commentary.106107## Source And Style References108109- Read [references/source-policy.md](references/source-policy.md) for source priority, collection rules, and final ranking rules.110- Read [references/output-style.md](references/output-style.md) for the exact Chinese output format.