Edition No. 6 · 31 Aug 2026
Twelve repositories for getting a page in front of a person
SEO, sitemaps, social cards, and the plumbing between a good page and someone reading it.
Five editions have built you things to say and places to say them. Today is about the last mile: the surface a visitor actually touches, the evidence that tells you what to put on it, and whether the map behind the link is readable enough to be worth arriving at.
Seven entries serve marketing, four sharpen the products, one is the wildcard. Every repository below was opened this morning; star counts, licences and release dates are what the pages showed. Six candidates were checked and deliberately left out — they are named at the end, with the reason.
This edition, in numbers
| Repos | 12 |
| Hidden gems (<3k stars) | 4 |
| Marketing / product | 7 / 4 |
| New to the ledger | 11 |
| Repeats | 1 |
| Dropped on check | 6 |
If you only do three things
- Point yt-dlp (04) at your five closest competitors tonight. One
pip install, no API key, no quota, no OAuth screen. By bedtime every title, description, tag, upload date, thumbnail and subtitle track from their entire catalogues is JSON on your disk. Every decision you currently make by instinct — what to film, what to call it, what the thumbnail should look like — becomes a decision you can look up. - Then install advertools (06) — the one repeat. It was entry 07 of Edition 1, ten days ago, and it is the tool that turns 04 and 05's pile of clean text into keyword lists, sitemap comparisons and crawl reports. Handing you raw material a third time without the thing that processes it would be dishonest.
- Try toponymy (09) over one real conversation. It is the smallest change on this page that a user would actually notice. Grasppy's clusters currently get keyword-list labels — model, prompt, token, api — which read as debug output. This library exists to name clusters properly, at every level of the tree, which is the half of your promise no clustering library delivers on its own.
Every link in one place
| # | Repository | Official site | Stars | Licence |
|---|---|---|---|---|
| 01 | GrapesJS/grapesjs | grapesjs.com | 26.1k | BSD-3-Clause |
| 02 | imgproxy/imgproxy | imgproxy.net | 10.9k | Apache-2.0 |
| 03 | axllent/mailpit | mailpit.axllent.org | 10.2k | MIT |
| 04 | yt-dlp/yt-dlp | pypi.org/project/yt-dlp | 187k | Unlicense |
| 05 | adbar/trafilatura | trafilatura.readthedocs.io | 6.6k | Apache-2.0 |
| 06 | eliasdabbas/advertools 💎 | advertools.readthedocs.io | 1.4k | MIT |
| 07 | aiogram/aiogram | docs.aiogram.dev | 5.7k | MIT |
| 08 | HKUDS/LightRAG | github.com/HKUDS/LightRAG | 36.1k | MIT |
| 09 | TutteInstitute/toponymy 💎 | toponymy.readthedocs.io | 99 | MIT |
| 10 | TutteInstitute/datamapplot 💎 | datamapplot.readthedocs.io | 1.0k | MIT |
| 11 | bashtage/arch 💎 | bashtage.github.io/arch | 1.5k | NCSA |
| 12 | marimo-team/marimo | marimo.io | 22.3k | Apache-2.0 |
Make it land
Twelve repositories, checked and reviewed. Every version verified against the GitHub API and dated.
26.2k stars · BSD-3-Clause · v0.23.6 (2026-08-26)
Drag-and-drop builder for landing pages and, through its newsletter preset, email-safe table HTML.
▶Repo detailsthe review · specs · pros & cons · install
What it is
A framework for building visual web editors: you embed it in a page and get a canvas with draggable blocks, a style manager, a layer tree and an asset manager. It ships preset configurations — one for web pages, one for newsletters — and the newsletter preset produces the old-fashioned table-based HTML that email clients actually render correctly.
Why it matters
Edition 2 recommended Listmonk and said plainly that its editor is "functional, not friendly. No drag-and-drop email designer." That gap is still open, and it is one of the quieter reasons the mailing list keeps getting postponed — writing HTML email by hand is miserable work, and Claude Code can produce it but you cannot eyeball whether it will survive Outlook. The newsletter preset here is the missing piece. The second use is your marketing pages: your React app cannot rank, which is why Edition 3 pointed you at Astro, and GrapesJS exports plain HTML and CSS you can drop straight into an Astro page — so a landing-page variant, or the Russian version of one, is a duplicate-and-edit rather than a rebuild. And of everything on this page, its licence is the friendliest: BSD-3-Clause means you could legitimately embed the editor inside Grasppy one day if you ever want users building their own report layouts.
- BSD-3-Clause — the most permissive licence in today's edition, and safe to embed commercially
- The newsletter preset outputs email-safe table HTML, which is precisely the thing Listmonk asks you to write by hand
- Exports plain HTML and CSS with no runtime dependency, so nothing you build in it is locked inside it
- It is a framework, not an application. You assemble a builder from presets and plugins before you can use it as one — an evening with Claude Code, not a five-minute download
- The GitHub releases page looks stale (its latest tag shows no readable year), and only npm reveals that it is shipping steadily. Check npm for this project, not GitHub — the same trap as turftopic in Edition 4
- The HTML it generates is verbose and wrapper-heavy. Fine for email, worth cleaning before it goes into a page you want fast
Export the HTML and paste it into Listmonk's template, or into an Astro page beside the Starlight docs.
npm install grapesjs grapesjs-preset-newsletter
11k stars · Apache-2.0 · v4.0.14 (2026-08-24)
Signed-URL image server: resize, crop and convert to WebP/AVIF on the fly.
▶Repo detailsthe review · specs · pros & cons · install
What it is
A standalone image server. You link to an image through a signed imgproxy URL that encodes the size and format you want; it fetches the original, resizes, crops, converts to WebP or AVIF, and serves the result. One Go binary or Docker container, no database.
Why it matters
When you run Unlighthouse from Edition 2 over your site, images will be near the top of what it complains about — they almost always are on a screenshot-heavy marketing site. And you are about to have a lot of screenshots: shot-scraper from Edition 3 regenerates the whole set on every deploy, in English and Russian, and hand-optimising forty PNGs is exactly the chore nobody sustains. imgproxy makes the size and format a property of the URL rather than a manual step, which means it keeps working after you stop thinking about it. That matters for ranking, because Core Web Vitals feed into Google's assessment of the pages you most want to rank, and it matters for a Russian-speaking visitor on a slow connection who will simply leave.
- Apache-2.0, a single small Go binary, no per-image cost and nothing metered
- AVIF and WebP conversion is the largest single page-weight win available to you, and it is a configuration flag rather than a project
- Signed URLs mean strangers cannot point your server at arbitrary images and use the Hetzner box as a free image service
- It earns nothing until you have a content site with real images on it. If Astro is not built yet, this is premature — note it and come back
- It needs caching in front of it (nginx, or a CDN) or it re-processes on every single request, and that CPU cost lands on the box beszel is now measuring
- There is a commercial Pro version, and a few of the more advanced processing features live only there. Check before you depend on one
Astro and Starlight pages reference imgproxy URLs instead of raw files.
That matters for ranking, because Core Web Vitals feed into Google's assessment of the pages you most want to rank, and it matters for a Russian-speaking visitor on a slow connection who will simply leave.
Docker container on the VPS, private behind your existing reverse proxy at something like img.yourdomain.com , with nginx caching in front.
10.3k stars · MIT · v1.31.1 (2026-09-05)
Fake SMTP server with a web inbox, spam score and HTML-compatibility report — read the campaign before subscribers do.
▶Repo detailsthe review · specs · pros & cons · install
What it is
A fake SMTP server with a web inbox attached. Point any application's mail settings at it and every message that application tries to send lands in a browser interface instead of a real inbox, where you can read the HTML version, the plain-text version and the raw source, run a spam score against SpamAssassin rules, and check the HTML against a compatibility table for real mail clients.
Why it matters
Listmonk has been on your list since Edition 2 and the honest reason a mailing list gets postponed is rarely the install — it is that pressing send on a real campaign is frightening when you cannot see what arrives. This removes the fear cheaply: point Listmonk at Mailpit, send the entire newsletter, and read it. The Cyrillic that broke, the button Outlook eats, the spam score that would have filed you under Promotions — all visible before anyone real is involved. The second, less obvious use is Grasppy's own transactional mail. Signup confirmations and password resets are the mail path you will never test by hand, and a broken one costs you signups silently, with no error anywhere. Half an hour with this catches both.
- One binary or one container, no configuration, MIT — the lowest-friction entry on this page
- The HTML-compatibility report and the spam score are the two things you genuinely cannot eyeball yourself
- It catches your application's transactional mail as well as newsletters, which is the path that fails quietly
- It is a testing tool and never delivers anything. It tells you about rendering, not deliverability — SPF, DKIM and DMARC with SES or Postmark are still entirely your problem
- The compatibility report is a static rule set, not a real copy of Outlook. Treat it as a strong hint, not a guarantee
- Left running on the public VPS without a password it would expose every message it has caught. Keep it on the Mac, or behind authentication
docker run -d --name mailpit -p 8025:8025 -p 1025:1025 axllent/mailpit # then set your app's SMTP host to localhost:1025 # and open the inbox at http://localhost:8025
189.7k stars · Unlicense · 2026.08.19 (2026-08-19)
Whole-channel YouTube metadata as JSON — titles, tags, thumbnails, subtitles, upload dates — with no API key or quota.
▶Repo detailsthe review · specs · pros & cons · install
What it is
The command-line downloader for YouTube and several thousand other sites. It fetches video, audio-only tracks, subtitles, thumbnails and, most usefully here, the complete metadata for a video or an entire channel as JSON: title, description, tags, chapters, duration, upload date, view count.
Why it matters
Edition 5 gave you youtube-transcript-api for transcripts and called it the cheapest content research that exists. This is the layer underneath it, and it is cheaper still. One command with --flat-playlist --dump-json over a competitor's channel gives you every video they have ever published as a row of structured data — no API key, none of the 10,000-unit daily quota that constrains python-youtube. That is the raw table for the two questions you cannot currently answer: which topics in your niche get made most often, and which of them get made well. Add --write-thumbnail and you can lay the top fifty thumbnails out as a contact sheet, which is the fastest education available in the single variable that most affects whether YouTube shows your video to a stranger. It also archives your own channel, which is the backup nobody makes until something disappears.
- Unlicense on the source, no key, no quota, no consent screen — and a project that will still be maintained in five years
--dump-jsonalone is a research database with no code written; hand the file to Claude and ask what nobody has covered properly- Metadata, subtitles and thumbnails come out of the same command, so one run produces material for titles, topics and design
- YouTube blocks datacentre IP ranges aggressively. Run it from the Mac, not the Hetzner box — exactly the caution Edition 5 gave for youtube-transcript-api
- Downloading other people's video for private research is one thing; republishing any of it is another, and the line matters
- The pre-built standalone executables bundle GPLv3+ code. Use the plain
pip installif anything you build might ever ship
source venv/bin/activate pip install yt-dlp # every video on a channel, as one JSON object per line yt-dlp --flat-playlist --dump-json \ "https://www.youtube.com/@SOMECHANNEL/videos" > channel.jsonl # one video: metadata, subtitles and thumbnail, no video file yt-dlp --skip-download --write-info-json --write-thumbnail \ --write-subs --write-auto-subs --sub-langs "en,ru" "VIDEO_URL"
6.8k stars · Apache-2.0 · v2.2.0 (2026-07-31)
Extracts the actual article from any web page as clean Markdown, with no browser and negligible memory.
▶Repo detailsthe review · specs · pros & cons · install
What it is
A Python library and command-line tool that fetches a page and extracts the main body text plus its metadata — title, author, date, tags — discarding navigation, adverts, footers and comment sections. It outputs text, Markdown, JSON, CSV or XML, and it can walk a sitemap or a feed to do this across a whole site.
Why it matters
Two jobs, and they are the two halves of your business. For marketing: point it at your competitors' sitemap.xml and you have every article they have written as clean Markdown in one folder, which is how "write something about AI trends" becomes "here are the eleven questions our competitors answer and the four nobody has answered properly." That corpus is exactly what 06 needs. For the product: Grasppy's own pitch says chat, discussion or document, and "paste a link" is a lower-friction front door than "upload a file" — Docling handles the file, this handles the link. Crucially it is roughly two orders of magnitude lighter than crawl4ai, because it never launches a browser, which is what makes it safe to run on a VPS that is already carrying two products.
- Apache-2.0 since v1.8.0, so it is safe inside a commercial Grasppy — worth knowing, because anything older, and some forks, are GPLv3+
- No browser, no Playwright, no Chromium: a plain HTTP fetch and a parser, so memory use is negligible
- Consistently at or near the top of published extraction benchmarks, which is not a claim most scrapers can make
- It does not run JavaScript. A page that renders its article client-side comes back empty, and that is the moment to reach for crawl4ai instead
- Extraction is heuristic, so an unusually built page can quietly lose a section without erroring
- The command-line tool has a great many flags and the defaults are not always what you want for clean Markdown — budget one session of reading
source venv/bin/activate pip install trafilatura # one page trafilatura --markdown -u "https://example.com/some-article" # a competitor's whole blog, as Markdown files trafilatura --sitemap "https://competitor.com/sitemap.xml" \ --markdown -o ./corpus
1.4k stars · MIT · v0.18.0 on PyPI (2026-06-17)
Python toolkit built by a working SEO practitioner — crawling, sitemaps, SERP analysis, keyword generation.
▶Repo detailsthe review · specs · pros & cons · install
What it is
A Python toolkit written by a working SEO practitioner rather than a general-purpose developer: site crawling, sitemap and robots.txt parsing, keyword generation, SERP and text analysis. Everything comes back as an ordinary pandas table you can sort, filter and export.
Why it matters
Its three functions map onto three jobs you have right now. crawl() over your own Astro site returns every missing title, duplicate description and broken link before Google finds them. sitemap_to_df() on a competitor's sitemap gives you their publishing cadence and topic spread as one table — which pairs directly with the channel data from 04 to show where they put effort. And kw_generate() builds the long-tail keyword combinations around "summarise a long chat", "discussion map tool" and "forex scalping backtest", in both your languages, that you would otherwise be inventing by hand. It is also shaped like everything else you run: Python, no dashboard, described to Claude Code rather than learned.
- MIT, pure Python, drops into the FastAPI virtual environment with no new runtime and no dependency fight
- Written by a practising SEO, so the functions are named after marketing tasks rather than developer abstractions
- v0.18.0 in June 2026 — steady, unhurried maintenance over many years rather than a burst of activity
- No keyword volume data of its own. It generates and analyses; it will not tell you demand, so pair it with Search Console or a paid source
- Output is DataFrames, which means you need somewhere to look at them — which is a large part of why 12 is on this page
- Its crawler is enthusiastic. Set a page limit and a delay, or you will make an enemy of somebody's server
source venv/bin/activate pip install advertools
5.9k stars · MIT · v3.31.0 (2026-08-25)
Async Python framework for Telegram bots — the distribution surface a Russian-speaking audience is actually on.
▶Repo detailsthe review · specs · pros & cons · install
What it is
A modern, fully asynchronous Python framework for the Telegram Bot API: routers, filters, finite-state dialogs, inline keyboards, and delivery by either webhook or long polling, with a typed API surface that tracks Telegram's own releases closely.
Why it matters
Edition 4 was about the second audience and gave you translation, dubbing, localisation and bilingual docs — everything except somewhere to publish. In Russian-speaking tech, that somewhere is a Telegram channel: distribution, comments and a subscriber list on one surface, with no algorithm deciding who sees a post. Two concrete uses, and the second is the interesting one. First, a posting bot — FastAPI or n8n pushes every new video and article to your channel automatically, which is the job Mixpost and Postiz do for the platforms they cover, and Telegram is the platform they cover worst. Second, a Grasppy bot: someone forwards a long chat export to it and gets the subtopic map back as a message. That is your product, with no signup and no landing page, on the app your Russian audience already has open — a distribution channel and a free trial at the same time.
- MIT, async, and written in the same Pydantic-flavoured Python your FastAPI app already uses
- A Telegram channel is a subscriber list nobody can reprice — the Listmonk argument, in the place your second audience lives
- The v3 API has been stable for years and the documentation is thorough, so Claude Code writes it correctly first time
- Telegram is a conversation, not a broadcast pipe. A bot that never answers is worse than no bot — the same warning Edition 5 gave about the support chat
- Bot API rate limits are strict and fail quietly. A bulk send needs deliberate throttling or messages simply vanish
- It only pays off if you commit to the Russian channel. Half-committed, it becomes another inbox you avoid opening
Install into the FastAPI virtual environment and run the bot as a second process beside the API — or, for the posting half, as a Procrastinate periodic task, since you now have a job queue.
source venv/bin/activate pip install aiogram
39.5k stars · MIT · v1.5.7 (2026-09-02)
Entity-and-relationship graph over documents with local and global query modes — GraphRAG's structure at a fraction of the cost, stored in PostgreSQL.
▶Repo detailsthe review · specs · pros & cons · install
What it is
A retrieval system that extracts entities and the relationships between them from your documents, assembles them into a graph, and then answers questions at two levels: local, about a specific entity, and global, about themes across the whole corpus. It supports PostgreSQL, Neo4j, MongoDB and others as the graph and vector store, and ships a server with a web interface that draws the graph.
Why it matters
Edition 1 gave you GraphRAG and said honestly that it costs thousands of LLM calls per import; Edition 3 gave you BERTopic as the cheap default. This is the third position, and it is the one that changes the shape of the product rather than its price. Two things matter. The entity graph is a genuinely different view from the topic tree — who and what is being discussed and how they connect, rather than which clusters exist — and that is a second screen you could ship from the same import. And its incremental insertion means adding new messages extends the graph instead of triggering a rebuild, which is what makes "map this conversation as it grows" a feature rather than a wish. The PostgreSQL backend is the practical detail: the graph can live beside pgvector rather than in a Neo4j you would have to run, secure and back up separately.
- MIT, and the PostgreSQL storage backend keeps you on the one-database plan that pgvector and Procrastinate have already argued for
- Incremental insertion — new text extends the graph rather than forcing a full re-index, which is the expensive part of GraphRAG
- Local and global query modes map cleanly onto Grasppy's drill-in and its "summarise the whole thing" promise
- It still runs a model over every chunk to extract entities. Cheaper than GraphRAG is not the same as cheap — put LiteLLM in front of it before the first large import, not after the bill
- A fast-moving research project with a wide surface area, and documentation that assumes you already speak RAG
- You now hold three candidate engines for one job. The honest instruction is to run this against BERTopic over the same twenty conversations and delete the loser — two topic engines is two things to debug at three in the morning
And its incremental insertion means adding new messages extends the graph instead of triggering a rebuild, which is what makes "map this conversation as it grows" a feature rather than a wish.
The PostgreSQL backend is the practical detail: the graph can live beside pgvector rather than in a Neo4j you would have to run, secure and back up separately.
source venv/bin/activate pip install "lightrag-hku"
102 stars · MIT · release-0.5.4 (2026-09-04)
Names clusters at every level of a hierarchy using sub-cluster structure and sample documents rather than a bag of keywords.
▶Repo detailsthe review · specs · pros & cons · install
What it is
A library that takes clustered text embeddings and produces human-readable names for each cluster, at every layer of a hierarchy, using keywords, sub-cluster structure and sample documents as evidence rather than asking a model to guess from a bag of words. It comes from the Tutte Institute — the group that wrote UMAP and HDBSCAN.
Why it matters
Your entire pitch is a map somebody can read at a glance. Clustering gives you groups; the label on the group is what makes it a map instead of a blob diagram. BERTopic's default labels are keyword lists — model, prompt, token, api — which look exactly like debug output to a paying user, and hand-rolled prompting gets the hard part wrong in a predictable way: the parent's name ends up no broader than its children's, so the hierarchy stops meaning anything as you zoom. Toponymy is built for precisely that multi-scale naming problem. Ninety-nine stars is not much, but the lineage is the authors of the two algorithms BERTopic is built on, and this is the smallest change on today's page that a user would visibly notice.
- Purpose-built for naming a hierarchy at several scales, which is exactly the shape of Grasppy's drill-in
- MIT, and it consumes the sentence-transformers or model2vec embeddings your pipeline already produces
- From the group behind UMAP and HDBSCAN, so it composes with the machinery under BERTopic rather than competing with it
- Ninety-nine stars and a small research team. Treat it as a technique you could reimplement if it stalls, not a dependency to bet the product on
- It calls a model per cluster per layer, so a deep tree has a real per-import cost — LiteLLM again, before the first big run
- It names clusters; it cannot make bad clusters good. Chunking and embeddings still decide the quality of what it is naming
Clustering gives you groups; the label on the group is what makes it a map instead of a blob diagram.
source venv/bin/activate pip install toponymy
1k stars · MIT · release-0.7.3 (2026-05-31)
Labelled data maps with proper label placement — a diagnostic for cluster naming and a shareable marketing image.
▶Repo detailsthe review · specs · pros & cons · install
What it is
A plotting library for labelled data maps. It places cluster labels so they do not collide, renders the point cloud with proper density handling instead of a scatter of dots, and exports either a publication-quality static figure or a self-contained interactive HTML page with search and hover.
Why it matters
Two uses, and one of them is marketing. As a tool: it is by far the fastest way to see whether 09's names and your clustering are any good — one figure over one real conversation teaches you more than reading a list of label strings ever will. As a marketing asset: a properly labelled map of every question asked inside a 500-message thread is the picture that explains Grasppy in a single frame, which is exactly what your landing page, your Satori social images and your thumbnails currently lack. Images like that get shared on their own merits, which is a rarer property than it sounds. Same institute as 09, so the two are designed to sit next to each other.
- MIT, pure Python, and no front-end work — a figure or a standalone HTML page straight from a dataframe
- Label placement is the genuinely hard part of a map like this, and it is the part that is already solved
- The interactive export is self-contained, so it drops into an Astro page with no build step at all
- It draws a point cloud, not a hierarchy. This is a design and diagnostic tool, not the drill-in canvas — that is still React Flow plus elkjs
- It wants 2-D coordinates, so UMAP has to sit in front of it: another dependency, and another non-deterministic step you must seed
- Static export goes through matplotlib, whose font handling with Cyrillic is where the fiddly hour will go
Same institute as 09, so the two are designed to sit next to each other.
source venv/bin/activate pip install datamapplot
1.6k stars · NCSA · v8.0.0 (2025-10-21)
GARCH volatility models plus White's reality check and the Politis-Romano-Wolf stepwise test — regime filters, and a way to tell skill from search luck.
▶Repo detailsthe review · specs · pros & cons · install
What it is
The reference Python library for financial econometrics: GARCH-family volatility models and forecasts, unit-root tests, and a bootstrap module that includes the standard multiple-comparison procedures — White's reality check and the Politis–Romano–Wolf stepwise test.
Why it matters
Two things ScalpingMate is missing, and neither is another backtester. The first is regime. A scalping edge lives or dies on volatility: a rule that prints during a busy London open bleeds through a flat August afternoon, and a backtest averaged across three years hides that completely. Fit a GARCH model, join its conditional-volatility series to your trades, and you can finally ask "does this only work above median volatility?" — which is usually where a mediocre strategy turns into a usable one with a filter on the front. The second is blunter. tsfresh and STUMPY are going to hand you a great many candidates, and the best of many backtests always looks good. The reality check is the published test for whether it beat the benchmark by skill or by sheer number of attempts. That test is the difference between finding an edge and finding the luckiest coin in a bucket of five hundred.
- The standard, boring, correct implementation — written by a statsmodels core developer, implementing tests the literature actually names
- NCSA licence: permissive and BSD-shaped, so it can ship inside a paid feature, like skforecast and quantstats and unlike backtesting.py
- pandas in, pandas out, so it drops into the ScalpingMate pipeline without introducing a new way of working
- This is genuinely statistical software. The documentation assumes you know what a conditional variance model is — the entry most likely to need Claude Code as a tutor rather than a typist
- v8.0.0 in October 2025 is the oldest release on today's page. Ten months is comfortably inside the line, but it does not ship weekly like the rest
- A volatility model tells you about risk, never direction. It will not find you a strategy; it tells you when the ones you have are trustworthy
A Procrastinate job fits a GARCH(1,1) over the EURUSD series and writes conditional volatility to a column beside the price bars, at which point every backtest gains a regime filter for free.
source venv/bin/activate pip install arch
22.7k stars · Apache-2.0 · 0.24.0 (2026-08-17)
Reactive Python notebook stored as a plain .py file — no hidden execution order, and `marimo run` serves it as a web app.
▶Repo detailsthe review · specs · pros & cons · install
What it is
A reactive Python notebook. The file on disk is ordinary .py; change a cell and every cell that depends on it re-runs automatically, so there is no hidden state and no out-of-order execution. It has built-in interface elements — sliders, dropdowns, tables — and the same file can be served as a web app or run as a script.
Why it matters
Count how many entries in this ledger end with "the result is a pandas DataFrame": advertools' crawl tables, tsfresh's features, arch's volatility series, skforecast's fold metrics, quantstats' inputs. You have nowhere good to look at any of them. Jupyter is the usual answer and it is the wrong one for you specifically, on two counts: its hidden execution order quietly produces wrong results, which matters most when the result is a trading decision; and .ipynb files are unreadable in git and awkward for Claude Code to edit. A marimo notebook is a Python file — Claude Code edits it like any other source file — and reactivity means a slider over "window length" or "volatility threshold" re-runs the whole analysis as you drag it. That is the difference between reading a backtest result and interrogating one. And since the same file serves as an app, an internal ScalpingMate research tool costs you nothing extra to build.
- Notebooks are plain
.pyfiles: git-diffable, reviewable, and directly editable by Claude Code - Reactive execution eliminates the "I ran the cells out of order" class of wrong answer, which is the one that costs money here
marimo runserves the same file as a web app, so a research notebook becomes an internal tool for free
- It is not Jupyter and will not run your existing
.ipynbfiles unchanged. There is an importer; expect friction - Reactivity means an expensive cell re-runs whenever anything upstream changes, so long jobs need caching or explicit stops
- A much smaller ecosystem than Jupyter — most tutorials you find in the wild will be written for the other one
source venv/bin/activate pip install marimo marimo edit analysis.py
Checked, and left out
These were opened for this edition and did not make it, with the reason.
motion-canvas/motion-canvas
motion-canvas/motion-canvas (18.6k, MIT) — last release 2024-12-14, past the dormancy line. Backlogged.
adityaarsharma/youtube-marketing-skills
adityaarsharma/youtube-marketing-skills (38, MIT) — YouTube growth toolkit as Claude Code skills; no releases and unreadable commit dates. Backlogged, worth re-checking.
puckeditor/puck
puckeditor/puck (13.2k, MIT, v0.23.0 2026-08-07) — alive, but overlaps GrapesJS, which also builds email. Backlogged.
tldraw/tldraw
tldraw/tldraw (49.8k) — not open source; requires a paid licence key in production. Backlogged with that caveat.
StJudeWasHere/seonaut
StJudeWasHere/seonaut (763, MIT) — checked a third time; still no releases and its Docker Hub repo 404s. Left in backlog.
arikchakma/maily.to
arikchakma/maily.to (3.8k, MIT) — re-checked, tag dates still unreadable, and now superseded for his purposes by GrapesJS's newsletter preset.