Open source · AGPL-3.0 · Self-hostable with Ollama
Know if your post will flop
before you hit send.
Type a tweet, headline, or LinkedIn post. Get a grade, specific feedback, and a rewrite — in under 50 milliseconds. No AI in the scoring path. Same input, same score, every time.
🧩
Score as you type — right in your browser
A floating score badge appears while you compose on X, LinkedIn, Instagram, Threads, and Facebook. No copy-pasting. No context switching. Includes AI rewrite and A/B compare.
# Score a tweet before posting — instant, no AI needed
import requests
r = requests.post("https://contentforge-api-lpp9.onrender.com/v1/score_tweet",
headers=HEADERS,
json={"text": "I'm working on a new project."})
# → score: 32 grade: C ← skip this one
r = requests.post("https://contentforge-api-lpp9.onrender.com/v1/score_tweet",
headers=HEADERS,
json={"text": "Got 100 signups in 24 hours 🚀 Here's the copy that converted: #buildinpublic"})
# → score: 91 grade: A ← post this one
See the Difference
Run a weak headline through /v1/improve_headline — AI rewrites it, scores each version, and returns the best.
Before
"How to make money online"
Score: 49 Grade: C FAILED
Generic, no specificity, no hook
→
After
"Can You Really Earn $5,000 a Month Online? Discover the Secrets"
Score: 100 Grade: A PASSED +104% lift
Power words: earn, secret, discover · Question hook · Specific number
Built For
Whether you're a solo creator or running an agency, ContentForge fits your workflow.
🐦
Twitter Growth Hackers
Score every tweet before posting. Only publish A-grade content. Use tweet_ideas for an endless pipeline.
✍️
Bloggers & Newsletter Writers
Test 10 headlines in a loop, pick the highest-scoring one. Open rates go up, guaranteed.
🚀
Indie Hackers
Score every build-in-public post before you ship it. Thread outlines, daily tweet ideas, bio optimization — all via API.
🏢
Agencies & Teams
Generate content calendars for multiple clients. Score client-submitted copy. Standardize quality at scale.
🤖
Bot & Automation Builders
Plug ContentForge into your Zapier flows, CMS hooks, or custom bots. Clean JSON, CORS enabled.
📧
Email Marketers
Score subject lines before sending. A/B test 5 variations programmatically. Avoid spam triggers automatically.
📣
Ad Managers
Score Google and Meta ad copy for CTR signals. Check CTA strength, urgency language, and character limits.
📌
Pinterest Creators
Score pin descriptions for saves and SEO. Ensure instructional language, right hashtag count, and keyword density.
🎵
TikTok & Short Video Creators
Score captions for the FYP. Check length, hashtag strategy, and trending language before you post.
Instant scoring, AI generation, and Proof Intelligence endpoints for measurable content performance.
POST
/v1/analyze_headline copy
Score any headline 0–100 with letter grade, power word detection, and specific improvement suggestions.
⚡ Instant
↓ click for example
POST
/v1/score_tweet copy
Score any tweet draft for engagement potential before you post. Checks length, hashtags, emojis, power words.
⚡ Instant
↓ click for example
Example Request Body
{"text": "Built an API in 48hr. $500 last month 💸 #buildinpublic"}
POST
/v1/score_linkedin_post copy
Score a LinkedIn post 0–100. Evaluates hook strength, paragraph structure, hashtags, list usage, and CTA presence.
⚡ Instant
↓ click for example
Example Request Body
{"post": "I spent 3 years building tools nobody used.\n\nThen I changed one thing..."}
POST
/v1/score_instagram copy
Score an Instagram caption for engagement. Checks hashtag count (5–15 optimal), emojis, hook, CTA, and line breaks.
⚡ Instant
↓ click for example
Example Request Body
{"caption": "Stop scrolling 👇\n\n30 days of cold showers changed me.\n\n#productivity #morningroutine"}
POST
/v1/score_youtube_title copy
Score a YouTube title for click-through rate. Checks optimal length (40–60 chars), numbers, brackets, and power words.
⚡ Instant
↓ click for example
Example Request Body
{"title": "I Tried Making $1,000 in 24 Hours [Honest Results]", "thumbnail_text": "$1K IN 24H??"}
POST
/v1/score_youtube_description copy
Score a YouTube description for SEO and watch time. Checks length, keyword placement, timestamps, links, and CTAs.
⚡ Instant
↓ click for example
Example Request Body
{"description": "In this video I show you exactly how to build a REST API from scratch..."}
POST
/v1/score_email_subject copy
Score an email subject line for open rate. Checks length, personalization tokens, power words, spam signals, and urgency.
⚡ Instant
↓ click for example
Example Request Body
{"subject": "Quick question about your content strategy, {{first_name}}"}
POST
/v1/score_tiktok copy
Score a TikTok caption for viral potential. Checks length (ideal ≤ 150), hashtag count, emojis, trending signals.
⚡ Instant
↓ click for example
Example Request Body
{"caption": "POV: you just automated your content strategy 🤖✨ #contentcreator #growthhack"}
POST
/v1/score_threads copy
Score a Threads post. Checks length (ideal 150–500), conversational tone, questions, CTA, and hashtag usage.
⚡ Instant
↓ click for example
Example Request Body
{"text": "Hot take: most creators should post less and optimize more. Agree?"}
POST
/v1/score_facebook copy
Score a Facebook post. Evaluates length, emoji density, questions, CTAs, hashtag count, and engagement triggers.
⚡ Instant
↓ click for example
Example Request Body
{"text": "Just hit 10k followers! 🎉 Here's what actually worked for me this year..."}
POST
/v1/score_pinterest copy
Score a Pinterest pin description for saves and discovery. Checks length (150–500), keywords, hashtags, and instructional language.
⚡ Instant
↓ click for example
Example Request Body
{"description": "Save this for later! 10 digital tools that will 10x your productivity as a creator 📌"}
POST
/v1/score_reddit copy
Score a Reddit post/title for upvote potential. Checks title length, question hook, self-promotion signals, formatting, hashtag misuse, and link density.
⚡ Instant
↓ click for example
Example Request Body
{"title": "Built a deterministic content scoring API — here's what I learned", "text": "After 3 months of building..."}
POST
/v1/score_ad_copy copy
Score Google/Meta ad copy. Evaluates headline length, benefit clarity, urgency, CTA strength, and compliance signals.
⚡ Instant
↓ click for example
Example Request Body
{"headline": "Save 30% on AI Tools Today Only", "body": "Limited offer — get ContentForge Pro free for 7 days.", "platform": "google"}
POST
/v1/score_readability copy
Compute Flesch-Kincaid readability for any text. Returns reading ease score, grade level, avg sentence/word length.
⚡ Instant
↓ click for example
Example Request Body
{"text": "The API returns a JSON payload containing the score and grade."}
POST
/v1/analyze_hashtags copy
Analyze a list of hashtags — extracts unique tags, detects duplicates, overused tags, and gives per-platform recommendations.
⚡ Instant
↓ click for example
Example Request Body
{"hashtags": "#ai #AI #buildinpublic #growthhack #growthhack", "platform": "instagram"}
POST
/v1/score_content copy
Unified scoring endpoint. Pass any platform as a parameter and score with a single URL. No need to remember platform-specific paths.
⚡ Instant
↓ click for example
Example Request Body
{"text": "Just shipped my side project!", "platform": "tweet"}
POST
/v1/score_multi copy
Score one piece of text across multiple platforms in a single call. Get Twitter, LinkedIn, Instagram scores simultaneously.
⚡ Instant
↓ click for example
Example Request Body
{"text": "Just shipped my first SaaS 🚀 #buildinpublic", "platforms": ["twitter","instagram","threads"]}
POST
/v1/batch_score copy
Score up to 20 content drafts against one platform in a single call. Returns all scores ranked best-first — perfect for A/B testing drafts before posting.
⚡ Instant
↓ click for example
Example Request Body
{"texts": ["Draft A: Big news in tech today", "Draft B: I built a tool that scores your tweets before you post — try it free"], "platform": "twitter"}
POST
/v1/compare copy
Head-to-head comparison of two content drafts across multiple platforms. Returns per-platform scores, a winner, and specific advantages — perfect for A/B testing before you post.
⚡ Instant
↓ click for example
Example Request Body
{"text_a": "Ship fast, learn faster.", "text_b": "We are pleased to announce our new product.", "platforms": ["tweet", "linkedin"]}
POST
/v1/ab_test copy
Submit 2-20 drafts and a target platform. Returns all drafts ranked by score with a winner recommendation, confidence level, and statistical spread — the ultimate A/B testing tool for content.
⚡ Instant
↓ click for example
Example Request Body
{"drafts": ["Ship fast, learn faster 🚀", "We are pleased to announce our new product.", "Built an API in 48hr — $500 last month #buildinpublic"], "platform": "tweet"}
GET
/v1/status copy
Ultra-lightweight uptime check. Returns {"ok": true} with no LLM probe or log reads. Use for monitoring dashboards and extension health checks.
⚡ Instant
↓ click for example
POST
/v1/improve_headline copy
Submit a weak headline, get back N AI-rewritten versions sorted by score. The analyze → improve cycle.
✦ AI
↓ click for example
POST
/v1/generate_hooks copy
Generate scroll-stopping hook lines for any topic. Choose count and tone (bold, curious, direct, viral, etc.).
✦ AI
↓ click for example
Example Request Body
{"topic": "building a SaaS while working full-time", "count": 5, "style": "viral"}
POST
/v1/rewrite copy
Rewrite any text for a specific platform (Twitter, LinkedIn, email, blog) and tone in one call.
✦ AI
↓ click for example
Example Request Body
{"text": "I built an API.", "platform": "twitter", "tone": "engaging"}
POST
/v1/auto_improve copy
Score → if not PASSED → AI rewrites it → re-scores → loops until PASSED or max iterations. Scorer + generator in a closed feedback loop. Returns best version found + full iteration history.
✦ AI
↓ click for example
Example Request Body
{"text": "I built an API.", "platform": "tweet", "tone": "engaging", "max_iterations": 3, "target_gate": "PASSED"}
POST
/v1/compose_assist copy
Generate 2-5 rewrite variants, score each automatically with quality gates, and return the best winner plus score delta vs original draft.
✦ AI
↓ click for example
Example Request Body
{"text": "I built a scoring API for creators.", "platform": "tweet", "tone": "engaging", "count": 3}
POST
/v1/tweet_ideas copy
Generate a batch of tweet ideas with hashtags for any niche. Never run out of content ideas.
✦ AI
↓ click for example
POST
/v1/content_calendar copy
Build a 7-day content calendar for any niche and platform with themes and ready-to-post drafts.
✦ AI
↓ click for example
Example Request Body
{"niche": "indie hacking", "days": 7, "platform": "twitter"}
POST
/v1/thread_outline copy
Generate a complete Twitter thread: scroll-stopping hook, numbered body tweets, and CTA closing tweet.
✦ AI
↓ click for example
Example Request Body
{"topic": "build a micro-SaaS in a weekend", "tweet_count": 7}
POST
/v1/generate_bio copy
Generate an optimized social bio for Twitter (160 chars), LinkedIn (300), or Instagram (150). Auto-trimmed to limit.
✦ AI
↓ click for example
Example Request Body
{"name": "Aden", "niche": "indie dev building APIs", "platform": "twitter"}
POST
/v1/generate_caption copy
Generate optimized Instagram or TikTok captions for any topic, with auto-generated hashtags and emoji suggestions.
✦ AI
↓ click for example
Example Request Body
{"topic": "morning productivity routine", "platform": "instagram", "tone": "motivational"}
POST
/v1/generate_linkedin_post copy
Generate a full LinkedIn post (hook + body + CTA) from a topic or key points. Follows LinkedIn best practices.
✦ AI
↓ click for example
Example Request Body
{"topic": "lessons learned from my first SaaS failure", "tone": "authentic"}
POST
/v1/generate_email_sequence copy
Generate a 3-email drip sequence (welcome, value, pitch) for any product or audience. Subject lines included.
✦ AI
↓ click for example
Example Request Body
{"product": "ContentForge API", "audience": "indie hackers and solopreneurs", "tone": "friendly"}
POST
/v1/generate_content_brief copy
Generate a full content brief from a topic: target audience, key messages, SEO keywords, outline, and CTAs.
✦ AI
↓ click for example
Example Request Body
{"topic": "How to grow on LinkedIn as a software developer", "content_type": "blog post"}
POST
/v1/record_score_delta copy
Record before/after score changes for one revision so you can prove quality improvements over time.
⚡ Proof
↓ click for example
Example Request Body
{"platform": "tweet", "original_text": "I like ai", "revised_text": "Built this in 48h 🚀", "posted": true}
POST
/v1/record_publish_outcome copy
Record engagement outcomes plus estimated revenue lift per post using your score delta and baseline assumptions.
⚡ Proof
↓ click for example
Example Request Body
{"post_id":"x-123","platform":"tweet","score_before":52,"score_after":78,"engagement":{"impressions":5000,"clicks":80},"value_per_click":1.8}
POST
/v1/record_revenue copy
Attach realized revenue attribution to a post for evidence-based client reporting and close-proof case studies.
⚡ Proof
↓ click for example
Example Request Body
{"post_id":"x-123","platform":"tweet","revenue_amount":12.5,"revenue_source":"affiliate"}
GET
/v1/dashboard_stats copy
Aggregated proof metrics: average score delta, engagement totals, estimated lift, realized revenue, and top wins.
⚡ Proof
↓ click for example
GET
/v1/proof_timeline copy
Daily trendline for proof metrics: average score delta, estimated lift, realized revenue, and combined signal by day.
⚡ Proof
↓ click for example
GET
/v1/export_proof_report copy
Export investor/client-ready proof reports as JSON or CSV for case studies, pipeline reviews, and close-proof reporting.
⚡ Proof
↓ click for example
GET
/v1/proof_recommendations copy
Action-ranked next steps based on your score deltas, attribution quality, and weak-channel detection.
⚡ Proof
↓ click for example
GET
/v1/cohort_benchmarks copy
Compare current period performance vs trailing window and platform medians for score/revenue signal benchmarking.
⚡ Proof
↓ click for example
GET
/health copy
Service health check. Returns status, LLM backend, and per-endpoint usage statistics.
⚡ Instant
↓ click for example
The Deterministic Advantage
Interpretable content intelligence — every deduction has a traceable rule, every score has an audit trail.
📐
A Digital Ruler, Not a Black Box
A ruler doesn't need a dataset to measure 12 inches — it just needs to be calibrated. ContentForge's heuristic engine gives the same score to the same input, every time. No variance. No hallucinations. Every deduction is itemised and traceable to a specific rule.
⚡
<50ms — No LLM in the Scoring Path
All 12 platform scorers are pure Python heuristics. No network calls, no model inference, no API quota consumed. AI (Ollama or Gemini) is reserved for generation endpoints — rewrites, hooks, subject lines.
🔬
White-Box Scoring — Fully Auditable
The scoring logic is on GitHub. You can trace exactly why a post scored 74 and not 83 — every signal is a readable Python condition. When a client asks "why did this fail the quality gate?", you have a defensible answer, not "the AI said so."
Try It Live
Instant heuristic scoring in the browser — no API key needed.
Score Your Content
Headline · 30–80 chars is optimal · add a number or question
⚔️ A/B Compare
Paste two drafts — see which one wins across platforms, and why.
Simple Pricing
Start free. Scale when you need more. All plans include every endpoint.
Why Not Just Use ChatGPT?
Ask GPT to score the same tweet twice. You'll get two different answers. That's the problem.
LLM-based scoring
score("Great tweet!") → 74
score("Great tweet!") → 79
score("Great tweet!") → 71
1.2s avg · $0.003/call · different every time
ContentForge
score("Great tweet!") → 42
score("Great tweet!") → 42
score("Great tweet!") → 42
18ms · free · same answer forever
🔒
No data stored
Your content is scored and discarded. We never log, store, or sell your text.
🛡️
HTTPS only
All API traffic encrypted in transit. No plaintext. No exceptions.
⚡
No account needed
RapidAPI handles auth. We never see your password or payment info.
Self-Host It
Run the entire scoring engine locally. Scoring uses zero AI calls. Open source, AGPL-3.0.
$ git clone https://github.com/CaptainFredric/ContentForge.git $ pip install -r requirements.txt $ python scripts/api_prototype.py Listening on http://localhost:5000 — all 50 endpoints active
Frequently Asked Questions
Is ContentForge free?
Yes. The BASIC plan gives you 50 AI calls and 300 requests per month at no cost, no credit card required. Paid plans start at $9.99/month for higher volume.
Do you store or read my content?
No. Text is scored in memory and discarded immediately. We do not log, store, or analyze your content after the response is sent. See our Terms of Use.
Why is the first request slow?
ContentForge runs on Render's free tier, which puts the server to sleep after inactivity. The first request wakes it up (~15-30 seconds). Subsequent requests are fast (<500ms). Paid infrastructure is on the roadmap.
What platforms does the Chrome extension support?
The extension is available on the Chrome Web Store. It shows a floating score badge on Twitter/X, LinkedIn, Instagram, Threads, and Facebook. You can also use the popup on any page to score content for 12 different platforms including TikTok, YouTube, and email.
Is the scoring AI or rule-based?
The instant scoring endpoints use deterministic rule-based analysis (no LLM, no latency, no hallucinations). The AI endpoints use Ollama-backed language models for content generation, rewriting, and deep analysis.
Can I see the scoring logic?
Yes. ContentForge is open source: github.com/CaptainFredric/ContentForge. Every scoring rule is public and auditable.