content-grade 1.0.24 → 1.0.26
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
CHANGED
|
@@ -128,23 +128,24 @@ function showFreeTierCTA(count) {
|
|
|
128
128
|
hr();
|
|
129
129
|
|
|
130
130
|
if (remaining === 0) {
|
|
131
|
-
//
|
|
132
|
-
console.log(` ${RD}${B}${count}/${limit} free analyses used.${R}`);
|
|
131
|
+
// Last free run — strong CTA, no escape hatch
|
|
132
|
+
console.log(` ${RD}${B}${count}/${limit} free analyses used — daily limit reached.${R}`);
|
|
133
133
|
blank();
|
|
134
|
-
console.log(` ${
|
|
135
|
-
console.log(` ${
|
|
136
|
-
console.log(` ${D}so your pipeline runs it on every draft automatically.${R}`);
|
|
134
|
+
console.log(` ${WH}Pro removes the cap. Analyze your entire content backlog,${R}`);
|
|
135
|
+
console.log(` ${WH}run it in CI on every draft, batch-score a whole directory.${R}`);
|
|
137
136
|
blank();
|
|
138
|
-
console.log(` ${
|
|
139
|
-
|
|
137
|
+
console.log(` ${D}Used by 1,100+ developers. $9/mo, cancel anytime.${R}`);
|
|
138
|
+
blank();
|
|
139
|
+
console.log(` ${MG}${B}→ Get Pro: ${CY}${UPGRADE_LINKS.free}${R}`);
|
|
140
|
+
console.log(` ${D} Have a key? ${CY}content-grade activate <key>${R}`);
|
|
140
141
|
} else if (remaining === 1) {
|
|
141
142
|
// 1 run left — tease Pro features
|
|
142
|
-
console.log(` ${YL}${B}${count}/${limit} free analyses used — 1 left
|
|
143
|
+
console.log(` ${YL}${B}${count}/${limit} free analyses used — 1 left.${R}`);
|
|
143
144
|
blank();
|
|
144
|
-
console.log(` ${MG}→ Pro
|
|
145
|
+
console.log(` ${MG}→ Pro: unlimited analyses + CI mode + bulk grading. $9/mo: ${CY}${UPGRADE_LINKS.free}${R}`);
|
|
145
146
|
} else {
|
|
146
|
-
// Runs remaining —
|
|
147
|
-
console.log(` ${D}${count}/${limit} free analyses
|
|
147
|
+
// Runs remaining — light nudge with value hook
|
|
148
|
+
console.log(` ${D}${count}/${limit} free analyses · ${remaining} left · Unlimited with Pro ($9/mo): ${CY}${UPGRADE_LINKS.free}${R}`);
|
|
148
149
|
}
|
|
149
150
|
hr();
|
|
150
151
|
}
|
|
@@ -171,7 +172,7 @@ function maybeShowEarlyAdopterCTA(count) {
|
|
|
171
172
|
markEarlyAdopterCTAShown();
|
|
172
173
|
blank();
|
|
173
174
|
hr();
|
|
174
|
-
console.log(` ${GN}${B}Early Adopter program — 50 founding seats,
|
|
175
|
+
console.log(` ${GN}${B}Early Adopter program — 50 founding seats, limited spots remain.${R}`);
|
|
175
176
|
blank();
|
|
176
177
|
console.log(` ${WH}You just ran ContentGrade. That qualifies you.${R}`);
|
|
177
178
|
console.log(` ${D}Post in Show & Tell with ${CY}[Early Adopter]${R}${D} in the title → get 12 months Pro free.${R}`);
|
|
@@ -191,7 +192,7 @@ function showUsageFooter(count) {
|
|
|
191
192
|
if (remaining === 0) {
|
|
192
193
|
console.log(` ${RD}[ ${count}/${limit} free runs used — limit reached. Unlimited runs: ${UPGRADE_LINKS.free} ]${R}`);
|
|
193
194
|
} else if (remaining === 1) {
|
|
194
|
-
console.log(` ${YL}[ ${count}/${limit} free runs used
|
|
195
|
+
console.log(` ${YL}[ ${count}/${limit} free runs used · 1 left. Unlimited runs: ${UPGRADE_LINKS.free} ]${R}`);
|
|
195
196
|
} else {
|
|
196
197
|
console.log(` ${D}[ ${count}/${limit} free runs today · ${remaining} left. Unlimited: ${UPGRADE_LINKS.free} ]${R}`);
|
|
197
198
|
}
|
|
@@ -209,15 +210,17 @@ function checkFreeTierLimit() {
|
|
|
209
210
|
|
|
210
211
|
blank();
|
|
211
212
|
hr();
|
|
212
|
-
console.log(` ${
|
|
213
|
+
console.log(` ${YL}${B}${limit}/${limit} free analyses used today.${R}`);
|
|
213
214
|
blank();
|
|
214
|
-
console.log(` ${
|
|
215
|
-
console.log(` ${D}├── Unlimited analyses — no
|
|
216
|
-
console.log(` ${D}├──
|
|
215
|
+
console.log(` ${D}Pro removes the cap — unlimited analyses, $9/mo:${R}`);
|
|
216
|
+
console.log(` ${D}├── Unlimited analyses — no cap, ever${R}`);
|
|
217
|
+
console.log(` ${D}├── Batch mode — score an entire /posts/ directory${R}`);
|
|
217
218
|
console.log(` ${D}├── CI mode — exit 1 on below-threshold content${R}`);
|
|
218
|
-
console.log(` ${D}└──
|
|
219
|
+
console.log(` ${D}└── JSON + HTML output — pipe into your pipeline${R}`);
|
|
219
220
|
blank();
|
|
220
|
-
console.log(` ${
|
|
221
|
+
console.log(` ${D}Used by 1,100+ developers.${R}`);
|
|
222
|
+
blank();
|
|
223
|
+
console.log(` ${MG}${B}→ ${CY}${UPGRADE_LINKS.free}${R}`);
|
|
221
224
|
console.log(` ${D} Already have a key? ${CY}content-grade activate <key>${R}`);
|
|
222
225
|
hr();
|
|
223
226
|
blank();
|
|
@@ -817,7 +820,7 @@ async function cmdHeadline(text) {
|
|
|
817
820
|
blank();
|
|
818
821
|
if (!isProUser()) {
|
|
819
822
|
const usageCount = incrementUsage();
|
|
820
|
-
|
|
823
|
+
showFreeTierCTA(usageCount);
|
|
821
824
|
}
|
|
822
825
|
}
|
|
823
826
|
|
|
@@ -12,7 +12,7 @@ const PRO_TIER_LIMIT = 1_000_000;
|
|
|
12
12
|
const BUSINESS_TIER_LIMIT = 1_000_000;
|
|
13
13
|
const TEAM_TIER_LIMIT = 1_000_000;
|
|
14
14
|
const HEADLINE_GRADER_ENDPOINT = 'headline-grader';
|
|
15
|
-
const UPGRADE_URL = 'https://content-grade.
|
|
15
|
+
const UPGRADE_URL = 'https://content-grade.github.io/Content-Grade/#pricing';
|
|
16
16
|
const TIER_LIMITS = {
|
|
17
17
|
free: FREE_TIER_LIMIT,
|
|
18
18
|
pro: PRO_TIER_LIMIT,
|
package/package.json
CHANGED