tsingyuai/growth-lab: an open source growth loop that runs inside Codex or Claude Code
An end-to-end growth tool that understands the product, fetch the data it needs, researches the market, executes campaigns, and reviews results to improve the next round of growth. 从代码到市场的开源端到端增长工具。理解产品、接入信息渠道、研究市场、执行增长行动,并基于真实数据自我改进。
At a glance
- What is it?
- Growth Lab turns a coding agent session into the control plane for product growth work, with Skills as method, Clients as execution, and the filesystem as memory. It ships a working SEO page loop and a Xiaohongshu replication workflow, and it deliberately stops short of publishing for you.
- Who is it for?
- Adopt Growth Lab if you already work inside Codex or Claude Code, want growth method and execution in the same workspace, and are comfortable that publishing on Xiaohongshu stays a manual step. Do not adopt it if you need a scheduled background service that runs unattended, or if you want a hosted dashboard, because the repository is a set of Skills, scripts and a workspace layout rather than an application.
- Can I use it commercially?
- Yes. Apache-2.0 is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
- Is it still maintained?
- Yes. The repository last received commits 38 days ago.
- What is it written in?
- Mainly Python, 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
The gap Growth Lab is aimed at: product context that keeps getting lost
Most AI marketing tools solve one slice of the problem. One writes copy, another researches competitors, a third publishes, a fourth draws charts. The README makes the failure mode explicit: product context is repeatedly lost as work moves between tools, and the decisions that matter end up scattered across dashboards, documents, prompts and manual handoffs. Growth Lab's answer is to stop treating growth as a pipeline of separate tools and treat it as one loop that keeps its own context.
The loop the README lays out is: understand the product, judge users and market, research channels and content, form a strategy, generate and distribute, collect real results, learn and adjust the next action. The intended user is someone who already drives a coding agent and wants that agent to carry growth work end to end instead of being re-briefed at every step. It is not aimed at a marketing team looking for a dashboard they can hand to a non-technical colleague.
Sessions as the control plane, Skills as the method, Clients as the hands
The product model in the README is four lines long and worth reading literally: a session is the control plane, Codex or Claude Code is the runtime, a Skill is growth method and working guidance, a Client is external execution capability, and the filesystem is long-term memory. That is the whole architecture. There is no server process to keep alive and no database.
A Skill teaches the runtime how to understand a product, run research, pick tools, form strategy, produce content, analyze feedback and decide the next step. A Client gives the runtime access to browsers, official APIs, data exports, content platforms and asset generation. Files carry product context, research material, decisions and results across sessions.
The repository layout matches this: collectors/, executors/, models/, memory/ and docs/ sit at the top level, with AGENTS.md and SOUL.md describing how the agent should behave. Each Model is described as its own observe, act, review loop with its own persistent Memory that accumulates time-stamped operating data, analysis, action results and next-step recommendations. The next round reads that Memory before it starts observing. Method lives in the Model and evolves by editing Skills and references directly; Memory records what actually happened when the Model was used.
Installing Growth Lab and running a first loop
There is no package to install and no service to start. The README's setup is a clone, then opening the directory in Codex or Claude Code. The repository also ships a Makefile with test and lint targets, which is the closest thing to a verification step.
git clone https://github.com/tsingyuai/growth-lab.git
cd growth-labOpen that directory in Codex or Claude Code and ask what it can do, or describe the growth outcome you want. The README gives these example prompts:
你能做什么?
理解这个产品,并运行它的第一个增长闭环。
采集小红书上与这个产品相关的高表现内容,选择可迁移的结构,完成一篇图文稿和配图。
复盘最近的结果,然后执行下一步增长行动。The runtime reads existing Models, builds missing product and market context, calls the relevant Collectors and Executors, and writes evidence, results, artifacts and next actions back into the workspace.
Configuration is handled through a single onboarding Skill rather than a settings page. The README points at models/onboard-growth-lab/SKILL.md, which audits every capability dependency. You can ask the agent to check what is still missing, or to configure Xiaohongshu collection and image generation while skipping SEO for now. The agent inspects API keys, third-party Clients, external repositories, browsers and login state, explains where a missing setting comes from, and lets you decide whether to configure it or skip it for this round.
The keys themselves live in .env.example. SEO reads Bing Webmaster data through BING_WEBMASTER_API_KEY and submits URLs through INDEXNOW_KEY with SITE_URL. Image generation needs either OPENAI_API_KEY or GEMINI_API_KEY. Xiaohongshu collection is browser-first through xiaohongshu-mcp, pointed at by XHS_MCP_ENDPOINT with a default of http://127.0.0.1:18063; the README states the first collection defaults to 25 items, matching DEFAULT_SAMPLE_LIMIT=25. The same file carries rate limiting knobs: XHS_REQUEST_INTERVAL_MS=2000, XHS_RATE_LIMIT_PER_MIN=20 and XHS_BACKOFF_SECONDS=300. Third-party Clients and login state stay outside the repository, and the README states that keys, cookies and auth profiles do not enter Memory.
What actually ships today, and the gap between the two loops
Two capabilities are documented. The SEO page loop, at models/run-seo-page-loop/SKILL.md, reasons about the scenarios in which someone would need your product, researches what those users actually search for, and generates pages that answer the question and route readers toward the product. The README reports one real run: new pages were indexed within 1 to 2 days, and on a 7-day average basis overall CTR fell 50 percent while impressions and clicks both rose 1000 percent. Those are the project's own numbers from a single run, and the README itself notes that results depend on the product, domain, search demand, page quality, site authority and observation window. A CTR drop alongside a large impression gain usually means the new pages rank for broader, less targeted queries, which is a reasonable outcome but not the same as conversion improvement, and nothing in the repository measures conversion.
The Xiaohongshu workflow at models/xhs-replicate/SKILL.md coordinates collection, creation, de-AI-ifying the text, screenshots, image generation, card rendering, compliance checking and post-publish review. The README reports one piece of commercial content reaching over 4000 likes and saves with more than 700 comments, and states plainly that the actual publishing is still done by a human. That boundary is a design decision, not an unfinished feature.
The gap is the rest of the channel list. The README says the design goal is to cover all growth channels, and that other media platforms can still use an external MediaCrawler via MEDIACRAWLER_DIR, while Xiaohongshu no longer goes through it. Everything beyond SEO pages and Xiaohongshu is intent, not shipped capability.
Where Growth Lab is the wrong tool
If you want growth work to run on a schedule without a person in the session, this is the wrong shape. The README is direct that automation here does not mean a background program running forever detached from humans: the user keeps raising goals in natural language, receiving completed work, giving feedback and letting the agent continue. The conversation is the interface. Anything you want to happen at 3am needs a scheduler you build yourself.
The second boundary is publishing. Xiaohongshu publishing remains manual, so a workflow that assumes automated posting will need its own integration. The third is data. The repository does not distribute private product data, historical samples, generated artifacts or operating Memory; a Model creates its own Memory namespace when you actually run it. That means a fresh clone starts with no evidence base, and the loop's value compounds only after you have run it and accumulated results.
The fourth is that credentials and login state live outside the repository, and the Xiaohongshu collector depends on a local browser-first binary plus a logged-in session. If your environment cannot run that binary or hold a session, the Xiaohongshu half of the project is unavailable to you regardless of what the Skills say. The README does not document rollback for a bad run, and there are no releases retrieved for this repository, so there is no tagged version to pin to.
How it differs from MediaCrawler and from generic marketing agents
MediaCrawler is the closest named alternative in the repository, and the difference is one of scope rather than quality. MediaCrawler is a collection tool: it fetches content from media platforms, and Growth Lab can still call it through MEDIACRAWLER_DIR for platforms other than Xiaohongshu. It does not understand your product, form a strategy or review results. Growth Lab wraps collection inside an observe, act, review loop with persistent Memory, so the collection step exists to feed a decision rather than to produce a dataset. The README notes Xiaohongshu specifically no longer routes through MediaCrawler and now uses the local browser-first xiaohongshu-mcp instead.
Against generic AI marketing agents, the difference is the runtime. Growth Lab does not ship its own model or its own interface. It borrows the file-editing, web-searching and tool-calling abilities of Codex or Claude Code and layers growth method on top through Skills. That is cheaper to maintain and easier to inspect, because a Skill is a file you can read and edit. It also means Growth Lab inherits whatever those runtimes cannot do, and its ceiling moves when they move.
Maintenance, licensing and what an upgrade actually costs
The repository is not archived, and the last push was on 2026-08-11. The Apache License 2.0 covers the code, which permits commercial use and modification and requires that you preserve the licence and notice files; it also includes an explicit patent grant and a patent retaliation clause. That is the standard reading of the licence text, not advice about your situation, and any product data you put into a workspace is yours to govern separately.
Upgrade cost is unusual here because there is no package version to bump. You track the main branch, and the things that change are Skills, references and scripts. The README states that closed-loop methodology is stored in the Model and evolves by directly editing Skills and references. That means a pull can change how the agent behaves without changing any dependency you can see in a lockfile, and your local edits to a Skill are the thing most likely to conflict. The Makefile gives you two cheap checks: make test-xhs runs the Xiaohongshu collector tests, the configuration check and a node syntax check on the image generator, and make lint-post POST=memory/<loop>/outputs/<post> runs the banned-phrase and compliance scripts against a rendered post. Running both after a pull is the practical way to notice that a Skill change altered output.
Editorial conclusion
Adopt Growth Lab if you already work inside Codex or Claude Code, want growth method and execution in the same workspace, and are comfortable that publishing on Xiaohongshu stays a manual step. Do not adopt it if you need a scheduled background service that runs unattended, or if you want a hosted dashboard, because the repository is a set of Skills, scripts and a workspace layout rather than an application. Before committing, verify three things: that the onboarding Skill can see every dependency it audits on your machine, that your Xiaohongshu collection path works with the browser-first xiaohongshu-mcp binary and login state kept outside the repository, and that you accept the Apache-2.0 terms for whatever you build on top. The repository does not distribute private product data, historical samples, generated artifacts or operating Memory, so the first run is where your workspace starts existing.
Frequently asked questions
What is Growth Lab?
It is an open source end-to-end growth tool that runs inside Codex or Claude Code. Sessions act as the control plane, Skills carry growth method, Clients provide external execution, and the filesystem holds long-term memory. The repository ships an SEO page growth loop and a Xiaohongshu replication and review workflow.
How do I install Growth Lab?
There is no package to install. The README says to clone the repository with git clone https://github.com/tsingyuai/growth-lab.git, enter the directory, and open it in Codex or Claude Code. Configuration is then handled by asking the agent through the onboarding Skill.
Does Growth Lab publish Xiaohongshu posts automatically?
No. The README states that actual publishing is still completed by a human, and describes that boundary as intentional. The workflow covers collection, creation, de-AI-ifying text, screenshots, image generation, card rendering, compliance checking and post-publish review.
What credentials does Growth Lab need?
The .env.example file lists BING_WEBMASTER_API_KEY and INDEXNOW_KEY for the SEO loop, either OPENAI_API_KEY or GEMINI_API_KEY for image generation, and a set of XHS_MCP_* variables pointing at a local browser-first xiaohongshu-mcp endpoint. The README states that keys, cookies and auth profiles stay outside the repository and do not enter Memory.
Is Growth Lab actively maintained?
The repository is not archived, and the last push was on 2026-08-11. No releases were retrieved, so there is no tagged version to pin to and you would track the main branch.
Community notes