To keep auto-posting from duplicating posts, you need three things: each piece of material must have a stable identifier, the check "have we already published this?" must run before publication rather than after, and you need a rate limit. At the start, add manual approval. Below are the sources of duplicates and how to cut them off in a DIY setup and in a service.
Where duplicates come from in auto-posting
Almost always the cause is one of five:
- The source serves the same material again. An RSS feed returns the latest N entries on every request, and if the setup doesn't remember what it has already taken, it publishes them again.
- The material's address changes. The same text arrives with
?utm=β¦parameters, with or without a trailing slash, or viahttpandhttps. For the setup, these are different records. - A failure in the middle of a run. The post went out to the channel, but the "published" record wasn't saved because of an error. On restart, the setup sends it again.
- Two schedules for one channel. An old scenario was forgotten and not turned off, or two bot copies are running.
- One news event from different sources. Three sites wrote about the same thing, and the channel gets three similar posts in a row. Technically this isn't a duplicate, but the reader sees exactly that.
How to find the cause in 10 minutes
Open the last 20 posts in the channel and look at what the repeats have in common:
- The text matches word for word β the problem is the setup's memory (causes 1β4).
- The text differs, the topic is the same β the problem is source selection (cause 5).
- Repeats come in pairs a few seconds or minutes apart β most likely two runs are working at the same time.
- Repeats appeared after an error or restart β the "published" status isn't being saved.
This way you won't fix what isn't broken: adding complex header checks when two bot copies are actually running.
Step-by-step duplicate protection
- Keep a permanent list of what has been published. A table or database is enough: key β normalized material address, date, status.
- Normalize the address before checking. Remove
utmtags, the#anchor, and the trailing slash; convert the scheme tohttps. - Record the status "in progress" before sending, and "published" right after Telegram's response. Then a failure mid-run won't lead to a repeat send.
- Don't allow parallel runs. One scenario β one active run per channel. Check that old copies are switched off.
- Limit the number of posts per day and set a minimum interval. Even if a duplicate slips through, it won't turn into five in a row.
- Compare not only the address but also the headline. If two materials from different sites almost completely match by headline, hold one back.
- For the first two weeks, turn on manual approval. You can see what a rule won't catch: the same event in a different framing.
Common mistakes when fighting duplicates
The first mistake is storing the list of published items in the scenario's memory. After a restart it resets, and the feed gets published again. The list should live in a database or table.
The second is checking only the post text. A neural network phrases things differently each time, so two posts about the same material won't match by words. You need to compare the source, that is, the material's address.
The third is treating the symptom: deleting repeats by hand without looking for the cause. In a day they'll come back.
The fourth is setting too short an interval "just in case." The more often it runs, the higher the chance that two runs overlap.
Comparison: manual, self-built, or service
| Manual | Self-built (n8n, Make, script) | Service | |
|---|---|---|---|
| Duplicate protection | Your memory | You have to build it yourself | Daily limit, interval, and manual approval |
| Risk of double run | None | Present | Schedule set in one project |
| Setup time | None | From several hours | Connecting a channel takes about 20β30 minutes |
| What breaks | You get tired | RSS 403, address changes, API limits | Closed channels and sites behind bot protection can't be connected |
If you're already building a setup on n8n, read the breakdown of why auto-posting via n8n breaks. If you're unsure which bot you need, there's an article on three types of bots for auto-posting.
What Telematic does and what stays with you
We run a channel from sources: websites, RSS, and public Telegram channels. From each piece of material, the service writes a post in the author's style based on 2β5 of your reference samples, and it goes out on a schedule: an interval from 5 minutes to 30 days, a window of hours, and a daily post limit. Telegram and RSS sources deliver one item per run, so the feed doesn't dump in a batch. Turn on manual approval and you'll see each post before publication, and in the version history you can compare edits.
Price: a post costs about 7 β½ (collection from a site or RSS β 5, from a Telegram channel β 2, publication β 1). A month of a channel with 30 posts β from 120 to 420 β½. There's no subscription; the price is visible before launch in the "Cost calculation" block. Editing text and previews are free.
Limitations on this topic you should know in advance: we don't promise the service will catch every semantic repeat on its own, when three sources write about the same event β that's what manual approval is for. Closed Telegram channels can't be connected as a source, and sites behind bot protection may fail to collect. There is also no exact guaranteed publication minute.
Frequently asked questions
Why does RSS publish the same thing over and over?
The feed returns the latest entries on every request. If the setup doesn't store a list of materials already taken, it takes them again. You need a permanent list with normalized addresses.
How do I delete a duplicate that has already gone out?
Delete the post in Telegram manually and check whether two runs are working at the same time. Just deleting isn't enough: the cause remains and the duplicate will recur.
Does manual approval help?
Yes. It catches what rules won't: one event in a different framing. At the start of a channel, turn it on for 1β2 weeks, then decide whether to switch to automatic acceptance.
Can I publish one post to several channels without getting a duplicate?
Yes, if they are different platforms. For such a setup, cross-posting works: each platform has its own text version and its own schedule.
What to do today
Open the last 20 posts in the channel, count the repeats, and pick the cause from the list above. If you want to switch to a ready-made setup with a schedule and manual approval, see auto-posting to Telegram in Telematic. To start, you can draft a sample post in the free generator without registration. On money separately: what is really free in auto-posting and where costs begin.
