Basev // Notes
FeaturedBuildProductsEssaysFunAbout
Basev // Notes

© 2026 Max Basev · Built for the quiet web.

RSSTwitterGitHubLinkedInTelegramLab
Home›Products›From raw draft to a tweet in seconds: Vibe2Tweet
ProductsJan 22, 2026

From raw draft to a tweet in seconds: Vibe2Tweet

From raw draft to a tweet in seconds: Vibe2Tweet

I like posting quick thoughts and project updates on X (Twitter). The annoying part usually isn’t the idea — it’s the final wording.

I’m not a native English speaker. I practice, I write, I learn. But sometimes I just want to post fast and move on.

Also: after 2022 I stopped posting in Russian (for obvious reasons). So every “quick thought” suddenly became a mini translation + style task. At some point I got tired of doing it manually… so I built a tiny bot for myself.

Meet Vibe2Tweet.

Live usage / product: <PRODUCT_LINK>
Source code: <GITHUB_REPO_LINK>

What it is

Vibe2Tweet is an open-source Telegram bot that uses OpenAI to turn your drafts into polished posts for X. It generates three variants, lets you pick one, and publishes it. Optionally, it can also ping a Telegram channel with the link to the new post.

It’s basically a tiny “drafting and publishing pipeline” I can use from anywhere without opening a bunch of tabs.

Why I built it

Two reasons:

  1. English friction.
    I’m improving, but writing good English fast is still harder than I want it to be. Sometimes I’d rather spend that energy building stuff than rewriting a tweet three times.
  2. Language switch.
    If you’ve ever had to change your main posting language, you know the pain: the idea is instant, the translation is not. I wanted something that can take the raw vibe and turn it into something publishable.

And yes, I could copy-paste into ChatGPT manually, then back to X… but that’s exactly the kind of tiny repetitive workflow I like to automate.

What it does

  • Prompt-driven translation + style
    It’s not hardcoded to RU → EN. The persona prompt defines everything: source/target language, tone, structure, “sound like a human”, etc.
    Want Hindi → Dutch with a casual tone? Go for it.
  • Multi-account / multi-persona
    I have multiple X accounts. Each one can have its own prompt and style — professional on one, crypto-native on another.
  • Approval-first workflow
    It generates 3 variants and I pick one. No autoposting surprises.
  • 280-character sanity checks
    It validates length and filters out variants that don’t fit, so I don’t end up doing awkward manual trimming.
  • Optional cross-posting to Telegram
    After publishing, it can post a short “New tweet” message + link into a Telegram channel (useful for a team channel or just your own archive).
  • Access control
    You can keep it private with an allowlist, so random people can’t interact with your bot.

How it works

  1. You send a draft to the Telegram bot (any language).
  2. The bot asks which X account/persona to use.
  3. Each persona has its own custom prompt (editable in the config) that defines the translation/styling rules
    (e.g., RU→EN professional tone, Hindi→Dutch casual tone — anything you want).
  4. OpenAI generates 3 variants based on that prompt.
  5. You pick one variant (or cancel).
  6. The bot publishes it to X and replies with the post link.
  7. Optionally, it cross-posts a notification to a Telegram channel.

That’s it. Minimal brain cycles. Maximum “ship the thought”.

A quick look under the hood

The stack is intentionally boring (in a good way):

  • Runtime: Node.js
  • Server: Express.js
  • AI: OpenAI (GPT-4o)
  • Integrations: twitter-api-v2, node-telegram-bot-api
  • Tooling: ESLint, Prettier

The code is organized into services so it’s easy to maintain and extend:

src/
├── bot/ # Telegram interaction logic & flow handlers
├── config/ # Environment validation & configuration
├── services/ # External integrations (OpenAI, X)
└── utils/ # Shared utilities (Logger, etc.)

If you’re a developer, you already know why this matters: once you start using a tool daily, you want it to be predictable, debuggable, and easy to tweak.

“Can this be scaled into an autoposter?” (Yes — carefully)

I built Vibe2Tweet as an approval-first tool for personal use. But the core logic can be extended pretty easily into a more automated publisher.

That might be especially interesting in crypto: announcements, short updates, research snippets, alerts — the “post often” pressure is real.

But… automation comes with responsibility. If you extend this into a fully automated bot, please don’t turn it into spam. The goal is to communicate faster and better — not to flood timelines with low-effort noise.

Roadmap ideas

I’m not trying to turn this into a huge product, but there are a few obvious upgrades that would make it even nicer:

  • History of drafts: view and reuse past generations.
  • Scheduling: schedule posts for future publication directly from Telegram.
  • Image support: attach and process images for posts.

Try it / fork it / break it (politely)

I open-sourced Vibe2Tweet because it’s genuinely useful for me — and maybe it’ll be useful for you too.

  • Live usage / product: <PRODUCT_LINK>
  • Source code: <GITHUB_REPO_LINK>

If you end up using it, I’d love to hear what you built on top of it. Issues and PRs are welcome.

And if nothing else, maybe it gives you an idea: you don’t need a “startup” to justify building small tools. Sometimes you just need fewer annoying steps between a thought and a shipped post.

ShareXTelegramFacebookLinkedInWhatsApp
← Products
← I Built a Free IMDB Poster Grabber Because “View Source…