Model or dataset
athcagithub/SlideSmith avatar
athcagithub/SlideSmith

Slidesmith: a local-first TikTok carousel generator that runs on your own keys

TikTok Slideshow Generator

333 stars81 forksTypeScriptNOASSERTION

At a glance

What is it?
Slidesmith is a self-hosted dashboard that turns a brand brief into TikTok and Instagram carousels, renders the slides in your browser, and delegates scheduling, posting and analytics to post-bridge. Generation and rendering stay local; distribution runs through someone else's API, under a noncommercial licence.
Who is it for?
Slidesmith fits a solo operator who already pays for an OpenRouter key and a post-bridge account and wants carousel production, review and scheduling in one local dashboard with no database. It does not fit any commercial use under the PolyForm Noncommercial licence, nor anyone unwilling to route posting and analytics through post-bridge.
Can I use it commercially?
Check first. The repository uses a licence we do not classify automatically, so read its LICENSE file before any commercial use.
Is it still maintained?
Yes. The repository last received commits 99 days ago.
What is it written in?
Mainly TypeScript, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on September 17, 2026, and from our analysis. They are not legal advice.

DEEP OPEN-SOURCE ANALYSIS

A carousel factory that stays on your machine

Slidesmith generates on-brand TikTok and Instagram carousel slideshows from a local dashboard you run yourself. The tagline says "with Claude", but the mechanics are broader: generation runs through OpenRouter with your key, and any model in its dropdown can be the writer, so Claude is one choice among many rather than a fixed dependency. That mismatch between headline and pipeline is worth knowing before you plan around a specific model.

The local-first claims are specific: no SaaS, no sign-up, no database to set up, config in a single file in your home directory. But the boundary of "local" is drawn precisely, and the README draws it itself: media hosting, multi-platform scheduling, posting and analytics all go through post-bridge, an external service with your post-bridge key. What stays on your machine is the generation step and the rendering step. Who this fits: a solo operator running brand accounts who wants the production line in one place without operating storage or posting integrations.

From a Brain to a posted carousel

The pipeline is fixed and short. Each project carries a Brain: the niche, the app or brand, the audience, and a style memory that shapes every generation. Hit Generate and the model writes a batch of slideshows, already wearing backgrounds from the packs the project draws on.

Rendering happens in your browser, and that is the cost decision in the design: slides become images as text over a gradient or over a background image from the Library, with no image-generation API in the path, so producing images costs nothing per slide. The Queue holds the batch for review; Edit opens any card to preview the carousel and adjust the caption, hashtags, per-slide text and per-slide background.

Approve is where the handoff happens. You pick the connected accounts to post to, choose a schedule time or save as a draft, and Slidesmith renders each slide and hands the set to post-bridge. Schedule and Results screens then track the queue and how published posts perform, with the numbers coming straight from post-bridge. Accounts are connected once inside post-bridge and show up in Slidesmith automatically. Projects, each one brand or account with its own Brain and default posting accounts, share keys and model choice across the workspace.

Keys, ports and where the data lands

Two keys are required and a third is optional, all entered in the in-app Settings screen: an OpenRouter key from openrouter.ai/keys to run the model that writes the slideshows, a post-bridge key for scheduling, posting and analytics, and optionally an Apify key from console.apify.com to scrape extra Pinterest images into the Library.

The storage map is refreshingly small. Keys, Brain and settings live in ~/.slidesmith/config.json. Generated but unscheduled drafts live in ~/.slidesmith/queue.json. Scraped library images live in ~/.slidesmith/library/, while the bundled packs sit in the repository at public/library/. Everything else, meaning media, scheduled posts and results, lives in your post-bridge account. The browser never sees your keys; they stay on the local server, which is the right split for a tool whose whole UI is a browser tab.

For self-hosting and headless setups, the .env.example documents three optional overrides: PORT for the server port, 8787 by default, SLIDESMITH_DIR to move storage elsewhere, and HOST to change the bind interface. The comment on HOST deserves emphasis: the server returns your API keys to the Settings UI, so it must not be exposed to a network unless you know exactly what firewall sits in front of it. The default bind is loopback only, 127.0.0.1.

