Edition No. 2 · 27 Aug 2026
Twelve repositories for an email list you actually control
Newsletters, transcription, silence cutting, and the tools that stop a platform owning your readers.
Edition 1 was about seeing — analytics, attribution, being findable. This one is about keeping: building an audience that can't be taken away from you, and squeezing a week of content out of a single recording. Eight entries serve marketing, three sharpen the products, one is a wildcard. Every repo was opened and checked this morning — star counts, licences and release dates are what GitHub was showing at the time of the scan.
This edition, in numbers
| Repos | 12 |
| Hidden gems (<3k stars) | 3 |
| Marketing / product | 8 / 4 |
| New to the ledger | 4 |
| Repeats from Edition 1 | 0 |
| Held in backlog | 21 |
If you only do three things
- Stand up Listmonk this weekend (01). YouTube and Google can change their minds about you overnight. An email list can't be taken away. One Go binary against the PostgreSQL you already run — an afternoon of work for the only channel you will ever own outright.
- Push one video through WhisperX (04). A transcript with a timecode on every word is the raw material for captions, the blog post, the Shorts, the chapter markers and the SEO page. Nothing else in Layer 02 works without it, and it costs you one evening once.
- Write your llms.txt today (07). About an hour, one text file, no maintenance. It is the single biggest item the AI-search audit from Edition 1 was going to hand you anyway — and it decides whether ChatGPT describes Grasppy correctly or invents something else. ---
Every link in one place
| # | Repository | Home / docs | Stars | Licence |
|---|---|---|---|---|
| 1 | knadh/listmonk | — | 23.3k | AGPL-3.0 |
| 2 | baptisteArno/typebot.io | — | 10.3k | Functional Source License |
| 3 | usertour/usertour | — | 2.3k | MIT core + separate enterprise licence |
| 4 | m-bain/whisperX | — | 23.9k | BSD-2-Clause |
| 5 | WyattBlue/auto-editor | — | 5.2k | Unlicense |
| 6 | mutonby/openshorts | — | 3.9k | MIT |
| 7 | AnswerDotAI/llms-txt | — | 2.6k | Apache-2.0 |
| 8 | every-app/open-seo | — | 17.7k | MIT |
| 9 | harlan-zw/unlighthouse | — | 4.8k | MIT |
| 10 | feyninc/chonkie | — | — | — |
| 11 | pgvector/pgvector | — | 22.9k | PostgreSQL License |
| 12 | kernc/backtesting.py | — | 8.9k | AGPL-3.0 |
Built from the ledger; this edition predates the link index. Every figure verified against the GitHub API.
Own the audience, compound the content
Twelve repositories, checked and reviewed. Every version verified against the GitHub API and dated.
23.3k stars · AGPL-3.0 · v6.2.0 (2026-06-26)
Single-binary self-hosted newsletter manager on Postgres. The email list is the only audience he actually owns.
▶Repo detailsthe review · specs · pros & cons · install
What it is
A self-hosted newsletter and mailing-list manager that ships as a single Go binary and keeps everything in PostgreSQL. Subscribers, segments, templates, campaigns, bounces and per-campaign analytics all live in one admin screen.
Why it matters
Every Grasppy signup, every ScalpingMate trial, every viewer who clicks the link in your video description either lands somewhere or evaporates. A list is the only channel where you decide when people hear from you — no algorithm in between. It is also the cheapest possible launch: 800 addresses beats 800 views, every time. And because it is one binary talking to the Postgres already running on your Hetzner box, it is the lowest-maintenance thing on this page.
- Single binary plus your existing Postgres — no new runtime to learn or patch
- SQL segmentation: "everyone who opened the ScalpingMate mail but never signed up" is one query
- Genuinely mature — years of steady releases and a large install base
- It does not send mail. You still need SES or Postmark, and you now own deliverability, SPF and DKIM
- AGPL — fine for your own use, but read it before exposing a modified copy as a service
- The editor is functional, not friendly. No drag-and-drop email designer
Docker container on the VPS pointed at a new database inside your existing PostgreSQL.
10.3k stars · Functional Source License · v3.18.0 (2026-08-21)
Visual builder for conversational forms that complete far more often than a wall of fields.
▶Repo detailsthe review · specs · pros & cons · install
What it is
A visual builder for conversational forms: you drag blocks onto a canvas and embed the result as a chat bubble, a popup or an inline block on any page. Answers land in its own database or get pushed onward by webhook.
Why it matters
Grasppy is a product about conversations, so a conversational signup is on-brand rather than a gimmick. Ask two questions — "what are you trying to find inside a long chat?" and "how long is it?" — and you harvest the exact words your buyers use, which is free landing-page copy and free keyword seed material for OpenSEO (08). One flow on the Grasppy site, one for a ScalpingMate waitlist. Honest caveat: this is a nice-to-have sitting next to Listmonk's must-have, so do it second.
- Conversational forms complete much more often than a wall of fields, especially on phones
- 30+ blocks with logic, conditions and webhooks — the flow needs no code
- Free hosted tier to test the idea before you commit any VPS resources
- Fair Source, not open source — free for your own use, but read the terms before building commercially on it
- Self-hosting means another Next.js + Postgres + storage stack on a box already carrying two apps
- Overlaps Formbricks in your backlog. Pick one; running both is pure maintenance tax
Honest caveat: this is a nice-to-have sitting next to Listmonk's must-have, so do it second.
Drop the embed script into the React app and point its webhook at a FastAPI endpoint that writes the answer to Postgres and pushes the address into Listmonk in the same call.
2.3k stars · MIT core + separate enterprise licence · v0.9.4 (2026-09-04)
Self-hosted in-app product tours and checklists — the open-source Appcues. Stops Grasppy visitors bouncing off the map screen.
▶Repo detailsthe review · specs · pros & cons · install
What it is
A self-hosted product-onboarding platform: in-app tours, checklists, tooltips and micro-surveys, built in a visual editor and targeted at particular users or moments. It is the open-source answer to Appcues and Userflow.
Why it matters
Grasppy has a genuine explanation problem, and no amount of traffic fixes it. Someone lands on a screen full of nodes and either grasps the drill-in idea within ten seconds or closes the tab. A three-step tour on first paste — "here is your map, click a node, here is the source text it came from" — converts more of the traffic you have already paid for than doubling that traffic would. It also lightens your video workload: when the product explains its own basics, your YouTube time goes to the interesting use cases instead of a tour of the toolbar.
- Tours are edited visually — you rewrite the onboarding copy without touching the React build
- Targeting rules mean the tour shows only to first-session users, not to you every morning
- Released twelve days ago and moving fast; at 2.0k stars almost none of your competitors run it
- Young project — the licence splits an MIT core from an enterprise tier, so check what you actually get
- Another Docker stack with its own Postgres to run and back up
- Premature until Grasppy has a steady trickle of genuinely new users to onboard
It also lightens your video workload: when the product explains its own basics, your YouTube time goes to the interesting use cases instead of a tour of the toolbar.
Its JS snippet goes into the React app and identifies the logged-in user; the server runs as a container on the VPS.
23.9k stars · BSD-2-Clause · v3.8.6 (2026-05-25)
Whisper with a timecode on every word — the raw material for captions, chapters, blog posts and Shorts cuts.
▶Repo detailsthe review · specs · pros & cons · install
What it is
A speech-recognition pipeline that runs Whisper in fast batches and then force-aligns the result, so every individual word carries an accurate start and end time. It can also separate speakers.
Why it matters
This is the keystone of the whole content pipeline, which is why it leads the layer. Word-level timing is what makes karaoke-style captions possible, what lets OpenShorts (06) cut on a sentence boundary instead of mid-word, what generates real YouTube chapter markers, and what turns a spoken tutorial into a blog post Google can actually index. You publish in English and Russian and Whisper handles both, so two recordings become two transcripts with no manual typing. Set this up once and the rest of the layer simply works.
- BSD-2 — no commercial restrictions whatsoever on what you build with the output
- Word-level timestamps are a real capability gap over plain Whisper, not a marginal upgrade
- Many times faster than the original model at the same accuracy
- A GPU makes it comfortable and your Hetzner box almost certainly lacks one — on CPU, budget roughly an hour per long video
- Python + PyTorch + cuDNN is exactly the install that eats a non-programmer's evening. Hand it to Claude Code
- Speaker separation needs a Hugging Face token and accepting a model licence — an extra hoop
Runs on your Mac beside Camtasia, or as a queued job on the VPS.
Runs on your Mac beside Camtasia, or as a queued job on the VPS.
5.2k stars · Unlicense · 31.6.0 (2026-09-06)
One command strips silence and dead air from a screencast — typically 15-25% shorter, better retention.
▶Repo detailsthe review · specs · pros & cons · install
What it is
A command-line tool that measures the sound across a recording and removes the quiet parts, then joins what is left. There is no timeline, no settings screen and no project file.
Why it matters
Screen recordings made by one person are full of waiting. None of it is bad footage. It is just time. Time is the only thing between a viewer and the end of your tutorial. Cutting it does not make the video worse. It makes it shorter. Shorter tutorials get finished, and that is close to what YouTube actually rewards. It also makes every other tool here cheaper. Fewer minutes to transcribe. Fewer to fix the loudness. Fewer to caption.
- One command. Nothing to set up except ffmpeg, which you need for #4 anyway.
- Public domain licence. The freest licence in my records.
- Handles any file ffmpeg can read, so it works before or after Camtasia.
- It cuts by loudness. A pause you made on purpose is just silence to it. Watch the result before you publish.
- It re-encodes the video unless you tell it not to. That costs a little quality.
- Install from GitHub, not PyPI. PyPI is nine months behind. See the note above.
source venv/bin/activate pip install --upgrade "auto-editor @ git+https://github.com/WyattBlue/auto-editor" auto-editor lesson.mp4 --output lesson-tight.mp4
3.9k stars · MIT · no tagged releases; active main branch
Self-hosted Opus Clip — long video in, LLM-picked 9:16 clips with word-level captions out.
▶Repo detailsthe review · specs · pros & cons · install
What it is
A self-hosted clip factory: hand it a long video and an LLM picks the segments most likely to stand alone, reframes them to 9:16 and burns in word-level captions. It bundles thumbnail and title tooling alongside.
Why it matters
Shorts are currently the cheapest organic reach on YouTube, and you are already producing exactly the right source material — a ten-minute Grasppy walkthrough contains half a dozen moments that work on their own. Doing this by hand is an afternoon per video, which is precisely why nobody sustains it past week three; doing it with a script is how channels post daily without burning out. Fed by the transcript from 04, it turns one recording into a long video, a Shorts queue and a stack of captioned assets for LinkedIn and X.
- MIT and self-hosted — no watermark, no per-clip fee, no monthly SaaS bill
- Reframing and caption burn-in is the tedious half of the job, and it is the half that is automated
- Runs in Docker, so it never touches your Mac's Python environment
- No tagged releases — you run whatever
mainis that day. Pin a specific commit or a Friday will break - It calls paid LLM and text-to-speech APIs, so every batch has a real cost. Set a spend cap before the first run
- The model's taste in clips is mediocre. Expect to reject roughly half of what it proposes
Docker on the VPS or your Mac, fed by the WhisperX JSON from 04 and emptying into Postiz (Ed. 1 · 05) for scheduling.
2.6k stars · Apache-2.0 · 0.0.6 (2026-01-29)
The /llms.txt spec — one small file that tells AI models what your product is. An hour of work, permanent upside.
▶Repo detailsthe review · specs · pros & cons · install
What it is
A proposed standard: a single Markdown file served at /llms.txt that tells a language model what your site is, in a form it can read without wading through your HTML. The repo holds the specification plus tooling to generate and expand one.
Why it matters
The AI-search audit you were told to run in Edition 1 exists to find problems; this is the fix for the biggest one it will report. Grasppy gets discovered by people asking an assistant "what helps me find things buried in a long chat?" — and right now, when a model reaches your site, it has to infer your product from marketing HTML. A short file that plainly states what Grasppy does, who it is for, and where the docs live is the difference between being quoted accurately and being paraphrased into something you don't sell. An hour of work, no ongoing cost, and this surface only grows.
- The cheapest item in this edition by a wide margin — you can finish it before lunch
- No infrastructure, no dependency, no maintenance beyond editing a text file
- Adopted by a growing list of developer tools, so models increasingly expect the format
- A proposal, not a ratified standard. No crawler is obliged to read it
- The benefit is hard to measure directly, so you are acting partly on faith
- A stale file is worse than none — you have now told models something untrue about your own product
A static file served by FastAPI at /llms.txt , plus an expanded /llms-full.txt if you want one.
17.7k stars · MIT · v0.1.7 (2026-09-02)
Self-hostable SEO workbench (keywords, rank tracking, audits, AI visibility) with an MCP server. Free Ahrefs/Semrush alternative.
▶Repo detailsthe review · specs · pros & cons · install
What it is
A self-hostable SEO workbench covering keyword research, rank tracking, technical audits and AI-visibility checks in one app you own. It ships an MCP server, which means an AI assistant can operate it for you.
Why it matters
The commercial equivalents run $99–200 a month, and at your stage that money is better spent on hosting. But the MCP server is the part that genuinely fits how you work: instead of learning another dashboard you will stop opening, you ask Claude Code "which keywords is this competitor ranking for that we aren't?" and it queries this for you. It pairs cleanly with advertools from Edition 1 — advertools generates and crawls, OpenSEO tracks and reports.
- MIT and self-hostable, with no per-seat pricing to grow into
- The MCP server means Claude Code drives it — which suits you far better than any UI
- Pay-as-you-go on the underlying data instead of a flat monthly subscription
- Still v0.1.x — young software, expect breaking changes and rough edges
- Keyword and SERP data still comes from paid providers. "Free" here means cheaper, not no bill
- Another Node and Postgres stack to patch, on a VPS that is steadily getting busier
Docker on the VPS with its own database, or run it locally when you need it.
4.8k stars · MIT · v0.18.0 (2026-06-29)
One command Lighthouse-scans every page of a site and ranks what to fix. npx, nothing to host.
▶Repo detailsthe review · specs · pros & cons · install
What it is
A tool that runs Google Lighthouse across an entire site rather than one URL at a time, crawling pages in parallel and collecting performance, accessibility, SEO and best-practice scores into a single sortable report. It runs through npx, so there is nothing to install permanently.
Why it matters
Grasppy is a heavy React app, and heavy React apps quietly fail the Core Web Vitals that Google feeds into ranking — usually on the exact marketing pages that most need to rank. This tells you which pages are slow, which are missing meta descriptions, which have broken links, sorted worst-first, in about five minutes. It is the least glamorous entry here and one of very few that produces a concrete to-do list you can hand straight to Claude Code.
npx unlighthouse --site yoursite.comand you are done. No install, no account, no config file- Scans the whole site — that is the difference from PageSpeed Insights, which does one URL
- MIT, actively maintained, and the report is genuinely readable
- It reports, it does not fix — and some React performance fixes are real work
- Scanning is CPU-heavy. Run it on your Mac, not on the VPS that is serving your users
- Scores are a proxy, not revenue. Do not let chasing a green 100 crowd out writing content
Grasppy is a heavy React app, and heavy React apps quietly fail the Core Web Vitals that Google feeds into ranking — usually on the exact marketing pages that most need to rank.
Standalone tool, run from the terminal against the live site.
▶Repo detailsthe review · specs · pros & cons · install
What it is
A small Python library devoted to a single step — splitting documents into chunks — offering a dozen strategies from plain token windows up to semantic and recursive splitting that respect meaning and structure. It is built to be fast and to carry almost no dependencies.
Why it matters
Grasppy's quality ceiling is set before any clustering happens, at the moment you decide where one piece of the conversation ends and the next begins. Split a chat mid-argument and the subtopic map inherits the mistake — two half-ideas instead of one clear node — and no amount of clever embedding repairs it afterwards. Chonkie's semantic and recursive chunkers respect message boundaries and topic shifts, which is exactly the shape of your input. It is also the natural partner to model2vec from Edition 1: both are about doing the expensive step cheaply, on CPU, on the box you already pay for.
- MIT, pure Python, tiny install — drops into your FastAPI venv without a dependency fight
- A dozen strategies behind one API, so you can A/B your chunking without rewriting the pipeline
- Deliberately lightweight, which matters on a VPS running two products already
- It solves one narrow step. Useful, not transformative on its own
- The semantic chunkers need an embedding model, so they are not free in CPU terms
- The company behind it sells a hosted product — watch for features drifting to the paid side over time
source venv/bin/activate then pip install chonkie in the FastAPI environment.
22.9k stars · PostgreSQL License · v0.8.x, actively released through 2026
Vector search as an ordinary SQL query inside the Postgres he already runs. No new server, no new backup story.
▶Repo detailsthe review · specs · pros & cons · install
What it is
A PostgreSQL extension that adds a vector column type and nearest-neighbour search operators. Embeddings become ordinary columns and similarity search becomes an ordinary ORDER BY in a query you already know how to write.
Why it matters
Every "find where in this conversation we discussed X" feature needs vector search, and the tempting path is to bolt on a dedicated vector database. Don't — that is a second server to run, secure, back up and pay for, on a box already hosting two products. pgvector keeps the vectors beside the rows they belong to, so one pg_dump still captures everything and a single query can filter by user, document and date and rank by similarity. For a solo founder, that operational simplicity is worth far more than the last few percent of benchmark speed.
- No new service. One
CREATE EXTENSIONand your existing backups already cover the vectors - Combines similarity with normal SQL filters — something most vector databases make awkward
- Permissive PostgreSQL licence and the de-facto standard, so Claude Code writes it correctly first time
- Building an HNSW index is memory-hungry. Set
maintenance_work_memproperly or it will fall over on a small VPS - At very large scale a dedicated engine wins — though you are a long way from that problem
- Index parameters and the embedding model must stay in sync, or search quietly degrades with no error to warn you
pgvector keeps the vectors beside the rows they belong to, so one pg_dump still captures everything and a single query can filter by user, document and date and rank by similarity.
Enable the extension in your existing PostgreSQL and add a vector column to the chunk table.
8.9k stars · AGPL-3.0 · v0.6.6 on PyPI (2026-07)
The lowest-friction Python backtester — 20 lines to a full trade log, equity curve and parameter sweep.
▶Repo detailsthe review · specs · pros & cons · install
What it is
A small Python backtesting framework: define entry and exit rules as a class, hand it a dataframe of candles, and get back a full trade log, an equity curve, a drawdown profile and an interactive chart. Parameter sweeps and optimisation are built in.
Why it matters
Edition 1 gave you STUMPY to find repeating shapes in three years of EURUSD. Finding them is the easy half — almost all of them are noise, and the only way to tell which is to test them. This is the shortest path from "STUMPY found a motif" to "here is what it returned across three years, after spread." Your 2%-a-month target is a testable claim, and the value of this library is that testing is cheap enough that you will actually run twenty ideas instead of falling in love with the first one.
- The least ceremony of any Python backtester — a working test really is about twenty lines
- Built-in optimiser and interactive charts showing exactly where each trade opened and closed
- Heavily documented with a large body of public examples for Claude Code to draw on
- AGPL-3.0. Fine for your own research, a genuine problem if backtesting becomes a feature customers use inside ScalpingMate — check this before you build on it
- Single asset, single timeframe by design. It will not model a portfolio
- Like every backtester it flatters you until you subtract spread, slippage and overnight financing yourself
pip install backtesting
Checked, and left out
Nothing to show for this edition. Recording the repositories that were checked and rejected began with Edition No. 4, and every edition from there on has the list.