# News Filter

> Two-phase news engine for a recurring «📡 Filter» rubric. Phase 1 — pull a POOL of fresh news candidates across the stock market, crypto, AI and tech (one-liner + provisional 🟢/🟡/🔴 each) and let the user pick one + add their angle. Phase 2 — write ONE full Telegram post (~1500–3000 chars) on that single story in the channel's voice (no hype, practical lens). Use when user says "сделай фильтр", "пул новостей", "новости на пост", "news filter", or types /news-filter.

- Skill: `1t1scool/news-filter` (Agent Skill)
- Install (CLI): `npx skillmds@latest add 1t1scool/news-filter`
- Raw SKILL.md: https://api.skillmd.com/api/skills/1t1scool/news-filter/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: 1t1sCooL (https://skillmd.com/u/1t1scool)
- Updated: 2026-09-21
- Page: https://skillmd.com/skills/1t1scool/news-filter

---


# 📡 News Filter — signal-vs-hype engine for a Telegram channel

Engine for a recurring **«📡 Filter»** rubric. Works in **two phases**: first it hands the
user a **pool of fresh news** from four worlds (stocks / crypto / AI / tech), the user
**picks one** and adds their angle; then it writes **one full post** (~1500–3000 chars) on
that single story. The rubric's value: not a headline feed but a curator's verdict —
*what matters, what's noise, what it means in practice*.

> ⚠️ **One post = one story.** Never glue several mini-blurbs into a digest — the user picks
> a topic from the pool and it's expanded into a full post. The pool is only for choosing.

## Config (once)

Channel handle + optional post dir from `./growth/config.json`:
```json
{ "tg_channel": "<@handle или t.me/...>", "post_dir": "<dir for finished posts>" }
```
If missing — **ask via AskUserQuestion** and offer to save (do not invent a handle).
Optional: read a local `rubric.md` / `post-template.md` if the project has one, to match tone.

## Что на входе (`$ARGUMENTS`)

- Опц. **фокус**: `stocks` / `crypto` / `ai` / `tech` — сузить пул до одного мира.
- Пусто → собрать пул по всем четырём мирам.

## Источники (искать свежее — окно ~7–14 дней)

- 📈 **Stocks:** exchange newsroom, Reuters/Bloomberg, broker research. Signals: central-bank rate, dividends, key earnings, IPO/delisting, market infrastructure. *(Localize to your market.)*
- 🪙 **Crypto:** CoinDesk, The Block, CoinShares fund-flow reports; regulation (SEC, ETF flows), major BTC/ETH moves. Отсекать памп альтов.
- 🤖 **AI:** model releases (Anthropic / OpenAI / Google / Meta), benchmarks, API pricing, dev tools, regulation. Угол — *что меняет работу инженера*.
- 💻 **Tech:** framework releases (React / Next.js / TypeScript / Node), browsers, devtools, big shifts.

## Шаги

### Фаза 1 — Пул новостей (выдать и ОСТАНОВИТЬСЯ)

1. **Config + tone** — прочитать `config.json`; при наличии — локальные `rubric.md`/`post-template.md`.
2. **Определить фокус** из `$ARGUMENTS` (или все четыре мира).
3. **Собрать свежак** — WebSearch по каждому миру, окно ~7–14 дней. Первоисточник тут можно не открывать (это для фазы 2).
4. **Предварительный фильтр** — отсеять явный мусор. Оставить **8–12 кандидатов**, достойных внимания.
5. **Выдать пул** нумерованным списком, сгруппировав по 📈/🪙/🤖/💻. Каждый:
   `N. <emoji> <суть в одну строку> — <предв. 🟢/🟡/🔴> · <источник>`.
6. **СТОП. Спросить пользователя:** какую новость берём + какой угол/идеи вложить
   (AskUserQuestion с топ-кандидатами + «Other», либо ждать ответа). **Не писать пост до выбора.**

### Фаза 2 — Один пост (после выбора)

7. **Проверить факты** выбранной новости по **первоисточнику** (WebFetch): числа, версии, даты. Расхождение с заголовком — берём первоисточник.
8. **Написать ОДИН полноценный пост** (~1500–3000 знаков) по скелету ниже, раскрывая одну новость на всю глубину и **вплетая идеи пользователя**.
9. **Самопроверка**: одна мысль, хук в первых 2 строках, практика > рассуждений, длина, теги, тон без хайпа.
10. **Сохранить** файл (см. «Выход») + выдать чистый текст для копипасты.

## Скелет поста (Telegram, ОДНА новость, 1500–3000 знаков)

```
[ХУК] — 1–2 строки. Контринтуитив или рамка вокруг этой новости. Не «сегодня вышла новость…».

[ЧТО СЛУЧИЛОСЬ] — 2–3 строки своими словами: суть события без воды.

🟢/🟡/🔴 [ВЕРДИКТ] — сигнал это или шум, и почему именно так.

[ЧТО ЭТО ЗНАЧИТ НА ПРАКТИКЕ] — мясо. Разбор/список/цифры через практическую призму.
Сюда вплетаются идеи и угол, которые накидал пользователь.
• пункт
• пункт

[ВЫВОД] — один инсайт навынос.

[CTA — мягкий]

#фильтр #тег_столпа
```

## Правила (тон рубрики)

- **Сигнал, а не лента.** Ценность — в фильтре и оценке, а не в пересказе заголовков.
- **Честно, без хайпа.** Можно «пока непонятно» / «рынок переоценил».
- **Своими словами + первоисточник.** Не копипастить пресс-релизы; дать ссылку.
- **Практический угол.** Новость — через «что это значит на практике».
- **Не каждую неделю.** Вставлять разово под инфоповод, чтобы не было беговой дорожки.
- **Никаких инвестрекомендаций** — оценка важности ≠ совет покупать. При новостях про активы добавлять «не инвестрекомендация».

## Выход

- Файл `<post_dir>/Filter — <YYYY-MM-DD>.md`: заголовок, строка-мета, блок «## Текст поста», ссылки на источники.
- В ответе — чистый текст поста для копипасты + откуда новость.
- Не постит в Telegram сам — публикует пользователь.

