channel-recap

Solid

Weekly recap article from a public Telegram channel — rank posts by engagement, expand on the best

AI & Automation 508 stars 166 forks Updated today MIT

Install

View on GitHub

Quality Score: 94/100

Stars 20%
90
Recency 20%
100
Frontmatter 20%
70
Documentation 15%
100
Issue Health 10%
50
License 10%
100
Description 5%
100

Skill Content

<!-- autoresearch: variation A — engagement-weighted selection using t.me/s/ view + reaction signal --> > **${var}** — Telegram channel username (without @). Required — set in aeon.yml var field. Read memory/MEMORY.md for context. If `${var}` is empty, abort with: "channel-recap requires var= set to a Telegram channel username" and exit. ## Steps ### 1. Verify the channel exists Fetch `https://t.me/s/${var}` with WebFetch and confirm the page contains message blocks (not the "Channel does not exist" or "Private channel" screen). If the channel is missing or private, notify and exit: ``` ./notify "*channel-recap* — channel @${var} is missing, private, or has no public preview. Skipping." ``` Also capture the channel metadata from the first page: **title**, **subscriber count**, and **short description** — these go into the article intro. ### 2. Fetch 7 days of posts with engagement data Paginate through `https://t.me/s/${var}` using WebFetch. Each page has ~16 posts. From the HTML of each page, extract **for every message**: - `post_number` (from the `data-post` attribute, e.g. `channel/1234`) - `timestamp` (from the `<time>` datetime attribute) - `text` (the message body, stripped of HTML) - `links` (all URLs inside the message, including the href of `<a>` tags) - `views` (from `.tgme_widget_message_views`, e.g. `"12.5K"` → parse to integer) - `reactions` (sum of all reaction counts from `.tgme_widget_message_reactions`) - `is_forwarded` (true if the message has a ...

Details

Author
aaronjmars
Repository
aaronjmars/aeon
Created
3 months ago
Last Updated
today
Language
TypeScript
License
MIT

Similar Skills

Semantically similar based on skill content — not just same category