content-grade 1.0.50 → 1.0.51

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -98,9 +98,9 @@ function incrementUsage() {
98
98
 
99
99
  // Upgrade links — Free → Pro → Business → Team
100
100
  const UPGRADE_LINKS = {
101
- free: 'https://buy.stripe.com/4gM14p87GeCh9vn9ks8k80a', // Pro $19/mo — direct checkout
102
- pro: 'https://buy.stripe.com/bJefZjafO2Tz36Z2W48k80b', // Business $49/mo
103
- business: 'https://buy.stripe.com/cNiaEZfA8cu9bDv4088k80c', // Team $199/mo
101
+ free: 'https://buy.stripe.com/4gM14p87GeCh9vn9ks8k80a', // Pro $9/mo — direct checkout
102
+ pro: 'https://buy.stripe.com/bJefZjafO2Tz36Z2W48k80b', // Business $29/mo
103
+ business: 'https://buy.stripe.com/cNiaEZfA8cu9bDv4088k80c', // Team $79/mo
104
104
  };
105
105
 
106
106
  const TIER_NAMES = {
@@ -119,9 +119,9 @@ const TIER_LIMITS = {
119
119
 
120
120
  function getUpgradeMessage() {
121
121
  const tier = getLicenseTier();
122
- if (tier === 'free') return `Unlimited analyses with Pro — $19/mo → ${UPGRADE_LINKS.free}`;
123
- if (tier === 'pro') return `Upgrade to Business — priority support, $49/mo → ${UPGRADE_LINKS.pro}`;
124
- if (tier === 'business') return `Upgrade to Team — team seats, $199/mo → ${UPGRADE_LINKS.business}`;
122
+ if (tier === 'free') return `Unlimited analyses with Pro — $9/mo → ${UPGRADE_LINKS.free}`;
123
+ if (tier === 'pro') return `Upgrade to Business — priority support, $29/mo → ${UPGRADE_LINKS.pro}`;
124
+ if (tier === 'business') return `Upgrade to Team — team seats, $79/mo → ${UPGRADE_LINKS.business}`;
125
125
  return '';
126
126
  }
127
127
 
@@ -142,7 +142,7 @@ function showFreeTierCTA(count) {
142
142
  // Variant D — power user, last run of the day
143
143
  console.log(` ${YL}${B}${count}/${limit} — that's all your free runs for today.${R}`);
144
144
  blank();
145
- console.log(` ${WH}You're clearly using this. $19/month removes the cap entirely —${R}`);
145
+ console.log(` ${WH}You're clearly using this. $9/month removes the cap entirely —${R}`);
146
146
  console.log(` ${WH}unlimited analyses, JSON/HTML export, bulk mode. Cancel anytime.${R}`);
147
147
  blank();
148
148
  console.log(` ${CY}→ ${UPGRADE_LINKS.free}${R}`);
@@ -233,11 +233,11 @@ function showUsageFooter(count) {
233
233
  const remaining = Math.max(0, limit - count);
234
234
  blank();
235
235
  if (remaining === 0) {
236
- console.log(` ${RD}[ You've used ${limit}/${limit} free runs today · Pro: 50/day, JSON/HTML export, bulk mode — $19/mo → ${UPGRADE_LINKS.free} ]${R}`);
236
+ console.log(` ${RD}[ You've used ${limit}/${limit} free runs today · Pro: unlimited, JSON/HTML export, bulk mode — $9/mo → ${UPGRADE_LINKS.free} ]${R}`);
237
237
  } else if (remaining <= 1) {
238
- console.log(` ${YL}[ You've used ${count}/${limit} free runs today · ${remaining} remaining · Pro: 50/day ($19/mo) → ${UPGRADE_LINKS.free} ]${R}`);
238
+ console.log(` ${YL}[ You've used ${count}/${limit} free runs today · ${remaining} remaining · Pro: unlimited ($9/mo) → ${UPGRADE_LINKS.free} ]${R}`);
239
239
  } else {
240
- console.log(` ${D}[ You've used ${count}/${limit} free runs today · ${remaining} remaining · Pro: 50/day ($19/mo) → ${UPGRADE_LINKS.free} ]${R}`);
240
+ console.log(` ${D}[ You've used ${count}/${limit} free runs today · ${remaining} remaining · Pro: unlimited ($9/mo) → ${UPGRADE_LINKS.free} ]${R}`);
241
241
  }
242
242
  maybeShowEarlyAdopterCTA(count);
243
243
  maybeShowFeedbackCTA(count);
@@ -272,7 +272,7 @@ function checkFreeTierLimit() {
272
272
  hr();
273
273
  console.log(` ${RD}${B}✗ Free limit reached (${limit}/${limit} today)${R}`);
274
274
  blank();
275
- console.log(` ${WH}content-grade Pro${R}${D} — $19/mo, cancel anytime${R}`);
275
+ console.log(` ${WH}content-grade Pro${R}${D} — $9/mo, cancel anytime${R}`);
276
276
  console.log(` ${D} ├── ${R}${WH}Unlimited analyses${R}${D} — no daily cap${R}`);
277
277
  console.log(` ${D} ├── ${R}${WH}JSON + HTML output${R}${D} — pipe into your pipeline${R}`);
278
278
  console.log(` ${D} ├── ${R}${WH}CI mode ${R}${D} — exit 1 on below-threshold content${R}`);
@@ -961,7 +961,7 @@ async function cmdInit() {
961
961
  console.log(` ${CY}content-grade start${R}`);
962
962
  blank();
963
963
  }
964
- console.log(` ${WH}Pro: unlimited analyses · JSON/HTML export · bulk mode · CI integration — $19/mo, cancel anytime${R}`);
964
+ console.log(` ${WH}Pro: unlimited analyses · JSON/HTML export · bulk mode · CI integration — $9/mo, cancel anytime${R}`);
965
965
  console.log(` ${MG}→ Get Pro: ${CY}${UPGRADE_LINKS.free}${R}`);
966
966
  console.log(` ${D}After checkout: content-grade activate <your-key>${R}`);
967
967
  blank();
@@ -993,7 +993,7 @@ async function cmdActivate() {
993
993
  return;
994
994
  }
995
995
 
996
- console.log(` ${D}Pro unlocks unlimited analyses, JSON/HTML export, and bulk mode for $19/mo:${R}`);
996
+ console.log(` ${D}Pro unlocks unlimited analyses, JSON/HTML export, and bulk mode for $9/mo:${R}`);
997
997
  blank();
998
998
  console.log(` ${MG}${B}→ Get Pro: ${CY}${UPGRADE_LINKS.free}${R}`);
999
999
  blank();
@@ -1131,9 +1131,9 @@ async function cmdBatch(dirPath) {
1131
1131
  blank();
1132
1132
  console.log(` ${D}Grade every file in a directory in one shot. Pro only.${R}`);
1133
1133
  blank();
1134
- console.log(` ${WH}${B}Pro ($19/mo): unlimited analyses · JSON/HTML export · bulk mode · CI integration${R}`);
1134
+ console.log(` ${WH}${B}Pro ($9/mo): unlimited analyses · JSON/HTML export · bulk mode · CI integration${R}`);
1135
1135
  blank();
1136
- console.log(` ${MG}${B}→ Get Pro ($19/mo, cancel anytime): ${CY}${UPGRADE_LINKS.free}${R}`);
1136
+ console.log(` ${MG}${B}→ Get Pro ($9/mo, cancel anytime): ${CY}${UPGRADE_LINKS.free}${R}`);
1137
1137
  blank();
1138
1138
  console.log(` ${D}After checkout — 2 steps to unlock:${R}`);
1139
1139
  console.log(` ${D} 1. Get your key: ${CY}https://content-grade.onrender.com/my-license${R}`);
@@ -1346,7 +1346,7 @@ function cmdStart() {
1346
1346
  info(` EmailForge — ${url}/email-forge`);
1347
1347
  info(` AudienceDecoder — ${url}/audience`);
1348
1348
  blank();
1349
- info(`Free tier: 5 runs/day. Pro: 50/day ($19/mo) → ${UPGRADE_LINKS.free}`);
1349
+ info(`Free tier: 5 runs/day. Pro: unlimited ($9/mo) → ${UPGRADE_LINKS.free}`);
1350
1350
  info(`Press Ctrl+C to stop`);
1351
1351
  blank();
1352
1352
  openBrowser(url);
@@ -1621,7 +1621,7 @@ function cmdHelp() {
1621
1621
  console.log(` ${B}PRICING${R}`);
1622
1622
  blank();
1623
1623
  console.log(` Free 5 runs/day $0`);
1624
- console.log(` Pro Unlimited analyses $19/mo (cancel anytime)`);
1624
+ console.log(` Pro Unlimited analyses $9/mo (cancel anytime)`);
1625
1625
  console.log(` Business Unlimited analyses $29/mo`);
1626
1626
  console.log(` Team Unlimited analyses $79/mo`);
1627
1627
  blank();
package/dist/landing.html CHANGED
@@ -36,7 +36,7 @@
36
36
  "@type": "Offer",
37
37
  "price": "0",
38
38
  "priceCurrency": "USD",
39
- "description": "Free: 3 analyses per day, reset daily. Pro: $19/mo, unlimited. Business: $49/mo, unlimited. Team: $199/mo, unlimited + shared workspace."
39
+ "description": "Free: 5 runs per day, reset daily. Pro: $9/mo, unlimited. Business: $49/mo, unlimited. Team: $199/mo, unlimited + shared workspace."
40
40
  },
41
41
  "featureList": [
42
42
  "Headline analyzer with framework-based scoring",
@@ -1196,7 +1196,7 @@
1196
1196
  <div class="step">
1197
1197
  <div class="step-num">3</div>
1198
1198
  <h3>Launch the full dashboard</h3>
1199
- <p>Start the web interface to access all 6 tools — HeadlineGrader, PageRoast, AdScorer, ThreadGrader, EmailForge, and AudienceDecoder. Free tier: 3 analyses per day, reset daily.</p>
1199
+ <p>Start the web interface to access all 6 tools — HeadlineGrader, PageRoast, AdScorer, ThreadGrader, EmailForge, and AudienceDecoder. Free tier: 5 analyses per day, reset daily.</p>
1200
1200
  <div class="step-code">npx content-grade start</div>
1201
1201
  </div>
1202
1202
  </div>
@@ -1210,7 +1210,7 @@
1210
1210
  <div class="section-eyebrow">Pricing</div>
1211
1211
  <h2>Stop guessing if your content is good.</h2>
1212
1212
  <p class="pricing-subhead" style="font-size:20px; font-weight:600; color:var(--fg); margin-bottom:8px;">Pick a plan. Grade everything.</p>
1213
- <p class="pricing-lead">3 analyses per day — free. No credit card, no signup, no API key required.</p>
1213
+ <p class="pricing-lead">5 runs per day — free. No credit card, no signup, no API key required.</p>
1214
1214
  </div>
1215
1215
 
1216
1216
  <div class="pricing-grid">
@@ -1220,7 +1220,7 @@
1220
1220
  <div class="plan-period">forever · no signup required</div>
1221
1221
  <a href="https://www.npmjs.com/package/content-grade" class="plan-cta">Install free →</a>
1222
1222
  <ul class="plan-features">
1223
- <li><span class="check">✓</span> <strong>3 analyses per day</strong> — enough to build the habit before you commit</li>
1223
+ <li><span class="check">✓</span> <strong>5 runs per day</strong> — enough to build the habit before you commit</li>
1224
1224
  <li><span class="check">✓</span> Access all 6 tools: HeadlineGrader, PageRoast, AdScorer, ThreadGrader, EmailForge, AudienceDecoder</li>
1225
1225
  <li><span class="check">✓</span> Core scores: Readability, Clarity, SEO Signal, Engagement potential</li>
1226
1226
  <li><span class="check">✓</span> No credit card. No signup. No API key.</li>
@@ -1230,8 +1230,8 @@
1230
1230
  <div class="plan featured">
1231
1231
  <div class="plan-badge">Most popular</div>
1232
1232
  <div class="plan-name">PRO</div>
1233
- <div class="plan-price">$19<span>/mo</span></div>
1234
- <div class="plan-period">Unlimited analyses · billed monthly</div>
1233
+ <div class="plan-price">$9<span>/mo</span></div>
1234
+ <div class="plan-period">Unlimited runs · billed monthly · cancel anytime</div>
1235
1235
  <a href="https://buy.stripe.com/4gM14p87GeCh9vn9ks8k80a" class="plan-cta" target="_blank" rel="noopener">Upgrade to Pro →</a>
1236
1236
  <div style="font-size:13px; color:var(--muted); margin-bottom:12px;">Used by content teams grading 50+ pieces per week.</div>
1237
1237
  <ul class="plan-features">
@@ -1310,7 +1310,7 @@
1310
1310
  <details>
1311
1311
  <summary>Do I need an Anthropic API key or a paid Claude account?</summary>
1312
1312
  <div class="faq-answer">
1313
- No API key required. ContentGrade runs on <strong>Claude CLI</strong> — install it for free from claude.ai/code and log in with a Claude account. A free Claude account is sufficient for the free tier (3 analyses per day, reset daily).<br /><br />
1313
+ No API key required. ContentGrade runs on <strong>Claude CLI</strong> — install it for free from claude.ai/code and log in with a Claude account. A free Claude account is sufficient for the free tier (5 analyses per day, reset daily).<br /><br />
1314
1314
  There's no per-query Anthropic billing. You're not routing calls through the API console or accumulating usage charges. Claude CLI handles authentication locally, which is also why your content never leaves your machine.
1315
1315
  </div>
1316
1316
  </details>
@@ -1356,7 +1356,7 @@
1356
1356
  <details>
1357
1357
  <summary>What counts as an analysis?</summary>
1358
1358
  <div class="faq-answer">
1359
- One run of any tool on any single piece of content. Grading a headline = 1 analysis. Roasting a landing page = 1 analysis. Running <code>--bulk</code> on a folder of 20 posts = 20 analyses. The Free tier gives you 3 per day — Pro and above are unlimited.
1359
+ One run of any tool on any single piece of content. Grading a headline = 1 analysis. Roasting a landing page = 1 analysis. Running <code>--bulk</code> on a folder of 20 posts = 20 analyses. The Free tier gives you 5 per day — Pro and above are unlimited.
1360
1360
  </div>
1361
1361
  </details>
1362
1362
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "content-grade",
3
- "version": "1.0.50",
3
+ "version": "1.0.51",
4
4
  "description": "AI-powered content analysis CLI. Score any blog post, landing page, or ad copy in under 30 seconds — runs on Claude CLI, no API key needed.",
5
5
  "type": "module",
6
6
  "bin": {