I wanted one place to run my newsletter, blog, content updates, research, analytics, and publishing.
What I didn’t want was monthly subscriptions for a CMS, automation software, AI API usage, SEO dashboards, and content tools.
So I built my own.
The interface runs on Vercel. GitHub handles most of the automation. Google Sheets, Docs, and Drive hold the content and data. ChatGPT and Claude Code handle the main AI production tasks, with other models available for specific functions.
There’s no Zapier. No Make. No always-on server. The best part is it doesn’t require paid API use from any model.
Here are some of the key parts of the build:
GitHub Actions Runs Most of the Automation
GitHub Actions is running the automation schedules - not Claude or ChatGPT.
I use scheduled and manually triggered Actions to run research, process content decisions, create briefs, trigger drafting, refresh data, analyze URLs, research current AI/SEO/GEO trends, and prepare content for publishing.
Some run automatically at specific times. Others are triggered by buttons inside the CMS such as:
Research new ideas.
Analyze this URL.
Push this article live.

The click triggers GitHub, GitHub runs the required process, and the result comes back into the CMS.
For small internal tools, this can replace a surprising amount of paid automation infrastructure.
Before adding another automation platform to something you’re building, check whether the action can be handled by a scheduled or manually dispatched GitHub Action.
One thing I didn’t want was another vibe-coded dashboard just to look at things for no reason. I wanted a central place to cover every single thing I need - every separate website or app I use for my site or newsletter is now inside this CMS.
There are separate areas for my newsletter, blog, existing-content updates, analytics, content performance, AI/SEO/GEO analysis, optimization, feedback, and system health.
An idea can move through research, approval, briefing, drafting, revision and completion without me jumping between AI chats and manually copying data around.

For example:
Every day there’s a research agent finding and adding new ideas to a pipeline for me to check.
I go in and approve, decline, hold the topic - with the option to add feedback so the research agent learns.
Approvals then move to draft stage where I can give feedback, edit, rewrite, whatever needs doing.
Then I can publish live to the site.
Updates work slightly differently- Search Console, analytics, and trend data feed this. The agent analyzes the live article, then comes back and suggests a priority article that needs refreshing as it’s outdated.
I then approve, and it drafts the changes for me to review before pushing live.
The point here is everything is done in one place - I don’t ever have to leave the app.
I Built a Marketing Brain With More Than 450 Specialist Skills
One of the bigger parts behind the system is my Marketing Brain - I’ll share more on this in a dedicated newsletter.
It contains more than 450 specialist marketing skills covering different areas of writing, content, SEO, AI search, research, analytics, strategy, and other marketing functions.
The system can identify which specialist knowledge is relevant and feed those instructions into the task.
A newsletter doesn’t need the same instructions as a landing page.
An AI-search analysis doesn’t need the same knowledge as a content brief.
A long-form article might need writing standards plus a specific writing specialist and research requirements.
This also makes the system much easier to improve. I can change the specialist responsible for one area without rewriting the instructions for everything else.
If you’re building a large AI system, I’d strongly recommend breaking reusable expertise into specialist files rather than expanding a master prompt
The Marketing Brain Maintains Its Own Knowledge
Building hundreds of skills creates another problem: they become outdated.
So the Brain has its own maintenance system.
Skills can be reviewed on different schedules depending on how quickly their subject changes. For example, the skills under SEO and GEO/AEO are checked every week, compared to social algorithms, which are checked every 3 months.
When a review is due, the system can research sources and decide whether the skill is still relevant or outdated.
If nothing changed, it leaves it alone.
If the information changed, the relevant files can be updated and versioned.
If the change is too big or uncertain to handle safely, it is held and flagged for review.
That means I don’t need to remember that a set of AI-search instructions I created six months ago may now contain old information.
For any reusable AI knowledge base, I’d add review dates from day one. Otherwise, you’re building a library of outdated instructions that I guarantee you will forget about.
(I also have these documented in a backup Google Sheet just in case)
Every Correction Can Improve Future Output
One thing I wanted the most was a feedback system that didn’t involve me screaming at AI 100 times before it got it right.
When I reject an idea, change an angle, or leave instructions on a draft, the system records the exact feedback.
Repeated preferences can become proposed rules. Confirmed rules are then available to future runs.
There’s a section in the CMS where I can see the feedback that has been captured, the preferences the system thinks it has identified, and the rules that are currently active.

The important part is that I can see and control this.
The specialist knowledge has its own maintenance process, while my personal editorial preferences are learned from the decisions I make while using the system.
So I’m gradually improving the system by using it rather than maintaining another ridiculous document called something like “my writing prompt FINAL v17”.
Research and Content Ideas Arrive Automatically
The research side runs without me opening an AI chat and asking for ideas.
For the blog, it can look at my existing content, previous ideas, past decisions, search performance, current queries, content gaps, and fresh research.
It also runs a separate process for existing articles that may need updating.
For the newsletter, it can research potential topics based on a different set of criteria.
Those ideas arrive in the CMS for approval.
I deliberately keep the active queues capped. I don’t need an AI system producing 100 terrible ideas.
I need it to keep finding usable ideas.
Once I approve one, the same system can take it through briefing and drafting.
I do check the source materials used at this stage just in case, so I do leave the CMS for this, but I plan on adding a built-in viewer to make this even easier.
I also wanted the CMS to tell me what’s going on with performance - NOT just showing me the same data.
The analytics section currently brings together Google Search Console, Bing/Copilot search data, GA4, newsletter, and AI citation tracking.
So I can see Google clicks alongside Bing performance, site traffic, newsletter metrics, and citations from AI engines.
I can also dive into search pages and queries rather than opening Search Console separately every time.
Then I can take a declining page straight into an SEO/GEO/recovery analysis that uses its live performance data, current queries, the live page, and current search results.
The system includes analysis and suggestions alongside the data, giving me reasons why a piece is dropping, performing, changing, or whatever the case may be.
If you’re building a dashboard for data - don’t just replicate Search Console or something useless - include structured analysis of the data with inputs from other data sources so you get more information.
If You Want to Build Something Similar
Start with one effective loop and expand from there.
Use GitHub Actions before paying for Zapier, Make or another automation tool.
Keep AI instructions in separate skills/files so they are easier to update.
Add review dates to anything that can become outdated.
Save feedback so repeated corrections can improve future runs.
Connect analytics back into the CMS so performance data can trigger updates.
Keep publishing behind a final approval step.
You can get surprisingly far with Vercel + GitHub + Google Workspace + the AI subscriptions you already pay for.
