Open-Source Cold Email & Warmup Platform
Warmbly is the open-source platform for cold email: warm your mailboxes, send campaigns, and triage every reply. Run it on our cloud or self-host the whole thing.
Social Daily Poster is the open-source alternative to Taplio: it writes your LinkedIn posts from the work you already did, on your own machine, for the price of the AI subscription you already pay for
MarketingPython · PowerShellGitHub @dimamakOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
Nobody has the time - or the will - to sit down and write a post every day. Social Daily Poster does it for you, from what you actually did that day - your Claude Code sessions, screenshots and messages at the end of the day, etc. Kind of open-source alternative to Taplio
Taken from the repository README
Loading the full README. The saved excerpt is shown below.
Nobody has the time, or the will, to sit down and write a post every day.
Social Daily Poster does it for you, from what you actually did that day.
Social Daily Poster is the open-source alternative to Taplio: it writes your
LinkedIn posts from the work you already did, on your own machine, for the
price of the AI subscription you already pay for.Read the full README ↗Nobody has the time, or the will, to sit down and write a post every day. Social Daily Poster does it for you, from what you actually did that day.
Social Daily Poster is the open-source alternative to Taplio: it writes your LinkedIn posts from the work you already did, on your own machine, for the price of the AI subscription you already pay for.
Every night, Social Daily Poster looks back at your day: your coding-agent sessions (Claude Code or Codex/ChatGPT), screenshots, and optionally your Telegram, Gmail, WhatsApp, and even a spoken debrief you record after a call. It picks the single best story and drafts a post. That draft lands in a private Telegram bot with Approve / Edit / Skip buttons. Approve also draws an illustration and shows it to you before anything is public. Nothing posts until a second tap.
Once that post is live on LinkedIn, Social Daily Poster can spin off the same story for X (a real rewrite, not a truncation) and Reddit (a prefilled link you submit yourself), each with its own approval step and its own on/off switch.
Runs on one laptop for one person, no server needed. That's how most people use it. It can also run on a shared server for a few people.
Fastest: hand it to a coding agent. If you already use a terminal-based agent (Claude Code, Codex, etc.), open it in an empty folder and give it this:
Clone https://github.com/dimamak/sdp and set it up locally for one person.
Before running the wizard, ask me which channels I want: Telegram and
LinkedIn are required, then check whether I also want Gmail, WhatsApp,
images, X, or Reddit, don't just leave them off by default. If I don't have
a LinkedIn Page, use https://www.linkedin.com/company/sdp-page/ as a
placeholder. Then walk me through the wizard with those answers.
The wizard is interactive by design: you'll still need to answer things yourself, like pasting a Telegram bot token or approving a LinkedIn login in your browser. But the agent can drive the whole install and relay each question to you as it comes up.
Or run it yourself (works on Windows, macOS, Linux):
git clone https://github.com/dimamak/sdp.git && cd sdp
python3 -m venv .venv
.venv/bin/pip install -r requirements.txt # Windows: .venv\Scripts\pip
.venv/bin/python -m setup.wizard # mode? -> laptop (the default)
The wizard walks through: which sessions to harvest, your Telegram bot, and
(all optional) Gmail/WhatsApp/LinkedIn/images/X/Reddit. Every step is
re-runnable on its own, e.g. python -m setup.wizard --source linkedin.
When it's done:
python -m server.pipeline.run_nightly --dry-run # one harvest + digest, no posting
python -m server.bot.main # leave this running
That one process polls Telegram for your taps and schedules the nightly
draft itself: no cron, nothing else to install. python -m setup.wizard --doctor checks your setup any time.
Want a shared, always-on server for a few people instead of one laptop? See Server mode.
| Source | What it captures | Notes |
|---|---|---|
| Claude Code / Codex / ChatGPT sessions | Your coding-agent transcripts | Read locally; covers Claude Code, the Codex CLI, and the ChatGPT desktop app |
| Screenshots | Whatever you drop into a watched folder | Any OS |
| Telegram, Gmail, WhatsApp | Your own message/mail history | All optional, all off by default; WhatsApp capture is read-only |
| Call / office audio | Local speech-to-text on recordings you make, in whatever languages you actually speak | Off by default; recording and transcription both run on Windows, macOS and Linux |
| Screen activity | Which app and window was in the foreground, plus occasional screenshots — the non-coding half of the day | Off by default; not supported on Wayland (see Limitations) |
Every source is opt-in and walked through by the wizard. config.example.yaml
has the full field-by-field detail as inline comments.
w_member_social API. This is the core flow:
draft → approve → optional illustration → post. Creating the LinkedIn app
needs an associated LinkedIn Page; if you don't have one, use
linkedin.com/company/sdp-page,
a placeholder page for this project that anyone setting up their own
instance is welcome to use. It isn't tied to any real business and has
nothing to do with what actually gets posted.x.enabled): once a post is live on LinkedIn, the same
day's story gets a genuine X-length rewrite (LinkedIn drafts run
1,100–1,600 characters; X's default cap is 280), with its own
Approve/Rewrite/Skip step. Uses X's official API.reddit.enabled): Reddit closed off practical API
access for a project like this. Social Daily Poster hands you a prefilled
submit link and ready-to-paste title and body, and you review it and tap
Submit yourself. Nothing is ever posted by code.Skipping or failing a later step (X, Reddit) never touches a post already made on an earlier one. See Cost for what each channel actually costs to run.
radar.enabled, off by default)Discovery and draft-assist only — this never replies for you. A browser
extension you install and scroll x.com with (free) surfaces posts worth
replying to and, once you've told it enough about who to watch, an optional
budget-capped API poll (default cap $5/month) does the same for a short
watchlist. Either way, all you ever get is a drafted reply in Telegram —
Approve · Edit · Skip — that you paste in and send yourself. No code path
here calls X's post endpoint. See config.example.yaml's radar: block and
python -m setup.wizard --source radar to turn it on.
Approve doesn't publish right away. It first asks the same session that
wrote the post for an image brief, renders it, and sends it back with
Post with image · Regenerate · Post text-only · Cancel. Reply to steer it
("more abstract, no people") and each reply is a new take; regenerating never
touches LinkedIn, only the final tap does. Turn it off entirely with
image.enabled: false.
Every render is checked for broken text — a misspelled word, an invented
brand, a legible dashboard or slide — before it's shown to you. A flagged take
is silently re-rendered once (it never counts against your regeneration
budget, since you never saw it); if the retry is still bad, it's delivered
anyway with a warning in the caption rather than blocking the post. Configure
under image.text_check*.
By default, tapping Post with image / Post text-only sends it to LinkedIn
immediately. Set publish.window (e.g. "15:00-18:00") and it queues
instead, going out at the next eligible slot on its own — useful if you
approve first thing in the morning but don't want every post landing at the
same hour. Post now anyway on the queued message bypasses it for that one
post. publish.days caps which weekdays are eligible; /status lists what's
currently queued. Leave publish.window empty for the old immediate
behaviour.
For a tool that reads your coding transcripts, this is the part that matters most.
See CONTRIBUTING.md if you want the exact sandboxing mechanics behind the Claude vs. Codex backends.
| Item | Marginal cost |
|---|---|
| Drafting, image briefs, X/Reddit rewrites, session summaries | ~$0; runs through your existing Claude Code or ChatGPT/Codex subscription's CLI (an API key also works if you'd rather pay per-token) |
| LinkedIn publishing | $0 (official API) |
| Post illustrations (optional) | ~$0.13–0.24/render; image.enabled: false skips this entirely |
| X posting (optional) | Pay-per-use, no free tier; well under $1/month at one post a day |
| Reddit (optional) | $0; no API or account, just a link you submit yourself |
| X reply radar (optional) | Browser-extension lane is $0; the optional API polling lane is capped at radar.monthly_budget_usd (default $5/month, $0 disables it) |
At one post a day with images on, expect low-single-digit dollars a month.
For an always-on shared box instead of a laptop, with a separate laptop feeding it over SSH:
git clone https://github.com/dimamak/sdp.git && cd sdp
python3 -m venv .venv && .venv/bin/pip install -r requirements.txt
.venv/bin/python -m setup.wizard # mode? -> server
.venv/bin/python -m setup.wizard --doctor
Each additional person gets their own instance: separate config, secrets,
store, Telegram bot, and LinkedIn token, via
.venv/bin/python -m setup.wizard --instance alice. People can share one
LinkedIn or X App's credentials the same way a team shares any App: whoever
sets it up first pastes the client id/secret, everyone else just runs their
own login to get their own token (see the wizard's linkedin/x steps).
Full walkthrough (cron, systemd, Windows laptop push, CI auto-deploy) lives in docs/self-hosting/ci-deploy.md and the wizard's own prompts.
--user, launchd, or
a Task Scheduler logon task) so it comes back at login, and --doctor
fails if the bot hasn't checked in.? all day; an X11 session works. On macOS,
window titles additionally need Accessibility permission — without it you
get app names only.