content-grade 1.0.47 → 1.0.48

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,7 +98,7 @@ 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 $9/mo — direct checkout
101
+ free: 'https://buy.stripe.com/4gM14p87GeCh9vn9ks8k80a', // Pro $19/mo — direct checkout
102
102
  pro: 'https://buy.stripe.com/bJefZjafO2Tz36Z2W48k80b', // Business $29/mo
103
103
  business: 'https://buy.stripe.com/cNiaEZfA8cu9bDv4088k80c', // Team $79/mo
104
104
  };
@@ -119,7 +119,7 @@ const TIER_LIMITS = {
119
119
 
120
120
  function getUpgradeMessage() {
121
121
  const tier = getLicenseTier();
122
- if (tier === 'free') return `Unlimited analyses with Pro — $9/mo → ${UPGRADE_LINKS.free}`;
122
+ if (tier === 'free') return `Unlimited analyses with Pro — $19/mo → ${UPGRADE_LINKS.free}`;
123
123
  if (tier === 'pro') return `Upgrade to Business — priority support, $29/mo → ${UPGRADE_LINKS.pro}`;
124
124
  if (tier === 'business') return `Upgrade to Team — team seats, $79/mo → ${UPGRADE_LINKS.business}`;
125
125
  return '';
@@ -142,13 +142,13 @@ function showFreeTierCTA(count) {
142
142
  // Last run of the day — power user nudge
143
143
  console.log(` ${YL}${B}${count}/${limit} — that's all your free runs for today.${R}`);
144
144
  blank();
145
- console.log(` ${WH} Pro: 50 analyses/day · Business: unlimited · $9/mo, cancel anytime${R}`);
145
+ console.log(` ${WH} Pro: unlimited analyses · JSON/HTML export · bulk mode · $19/mo, cancel anytime${R}`);
146
146
  console.log(` ${MG}${B}→ ${UPGRADE_LINKS.free}${R}`);
147
147
  blank();
148
148
  console.log(` ${D}Or come back tomorrow for ${limit} more free runs.${R}`);
149
149
  } else {
150
150
  // Runs remaining — compact single-line footer
151
- console.log(` ${D}[ ${count}/${limit} free runs today · ${remaining} remaining · Pro: 50/day ($9/mo) → ${UPGRADE_LINKS.free} ]${R}`);
151
+ console.log(` ${D}[ ${count}/${limit} free runs today · ${remaining} remaining · Pro: unlimited ($19/mo) → ${UPGRADE_LINKS.free} ]${R}`);
152
152
  }
153
153
  hr();
154
154
  maybeShowFeedbackCTA(count);
@@ -226,11 +226,11 @@ function showUsageFooter(count) {
226
226
  const remaining = Math.max(0, limit - count);
227
227
  blank();
228
228
  if (remaining === 0) {
229
- console.log(` ${RD}[ ${limit}/${limit} free analyses used today · Pro: 50/day, Business: unlimited — $9/mo → ${UPGRADE_LINKS.free} ]${R}`);
229
+ console.log(` ${RD}[ ${limit}/${limit} free analyses used today · Pro: unlimited analyses, JSON/HTML export, bulk mode — $19/mo → ${UPGRADE_LINKS.free} ]${R}`);
230
230
  } else if (remaining <= 1) {
231
- console.log(` ${YL}[ ${remaining} free analysis remaining today · Pro: 50/day, Business: unlimited — $9/mo → ${UPGRADE_LINKS.free} ]${R}`);
231
+ console.log(` ${YL}[ ${remaining} free analysis remaining today · Pro: unlimited analyses, JSON/HTML export, bulk mode — $19/mo → ${UPGRADE_LINKS.free} ]${R}`);
232
232
  } else {
233
- console.log(` ${D}[ ${count}/${limit} free analyses today · ${remaining} remaining · Pro: 50/day ($9/mo) → ${UPGRADE_LINKS.free} ]${R}`);
233
+ console.log(` ${D}[ ${count}/${limit} free analyses today · ${remaining} remaining · Pro: unlimited ($19/mo) → ${UPGRADE_LINKS.free} ]${R}`);
234
234
  }
235
235
  maybeShowEarlyAdopterCTA(count);
236
236
  maybeShowFeedbackCTA(count);
@@ -263,7 +263,7 @@ function checkFreeTierLimit() {
263
263
 
264
264
  blank();
265
265
  console.log(` ${RD}${B}${limit}/${limit} free analyses used today.${R}`);
266
- console.log(` ${WH}Pro: 50/day · Business: unlimited — $9/mo, cancel anytime${R}`);
266
+ console.log(` ${WH}Pro: unlimited analyses · JSON/HTML export · bulk mode — $19/mo, cancel anytime${R}`);
267
267
  console.log(` ${MG}${B}→ ${UPGRADE_LINKS.free}${R}`);
268
268
  console.log(` ${D}After purchase: content-grade activate <key>${R}`);
269
269
  blank();
@@ -945,7 +945,7 @@ async function cmdInit() {
945
945
  console.log(` ${CY}content-grade start${R}`);
946
946
  blank();
947
947
  }
948
- console.log(` ${WH}Pro: unlimited analyses + batch mode + CI integration — $9/mo, cancel anytime${R}`);
948
+ console.log(` ${WH}Pro: unlimited analyses · JSON/HTML export · bulk mode · CI integration — $19/mo, cancel anytime${R}`);
949
949
  console.log(` ${MG}→ Get Pro: ${CY}${UPGRADE_LINKS.free}${R}`);
950
950
  console.log(` ${D}After checkout: content-grade activate <your-key>${R}`);
951
951
  blank();
@@ -977,7 +977,7 @@ async function cmdActivate() {
977
977
  return;
978
978
  }
979
979
 
980
- console.log(` ${D}Pro unlocks unlimited analyses + batch mode for $9/mo:${R}`);
980
+ console.log(` ${D}Pro unlocks unlimited analyses, JSON/HTML export, and bulk mode for $19/mo:${R}`);
981
981
  blank();
982
982
  console.log(` ${MG}${B}→ Get Pro: ${CY}${UPGRADE_LINKS.free}${R}`);
983
983
  blank();
@@ -1115,9 +1115,9 @@ async function cmdBatch(dirPath) {
1115
1115
  blank();
1116
1116
  console.log(` ${D}Grade every file in a directory in one shot. Pro only.${R}`);
1117
1117
  blank();
1118
- console.log(` ${WH}${B}Pro ($9/mo): unlimited analyses + batch mode + CI integration${R}`);
1118
+ console.log(` ${WH}${B}Pro ($19/mo): unlimited analyses · JSON/HTML export · bulk mode · CI integration${R}`);
1119
1119
  blank();
1120
- console.log(` ${MG}${B}→ Get Pro ($9/mo, cancel anytime): ${CY}${UPGRADE_LINKS.free}${R}`);
1120
+ console.log(` ${MG}${B}→ Get Pro ($19/mo, cancel anytime): ${CY}${UPGRADE_LINKS.free}${R}`);
1121
1121
  blank();
1122
1122
  console.log(` ${D}After checkout — 2 steps to unlock:${R}`);
1123
1123
  console.log(` ${D} 1. Get your key: ${CY}https://content-grade.onrender.com/my-license${R}`);
@@ -1330,7 +1330,7 @@ function cmdStart() {
1330
1330
  info(` EmailForge — ${url}/email-forge`);
1331
1331
  info(` AudienceDecoder — ${url}/audience`);
1332
1332
  blank();
1333
- info(`Free tier: 15 analyses total. Unlimited with Pro ($9/mo) → ${UPGRADE_LINKS.free}`);
1333
+ info(`Free tier: 15 analyses total. Unlimited with Pro ($19/mo) → ${UPGRADE_LINKS.free}`);
1334
1334
  info(`Press Ctrl+C to stop`);
1335
1335
  blank();
1336
1336
  openBrowser(url);
@@ -1605,7 +1605,7 @@ function cmdHelp() {
1605
1605
  console.log(` ${B}PRICING${R}`);
1606
1606
  blank();
1607
1607
  console.log(` Free 15 analyses total $0`);
1608
- console.log(` Pro Unlimited analyses $9/mo (cancel anytime)`);
1608
+ console.log(` Pro Unlimited analyses $19/mo (cancel anytime)`);
1609
1609
  console.log(` Business Unlimited analyses $29/mo`);
1610
1610
  console.log(` Team Unlimited analyses $79/mo`);
1611
1611
  blank();
package/dist/landing.html CHANGED
@@ -1208,8 +1208,9 @@
1208
1208
  <div class="container">
1209
1209
  <div class="pricing-header">
1210
1210
  <div class="section-eyebrow">Pricing</div>
1211
- <h2>Start free. Upgrade when it pays for itself.</h2>
1212
- <p class="pricing-lead">15 free analyses to start. No credit card, no signup, no API key required.</p>
1211
+ <h2>Stop guessing if your content is good.</h2>
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
1214
  </div>
1214
1215
 
1215
1216
  <div class="pricing-grid">
@@ -1219,54 +1220,48 @@
1219
1220
  <div class="plan-period">forever · no signup required</div>
1220
1221
  <a href="https://www.npmjs.com/package/content-grade" class="plan-cta">Install free →</a>
1221
1222
  <ul class="plan-features">
1222
- <li><span class="check">✓</span> <strong>15 analyses total</strong></li>
1223
- <li><span class="check">✓</span> All 6 tools (CLI + dashboard)</li>
1224
- <li><span class="check">✓</span> Full framework-based scoring</li>
1225
- <li><span class="check">✓</span> AI rewrites with technique labels</li>
1226
- <li><span class="check">✓</span> Per-dimension score breakdown</li>
1227
- <li><span class="check">✓</span> HeadlineGrader SERP preview</li>
1223
+ <li><span class="check">✓</span> <strong>3 analyses per day</strong> — enough to build the habit</li>
1224
+ <li><span class="check">✓</span> Access all 6 tools: HeadlineGrader, PageRoast, AdScorer, ThreadGrader, EmailForge, AudienceDecoder</li>
1225
+ <li><span class="check">✓</span> Core scores: Readability, Clarity, SEO Signal, Engagement potential</li>
1228
1226
  </ul>
1229
1227
  </div>
1230
1228
 
1231
1229
  <div class="plan featured">
1232
1230
  <div class="plan-badge">Most popular</div>
1233
1231
  <div class="plan-name">PRO</div>
1234
- <div class="plan-price">$9<span>/mo</span></div>
1235
- <div class="plan-period">Unlimited analyses/day · billed monthly</div>
1236
- <a href="https://buy.stripe.com/4gM14p87GeCh9vn9ks8k80a" class="plan-cta" target="_blank" rel="noopener">Get Pro →</a>
1232
+ <div class="plan-price">$19<span>/mo</span></div>
1233
+ <div class="plan-period">Unlimited analyses · billed monthly</div>
1234
+ <a href="https://buy.stripe.com/4gM14p87GeCh9vn9ks8k80a" class="plan-cta" target="_blank" rel="noopener">Upgrade to Pro →</a>
1235
+ <div style="font-size:13px; color:var(--muted); margin-bottom:12px;">Used by content teams grading 50+ pieces per week.</div>
1237
1236
  <ul class="plan-features">
1238
- <li><span class="check">✓</span> <strong>Unlimited analyses/day</strong> — no daily cap</li>
1239
- <li><span class="check">✓</span> All 6 tools (CLI + dashboard)</li>
1240
- <li><span class="check">✓</span> License key for CLI activation</li>
1241
- <li><span class="check">✓</span> Batch mode — analyze whole directories</li>
1242
- <li><span class="check">✓</span> Priority email support</li>
1243
- <li><span class="check">✓</span> $0.45/analysis — less than a coffee per day</li>
1237
+ <li><span class="check">✓</span> <strong>Unlimited analyses</strong> — no daily cap, no throttle</li>
1238
+ <li><span class="check">✓</span> Export results as JSON or HTML — pipe into dashboards, Notion, or CI</li>
1239
+ <li><span class="check">✓</span> <code>--bulk</code> mode: grade entire folders, get a ranked quality report</li>
1244
1240
  </ul>
1245
1241
  </div>
1246
1242
 
1247
1243
  <div class="plan">
1248
1244
  <div class="plan-name">BUSINESS</div>
1249
- <div class="plan-price">$29<span>/mo</span></div>
1245
+ <div class="plan-price">$49<span>/mo</span></div>
1250
1246
  <div class="plan-period">Unlimited analyses · billed monthly</div>
1251
1247
  <a href="https://buy.stripe.com/bJefZjafO2Tz36Z2W48k80b" class="plan-cta" target="_blank" rel="noopener">Get Business →</a>
1252
1248
  <ul class="plan-features">
1253
- <li><span class="check">✓</span> <strong>Unlimited analyses</strong></li>
1254
1249
  <li><span class="check">✓</span> Everything in Pro</li>
1255
- <li><span class="check">✓</span> A/B compare with conversion predictions</li>
1256
- <li><span class="check">✓</span> Best value per analysis ($0.29/analysis)</li>
1250
+ <li><span class="check">✓</span> CI mode with exit codes — fail builds when content quality drops</li>
1251
+ <li><span class="check">✓</span> <code>--compare</code> flag: score a rewrite against the original</li>
1252
+ <li><span class="check">✓</span> REST API access for custom CMS or analytics integrations</li>
1257
1253
  </ul>
1258
1254
  </div>
1259
1255
 
1260
1256
  <div class="plan">
1261
1257
  <div class="plan-name">TEAM</div>
1262
- <div class="plan-price">$79<span>/mo</span></div>
1258
+ <div class="plan-price">$199<span>/mo</span></div>
1263
1259
  <div class="plan-period">Unlimited analyses · billed monthly</div>
1264
1260
  <a href="https://buy.stripe.com/cNiaEZfA8cu9bDv4088k80c" class="plan-cta" target="_blank" rel="noopener">Get Team →</a>
1265
1261
  <ul class="plan-features">
1266
- <li><span class="check">✓</span> <strong>Unlimited analyses</strong></li>
1267
- <li><span class="check">✓</span> Everything in Business</li>
1268
- <li><span class="check">✓</span> Shared team workspace</li>
1269
- <li><span class="check">✓</span> Dedicated support + SLA</li>
1262
+ <li><span class="check">✓</span> Everything in Business, up to 10 seats under one license key</li>
1263
+ <li><span class="check">✓</span> Priority support with 24-hour response SLA</li>
1264
+ <li><span class="check">✓</span> Early access to new tools before public release</li>
1270
1265
  </ul>
1271
1266
  </div>
1272
1267
  </div>
@@ -1334,7 +1329,21 @@
1334
1329
  <summary>Can I use ContentGrade for client work at an agency?</summary>
1335
1330
  <div class="faq-answer">
1336
1331
  Yes, and this is a primary use case. Because ContentGrade runs locally via Claude CLI, client copy never leaves your machine. There's no SaaS terms of service to worry about, no vendor data retention, and no risk of your client's unreleased campaign copy appearing in someone else's training data.<br /><br />
1337
- Pro tier includes higher daily limits, and Team tier includes shared workspace features — share analyses and scoring history across your team without routing content through any third-party service.
1332
+ Pro tier includes unlimited analyses, and Team tier includes shared workspace features — share analyses and scoring history across your team without routing content through any third-party service.
1333
+ </div>
1334
+ </details>
1335
+
1336
+ <details>
1337
+ <summary>Can I cancel anytime?</summary>
1338
+ <div class="faq-answer">
1339
+ Yes. Cancel from your account dashboard — takes 10 seconds. No retention flow, no questions, no email chains. Your subscription stops at the end of the billing period.
1340
+ </div>
1341
+ </details>
1342
+
1343
+ <details>
1344
+ <summary>What counts as an analysis?</summary>
1345
+ <div class="faq-answer">
1346
+ 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.
1338
1347
  </div>
1339
1348
  </details>
1340
1349
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "content-grade",
3
- "version": "1.0.47",
3
+ "version": "1.0.48",
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": {