User manualCSBlogLaunch →
Contents

TG Manager — User manual

01

What is TG Manager

TG Manager is an app that reads messages from Telegram channels and RSS feeds, lets AI process them (translation, summary, tags, importance scoring), and lets you publish the selected posts to your own Telegram channel.

Add sources — Telegram channels and RSS websites.
Run Scan — the app pulls in new messages.
AI processes — translates, summarizes and scores (0–100).
Go through the feed — pick the interesting posts.
PUBLISH — send to your own Telegram channel.
All data (your Telegram session, messages, settings) is stored locally in the browser(IndexedDB). You can log out anytime and your cloud data stays safe.
Screenshot here
02

Signing in

Open the app at its address and click Log in. There are two ways to sign in:

MethodHow it works
PhoneEnter your phone number, then the verification code.
QR codeScan the QR code with the official Telegram app.

Phone + code

Select the Phone tab.
Enter your phone in international format, e.g. +420 123 456 789.
Click Send Code.
Enter the code from Telegram and click Sign In.
Telegram now delivers the code only through the official Telegram app (service chat). No SMS or call will arrive. Find the code in the "Telegram" conversation in your app.
Screenshot here

QR code

Select the QR code tab.
On your phone open Telegram → Settings → Devices → Scan QR code.
Point the camera at the QR code and wait for confirmation to enter the dashboard.
The QR code refreshes itself (you'll see an "Expires in …" countdown). If it expires, wait a moment and a new one is generated automatically.
Video here

Two-step verification (2FA)

If you have two-step verification enabled, the app will ask for your password. Find it in Telegram: Settings → Privacy & Security → Two-step verification. For QR login: enter the password and scan the newly generated QR code again.

Flood Wait — temporary limit

If Telegram detects too many sign-in attempts, an orange warning with a countdown appears. Wait for the countdown to finish — repeated attempts extend the limit.

At the bottom of the login screen: "We never store your login credentials. Your phone number, verification code and 2FA password stay in your browser and are sent only to Telegram over MTProto — no server ever receives them." — your Telegram session never leaves the browser.
03

First run — Onboarding

After the first login the app walks you through 5 setup steps. Each step has a progress bar and unlocks progressively:

#StepWhat you set
1Add sourcesFirst source (Telegram channel or RSS)
2Feed settingsSorting, relevance, channel filter
3AI analysisAI language, topics, scoring weights
4PublishingTarget channel, post structure, signature
5URL filterBlacklist of unwanted URLs
Why only one source? So you can try the app on a small feed first. If you added all 200 of your channels at once, the feed would flood with hundreds of posts before you understood how it works.
Unlock: add 1 source, run Scan — after the first successful sync you can add more without limits.
Video here

After the last step, finish with Done — the onboarding closes and the app is ready for full publishing (draft editor, media, sending).

04

Dashboard

Screenshot here
ElementWhat it does
SettingsOpens Settings
AccountPopover with account, sync status and quick actions
Status dotGreen = connected · blue = syncing · red = error
AI creditsCredit balance (⚡ + number)
ConnectorsSources panel (camera icon + source count)
My channelPreview of your own channel (RadioTower)
ScanRuns a sync
New draftOpens an empty draft for a new post

Account popover

On mobile the header icons collapse into a hamburger menu (Account, Settings, Help), and the feed-level actions move to a bottom bar(Sources, My channel, Blocked feed, Settings).

Click the Account icon top-right: you'll see connection status, counts SOURCES / MESSAGES / LAST SYNC and the Account and Log Out buttons.

Screenshot here
05

Adding sources — Connectors (Telegram + RSS)

Open the sources panel with the Connectors icon in the header. It has two tabs: Telegram and RSS.

Telegram — adding a channel

Click Select from my channels — a list of channels you're a member of opens.
Pick channels and confirm — they're added as monitored sources.

Or quickly: type @channelName (e.g. @Reuters) or a t.me/link into the field and confirm with Enter / the + button.

1-source limit: Before the first successful sync you can only add 1 source. Once you run Scan and the first sync completes, the limit unlocks.
Video here

RSS — adding a website

Switch to the RSS tab.
Enter a domain, e.g. theguardian.com, or a direct feed URL.
Click the magnifier (Detect feed) — the app finds RSS feeds automatically.
Pick a feed, edit the Name and click Add feed.
If a website has no RSS (or blocks it), the app tries a Google News fallback (feed labeled Google News). If nothing is found, it suggests RSSHub.
Screenshot here
Every RSS source behaves like a virtual channel — it goes through the same scan → AI → feed → publish path. RSS is never published automatically.
06

Sync & AI analysis

Pull in new messages with the Scan button in the header:

SituationBehavior
Auto Scan offManual Scan (with a short cooldown after each run)
Auto Scan onScan runs on an interval (5–60 min), the button shows a countdown ring

What happens after Scan

The app pulls messages from all monitored channels and RSS.
Messages are stored as pending — waiting for AI.
AI translates, summarizes and scores each message — the feed fills in as they finish.
Cards switch to Ready — headline, summary, tags, score.

Card states

StateWhat you see
PendingBlue spinner "AI RUN" + "Waiting for AI analysis"
ReadyCard with headline, AI Summary, tags and score
FailedRed error + retry button
PublishedPurple PUBLISHED + link to published posts

Time range

If the last sync is older than 12 hours (or never happened), the app asks how far back into history to pull.

SituationOptions
First syncOnly 6 hours — keeps the feed small for a first try
Regular sync1 / 3 / 6 / 9 / 12 / 24 hours
Been away for 3 days? On return the app offers how far back to pull. You usually don't need more history — who reads yesterday's news, unless there's nothing today.
Video here
07

Feed cards & scoring

Screenshot here

Card anatomy

  1. Left column — score (rotated number 0–100). Color: blue = pending, red = failed, purple = published, green = highlighted.
  2. Source + time — channel and date.
  3. Headline — title created by AI.
  4. AI Summary — summary with a blue border.
  5. URL chips — links from the article.
  6. Tags — green = your topic, gray = AI tags without a match, black = a blocked topic (in the Blocked feed). Click a tag to open actions — add to topics / block / remove / unblock.
  7. Bottom bar — AI STATUS and buttons.

Scoring — how to set the weights

The score (0–100) is just a weighted sum of two things: how big the story is for the world (World impact, scored by AI) and how well it matches your topics (Topics).

You prefer…World impactTopicsResult
World eventsMaxDefaultBig stories get highlighted green
Your topics0MaxThe app prefers your topics

Final tuning: one combined Relevance → Highlight slider (Feed). The left thumb hides low-score posts (0 = ALL), the right thumb sets the score at which a card turns green. Highlight is always at least 30 points above relevance. The track is color-coded: red = hidden below relevance, gray = visible, green = highlighted.

All changes to weights, topics, relevance and highlighting apply instantly — no re-analysis or waiting for AI.

Flip — original vs. AI

Click the link icon to flip the card and see the original text with an "ORIGINAL" badge and a link to the original post.

Card actions

ActionHow
View mediaOpens MediaModal
Prepare draftLoads the post into the Draft editor
HideHides the card (local only). On a merged (story) card it hides the whole group as one item — Undo restores all variants
RetryRe-runs AI analysis
Blacklist URL× on a URL → adds it to the blacklist
CondenseShrinks the AI summary — 1 credit cloud / 0 local. Disabled for summaries under 350 chars. Once a condensed version exists, the button just toggles condensed ↔ full (free)
Tag chipClick to open actions — add to topics / block a topic / remove from topics / unblock

Blocked feed — posts with blocked topics

Posts matching a blocked topic (and posts without meaningful content — the AI headline is "Not enough context") don't appear in the main feed. They go to theBlocked feed, opened with the shield button (top toolbar on desktop, bottom bar on mobile; a red badge shows how many are hidden). Cards there are styled dark and the blocked-topic chips are black. Click a black chip to Unblock the topic or add it to your topics; or hide the card with the trash icon.

A blocked topic is mutually exclusive with your topics — adding it to Topics removes it from Blocked and vice versa. Block a topic from any tag chip ("Block") or in Settings → AI → Blocked.

Keyboard shortcuts

KeyAction
/ Next / previous card in compact mode
PageDown / PageUpFirst / last card
DeleteHide + advance to next
/ Switch variant on a merged (story) card
Ctrl+ZUndo (restore a hidden card)
Enter / TabLoad the card into the Draft
Ctrl+EnterPublish

Story cards — merged posts

When several sources (Telegram and RSS) bring the same event, the app merges them into one card — the feed doesn't fill with duplicates. A merged card is marked with a purple ★ N variants badge.

ElementWhat it does
★ N variantsPurple badge in the card header — how many sources cover the event. In compact mode it's a purple circle with the count before the trash icon.
Publish version (composite)Default view (star button among the avatars): text from the best-scored variant + media from the variant with the most media. This is the version you send to the draft with ✏️.
Channel avatarsEach variant has its source's avatar; click to switch to that channel's original post. The star returns to the composite. / cycle variants too.
Variants of the same event usually have very similar headlines — the AI translates them all into the same language. The details differ though, so the composite combines the best text with the richest media.
ActionWhat it does
Unmerge groupIf the app wrongly merged two different events — splits them back into separate cards; that pair never merges again.
HideHides the whole group as one item; Undo (Ctrl+Z) restores all variants.
Turn merging offSettings → FeedStory cards (default ON) — merged cards split back into individual posts.
08

Publishing (Draft)

Click the pencil (Prepare draft) on a card, or New draft in the header. The Draft panel slides in from the right:

SectionWhat it does
MediaManage media from the original post + your own files
TextHeadline, editor, AI/Original, Topics, URL
Publish toPick the target channel (per-post override)
Pending High-PriorityQueue of important waiting posts — quick LOAD
Screenshot here

AI text processing

The ✏️✨ button in the Text header is context-aware:

On the Original view it processes the original text — modal with Translate only / Summarize.
On the AI view of a feed post it becomes Condense — the modal shows only Condense and shrinks the current AI text (identical to the card's Condense button; the card shows the same condensed version, toggle back is free).
OptionResult
Translate onlyFull translation + headline, tags, URL
SummarizeConcise summary + headline, tags, URL (creates AI Compact and AI Full)

Load from link (Download icon ⬇️)

The ⬇️ icon in the Text header opens the LOAD FROM LINK box. Paste a link and click Load — the app figures out what it is:

https://t.me/channel/12345Telegram (unchanged): loads the message straight into the draft — handy for your own older posts.
Any other article URL → web scraper: title becomes the headline, the article text fills the draft, the og:image lands as media, and article links become URL chips (the source URL always first).
If the page can't be parsed (bot-blocked site, or a JS-only SPA with no HTML), you get an error — never a half-empty draft.

Publishing

Pick the target channel in Publish to.
Click PUBLISH.
After publishing the card is marked PUBLISHED and a link to the published post appears.
Publish guard (dedup on output) — after you hit PUBLISH, the app compares your final text (headline + signature applied) against the recent posts of the target channel. A similar post opens a modal with Publish anyway (the app remembers — same draft + post stops nagging) or Publish as Reply (the draft is sent as a reply to the selected duplicate). The modal is the only place where duplicates are reported — no live checking while you type. Detection is an exact URL match + AI text similarity; a near-identical post stops the publish (unlessBlock on duplicate is off — then the modal is informational only). Posts that are merely on the same topic are ignored. It runs only for long enough texts and never blocks publishing on a service error.
Video here
Draft state is saved — closing the panel doesn't lose it. Everything (headline, text, media, URL, tags) stays. Clear draft wipes it and starts fresh.
V náhledu svého kanálu (My channel) můžeš publikované příspěvky upravovat (tužka) nebo smazat (koš). Smazání je z Telegramu natrvalo.

URLs from the post

In Settings → Publishing you control how (and whether) the article's links are printed into the published post. With Numbered / Domain / Template, the real URLs travel inside Telegram link entities, so they don't count against the 4096/1024 character limit — only the visible markers do. Full prints every URL as plain visible text and therefore uses up the limit.

Translating videos with SublyAI (Beta)

Want subtitles or a translation on a video from your feed? TG Manager connects to SublyAI (a separate app) through a secure postMessage handoff — you send the video for translation and the subtitled video comes back into your draft.

The SublyAI connection is in beta. The SublyAI URL is read from SUBLYAI_HANDOFF_URL (default: the local dev instance).
Open the media of a post (camera icon) and start playing the video.
Click Translate your video (SublyAI logo) — the video opens in SublyAI. The TG Manager window stays open in the background; SublyAI shows a "Waiting for video from TG Manager" overlay while it loads.
In SublyAI, translate and add subtitles, then export the mp4.
In SublyAI click Send back to tg_manager (the tg_manager-logo button, white background) — the subtitled video is sent back.

Back in TG Manager:

If you sent it from…What happens
The draft editor (MediaManager)The subtitled video appears directly in MediaManager (with no SublyAI button).
The feed viewer (MediaModal)The modal stays open, briefly shows a Loading translated video… loader, then reveals the returned video with a green Use translated video button. Closing the modal while the translated video is present asks whether to discard it or use it in the current post.

Use translated video opens the publisher on the AI view, adds the subtitled video to MediaManager (again with no SublyAI button), and excludes the original video when it can be identified uniquely. So you publish the clean subtitled video. If the original can't be pinned down (e.g. an album), everything stays live and you pick in MediaManager which media to keep (Remove/Restore on each item).

A returned video never has the SublyAI button — don't send back what already came from SublyAI. Subtitles/translation are billed by SublyAI; TG Manager charges no credits for this (it's a 3rd-party job).
09

Where to find things

Open Settings with the ⚙️ icon in the header, via the Account popover, or from the Account page. The panel has 5 sections:

Screenshot here

FEED

SettingWhat it does
Relevance → HighlightHidden below relevance (0 = ALL) → green highlight; highlight ≥ relevance + 30
Source / Order / Sort by scoreSource filter, ordering, score sorting
Compact mode / Show mediaCompact list / media previews
Story cardsMerge posts about the same event into one card (default ON). Off shows every variant separately
Auto-open compact cardAfter hiding/publishing, automatically expand the next card (default OFF). Off keeps the feed collapsed
Auto ScanAutomatic sync (5–60 min)

AI

SettingWhat it does
AI Output LanguageLanguage of all AI output — 100+ languages. Searchable picker: type a name or code (cz, jp, ua work too)
World impact weightWeight of the AI world-importance score
Relevance weightPoints per topic match
TopicsYour topics — chips (max 20)
Topics | Blocked topicsTopics = what you want to read (green chips). Blocked = what you never want to see — matching posts move to the Blocked feed (see Feed & scoring). Mutually exclusive with Topics, max 20 each. Shortcut: click any tag chip → Block
Suggest topicsAI suggests new topics from a channel

PUBLISHING

SettingWhat it does
Target ChannelThe channel you publish to
Headline symbol / List symbolSymbol before headline (media-less only) · bullet replacement
Publish headline / Show sourceHeadline bold · link to original
SignatureCustom signature (bold, italic, links)
Link preview TG/RSS + Hide after publishLink preview · hide card after publish
Publish guardWarn when the target channel already has a similar post (a near-identical text or shared URL is flagged as a duplicate) — default ON
Block on duplicateStop the publish when a duplicate is found — turn off to show the modal as informational only and never intercept the publish (default ON)
URLs from postToggle — when ON, the post's source URLs are added (default ON). OFF = no URLs from the url field
URL display modeHow URLs appear (default Numbered): Full (each URL on its own line, counts toward the limit) · Numbered ([1][2]… after the text, URLs hidden in link entities so they don't count) · Domain (hosts on one line, URLs hidden) · Template (your label with a [word] that gets an index, URLs hidden)
URL templateOnly for Template mode — default 🔗 Source: [link]; the word in […] is the base the index is appended to (translate/edit freely)

BLACKLISTED URLS and OTHER

Blacklisted URLs — blocks unwanted URLs (substring-based). OtherModel Provider (Google Gemini vs Local LM Studio/Ollama), diagnostics and App Reset.

Which AI provider? Google Gemini (recommended for publishing) runs on the server. Local AI (LM Studio / Ollama) is for privacy — direct browser connection, no credits charged.
10

Account & credits

Open the account page: header → user icon → Account.

Screenshot here
SectionContent
TelegramUser ID, status, cloud connection
Credits & Usage30-day usage chart + credits Log
Quick actionsSettings, Data export, App Reset, Log Out, Delete

How credits work

Every day your balance is topped up to 500 free credits (reset at 0:00 UTC).
1 AI-processed message = 1 credit (Gemini only; local models are free).
Free first, then paid. Overspending goes negative and is settled from the daily top-up.

GDPR / data

ActionWhat it does
Download My DataJSON export of all your data (GDPR)
Delete My AccountPermanently deletes the account and local data — cannot be undone
Log OutOnly clears the login in this browser
Log Out ≠ Delete. Logging out only clears the login; deleting the account is permanent.
11

Troubleshooting & tips

Sign-in

ProblemSolution
"Code didn't arrive"The code is only in the official Telegram app (service chat)
"Flood Wait"Wait for the countdown — retrying extends the limit
QR doesn't workWait for the QR to refresh · with 2FA scan a new QR

Sources (RSS)

ProblemSolution
"No feed found"Try another domain or RSSHub
Bot-blocked websiteThe app automatically tries the Google News fallback

AI

ProblemSolution
/chat/completions → 404The app appends /v1 itself
CORS with local AIEnable CORS for the exact origin (Vercel / localhost)
Model returns invalid JSONPick a model with better JSON support, or use Gemini

Feed

ProblemSolution
Two posts merged into one cardThat's a Story card — switch variants with the avatars or ←/→; wrongly merged events can be split with "Unmerge group". Disable merging in Settings → Feed → Story cards
Where did posts about a blocked topic go?They're in the Blocked feed — open it with the shield button (top toolbar on desktop, bottom bar on mobile). Unblock a topic by clicking its black chip → Unblock
How do I block a topic?Click a tag on a card → Block, or Settings → AI → Blocked tab
Why do variants share the same headline?The AI translates every source of the same event into one language — headlines unify, but the details differ. The composite (★) combines the best text with the richest media

Q&A — How do I tune my feed and get rid of useless posts?

Set your topics (AI → Topics) — add what you care about.
Decide what matters more: World impact to max (world events) OR World impact to 0 + relevance to max (your topics).
Get rid of useless posts: raise Relevance — low-score posts get hidden.
Mark what's important: Highlight threshold sets the green highlight.
Turn on Sort by score — best posts on top.
All changes apply instantly — experiment and watch the feed reorder.