The Problem
As a solo consultant, I was spending 15+ hours per week on content marketing. Writing blog posts, optimizing for SEO, publishing across platforms, and submitting to search engines. It was eating my billable hours alive.
So I automated the entire pipeline.
The Architecture
Here's what the system does, end-to-end, with zero human intervention:
1. Content Generation
# AI generates SEO-optimized articles based on keyword research
def generate_article(keyword, intent):
prompt = f"""
Write a 1200-word article targeting '{keyword}'
Search intent: {intent}
Include: H2/H3 structure, internal links, CTA
Tone: Expert but approachable
"""
return llm.generate(prompt)
2. Multi-Platform Publishing
One article gets distributed to:
- Main website (canonical URL)
- Dev.to (developer audience)
- Hashnode (tech community)
- Medium (general audience, manual for now)
- LinkedIn (professional network)
Each platform gets a slightly modified version optimized for that audience.
3. Automatic Indexing
// Submit new URLs to Google via Indexing API
async function requestIndexing(url) {
const response = await fetch(
'https://indexing.googleapis.com/v3/urlNotifications:publish',
{
method: 'POST',
headers: { Authorization: `Bearer ${token}` },
body: JSON.stringify({
url: url,
type: 'URL_UPDATED'
})
}
);
return response.json();
}
4. Performance Tracking
Google Analytics 4 server-side tracking monitors:
- Page views per article
- Time on page
- Conversion events (signup, checkout)
- Traffic source attribution
The Results After 30 Days
| Metric | Before AI | After AI |
|---|---|---|
| Articles/week | 1-2 | 8-12 |
| Time spent | 15 hrs/week | 30 min/week |
| Indexed pages | 12 | 45+ |
| Organic traffic | ~50/mo | Growing |
| Cross-platform reach | 1 platform | 5 platforms |
Tech Stack
- LLM: Claude API for content generation
- Publishing: Custom API integrations (Dev.to, Hashnode, Twitter)
- Indexing: Google Indexing API + IndexNow
- Hosting: Vercel (React + Vite + TypeScript)
- Analytics: GA4 with server-side tracking
- Monitoring: UptimeRobot + Sentry
- Payments: Stripe (live, subscription billing)
Key Lessons Learned
1. Canonical URLs Are Critical
When cross-posting, ALWAYS set the canonical URL to your main site. Otherwise Google might index the Dev.to version instead of yours.
{
"article": {
"canonical_url": "https://yourdomain.com/blog/article-slug"
}
}
2. Don't Just Generate — Optimize
Raw AI content ranks poorly. You need to:
- Add real data and examples
- Include internal links to your other content
- Structure with proper H2/H3 hierarchy
- Add schema markup for rich snippets
3. Batch and Schedule
Don't publish everything at once. Spread content across the week for consistent indexing signals.
4. Monitor and Iterate
Track which topics drive actual conversions (not just traffic). Double down on what converts.
The Full Pipeline Code
I've open-sourced the core framework. Here's a simplified version:
class ContentPipeline:
def __init__(self):
self.platforms = [
DevToPublisher(),
HashnodePublisher(),
TwitterPublisher(),
]
def run(self, keyword):
# Generate
article = self.generate(keyword)
# Publish to main site
url = self.publish_to_site(article)
# Cross-post everywhere
for platform in self.platforms:
platform.publish(article, canonical_url=url)
# Request indexing
self.request_indexing(url)
# Track
self.log_analytics(url, keyword)
What's Next
I'm building this into a full product called The WEDGE Method — an AI operating system for solo consultants that handles content, SEO, proposals, client management, and revenue optimization.
If you're a solo consultant spending too much time on marketing instead of billable work, this might be exactly what you need.
What part of your content workflow would you automate first? Let me know in the comments.
Follow me for more posts about AI automation for consultants and solo founders.
Top comments (0)