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.
- package/bin/content-grade.js +14 -14
- package/dist/landing.html +36 -27
- package/package.json +1 -1
package/bin/content-grade.js
CHANGED
|
@@ -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 $
|
|
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 — $
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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
|
|
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
|
|
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 ($
|
|
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 ($
|
|
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 ($
|
|
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 $
|
|
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>
|
|
1212
|
-
<p class="pricing-
|
|
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>
|
|
1223
|
-
<li><span class="check">✓</span>
|
|
1224
|
-
<li><span class="check">✓</span>
|
|
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">$
|
|
1235
|
-
<div class="plan-period">Unlimited analyses
|
|
1236
|
-
<a href="https://buy.stripe.com/4gM14p87GeCh9vn9ks8k80a" class="plan-cta" target="_blank" rel="noopener">
|
|
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
|
|
1239
|
-
<li><span class="check">✓</span>
|
|
1240
|
-
<li><span class="check">✓</span>
|
|
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">$
|
|
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>
|
|
1256
|
-
<li><span class="check">✓</span>
|
|
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">$
|
|
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>
|
|
1267
|
-
<li><span class="check">✓</span>
|
|
1268
|
-
<li><span class="check">✓</span>
|
|
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
|
|
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