Running it in dev and in production

The quick start is the standard clone-and-run shape, quoted from the README:

bash
git clone <this-repo>
cd slidesmith
npm install
npm run dev

npm run dev starts two processes together: the Vite web UI on port 5173 and a Node/Express server on port 8787 that holds your keys and talks to the model and to post-bridge. Open the printed Vite URL, default http://localhost:5173, and the first run drops you straight into Settings, where pasting the two keys and hitting Test connection completes the setup.

For a single-process deployment the README gives the production pair:

bash
npm run build   # build the UI
npm start       # serves the UI + API from one Node process (port 8787)

package.json confirms what those do: build runs tsc -b and vite build, and start runs node server/index.js, serving the built UI and the API from one process on port 8787. The stack underneath is React 19 with Vite and Tailwind for the UI, plus a small Express server, and no database anywhere. That keeps the operational surface to two ports and one config file, which matches what a single-operator tool should look like.

The bundled backgrounds are not licensed stock

Slidesmith ships with roughly 140 curated background images organized into aesthetic packs in public/library/, and the README is unusually direct about their status: they were collected from the web to get you started, they may be subject to third-party copyright, and they are not licensed stock. The stated remedy is to swap in your own images through the Library, including scraping Pinterest with your own Apify key, if you need images you have the rights to.

This matters more than it looks. A carousel tool exists to publish, and publishing unlicensed images on commercial accounts is how small brands acquire unexpected legal exposure. Combined with the licence in the next section, the practical reading is that the bundled packs are a demo substrate, not a production asset, and any serious use needs a background library you actually own.

A noncommercial licence, and the manual route

The licence is PolyForm Noncommercial 1.0.0: free to use, modify, self-host and share for any noncommercial purpose. Commercial use, which the README spells out as reselling, hosting it as a paid service, or bundling it into a product you charge for, is not permitted without separate permission from the author. GitHub shows the licence as NOASSERTION for the same reason: PolyForm is not one of the recognised templates GitHub indexes. The last push was on 2026-06-11.

The alternative is the manual route that this tool automates away: design carousels in a general design tool and post them from each platform's own web UI. You keep full layout control, you owe no keys to anyone, and no noncommercial terms constrain a shop that charges money. What you give up is the pipeline: no model-driven generation from a brand brief, no unified queue across TikTok and Instagram, no analytics in one place, and scheduling that stops at whatever each platform offers natively. The trade is a production line versus zero dependencies, and the licence decides it for anyone commercial.

Editorial conclusion

Slidesmith fits a solo operator who already pays for an OpenRouter key and a post-bridge account and wants carousel production, review and scheduling in one local dashboard with no database. It does not fit any commercial use under the PolyForm Noncommercial licence, nor anyone unwilling to route posting and analytics through post-bridge. Verify first: that the model you pick on OpenRouter actually writes in your brand's voice from the Brain fields, what rights you have to the bundled backgrounds before publishing them, and that the server stays on its loopback-only default bind. The last push was on 2026-06-11.

Frequently asked questions

Do I need API keys to use Slidesmith?

Yes. An OpenRouter key runs the model that writes the slideshows, and a post-bridge key covers scheduling, posting and analytics. An Apify key is optional and only adds Pinterest image scraping. All three are entered in the in-app Settings screen.

Where does Slidesmith store keys and data?

Keys, Brain and settings go to ~/.slidesmith/config.json, unscheduled drafts to ~/.slidesmith/queue.json, and scraped images to ~/.slidesmith/library/. Media, scheduled posts and results live in your post-bridge account, and the browser never sees the keys.

Can I use Slidesmith commercially?

No. The PolyForm Noncommercial 1.0.0 licence permits noncommercial use, modification, self-hosting and sharing only. Reselling it, hosting it as a paid service, or bundling it into a product you charge for requires separate permission from the author.

Official sources

  1. athcagithub/SlideSmith on GitHub
  2. Issues
  3. README
Community notes

Community notes