-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathindex.html
More file actions
208 lines (186 loc) · 9.59 KB
/
index.html
File metadata and controls
208 lines (186 loc) · 9.59 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="Developer tools for text analysis, NLP, and data engineering. TextLens API: readability, sentiment, keywords, and SEO scoring in one REST endpoint.">
<title>ckmtools — Small, sharp tools for developers who ship</title>
<meta property="og:type" content="website">
<meta property="og:title" content="ckmtools — Small, sharp tools for developers who ship">
<meta property="og:description" content="Developer tools for text analysis, NLP, and data engineering. TextLens API: readability, sentiment, keywords, and SEO scoring in one REST endpoint.">
<meta property="og:url" content="https://ckmtools.dev/">
<meta property="og:site_name" content="ckmtools">
<meta property="og:image" content="https://ckmtools.dev/assets/og-image.png">
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:title" content="ckmtools — Small, sharp tools for developers who ship">
<meta name="twitter:description" content="Developer tools that do one thing well. Open source npm packages and CLI tools.">
<meta name="twitter:image" content="https://ckmtools.dev/assets/og-image.png">
<link rel="canonical" href="https://ckmtools.dev/">
<meta name="robots" content="index, follow">
<link rel="icon" type="image/svg+xml" href="/favicon.svg">
<link rel="alternate" type="application/rss+xml" title="ckmtools Blog" href="https://ckmtools.dev/blog/feed.xml">
<link rel="stylesheet" href="/style.css">
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Organization",
"name": "ckmtools",
"url": "https://ckmtools.dev",
"logo": "https://ckmtools.dev/assets/logos/avatar-512.png",
"description": "Small, sharp tools for developers who ship.",
"sameAs": [
"https://github.com/ckmtools",
"https://www.npmjs.com/~ckmtools",
"https://dev.to/ckmtools"
]
}
</script>
</head>
<body>
<a href="#main" class="skip-link">Skip to content</a>
<nav class="site-nav" aria-label="Main navigation">
<div class="nav-inner">
<a href="/" class="nav-brand" aria-label="ckmtools home">
<svg width="32" height="32" viewBox="0 0 512 512" aria-hidden="true">
<path d="M 190 155 L 105 256 L 190 357" stroke="#00E5A0" stroke-width="38" stroke-linecap="round" stroke-linejoin="round" fill="none"/>
<path d="M 322 155 L 407 256 L 322 357" stroke="#00E5A0" stroke-width="38" stroke-linecap="round" stroke-linejoin="round" fill="none"/>
<path d="M 256 218 L 294 256 L 256 294 L 218 256 Z" fill="#00E5A0"/>
</svg>
ckmtools
</a>
<div class="nav-links">
<a href="/blog/">Blog</a>
<a href="https://github.com/ckmtools" rel="noopener" aria-label="ckmtools on GitHub">GitHub</a>
<a href="https://www.npmjs.com/~ckmtools" rel="noopener" aria-label="ckmtools on npm">npm</a>
</div>
</div>
</nav>
<main id="main">
<section class="hero">
<h1>Small, sharp tools for developers who ship.</h1>
<p class="tagline">Text analysis, NLP, and developer utilities. REST APIs and npm packages. Zero dependencies. Works out of the box.</p>
</section>
<section class="products" aria-label="Products">
<h2>Products</h2>
<article class="product-card product-card--featured">
<div class="spotlight-badge">★ Featured at DataTalks.Club OSS Spotlight</div>
<h2><a href="/api/">TextLens API</a></h2>
<p class="product-description">Hosted text analysis API. Readability, sentiment, keywords, and SEO scoring via a single REST endpoint. Works in Python, Ruby, Go, PHP — any language.</p>
<pre><code><span class="install-cmd"><span class="prompt">$</span> curl -X POST https://api.ckmtools.dev/v1/analyze \</span>
-H "X-API-Key: your_key" \
-d '{"text": "Your text here..."}'</code></pre>
<ul class="features" aria-label="Features">
<li>Works in Python, Ruby, Go, PHP</li>
<li>8 readability formulas</li>
<li>Sentiment + keyword analysis</li>
<li>SEO scoring</li>
<li>Free tier (1K req/mo)</li>
<li>Sub-50ms response times</li>
</ul>
<div class="link-row">
<a href="/api/" class="btn-primary">Get Early Access</a>
<a href="/api/">Docs & Pricing</a>
</div>
</article>
<article class="product-card">
<h2><a href="/textlens/">textlens</a></h2>
<div class="badge-row">
<img src="https://img.shields.io/npm/dw/textlens?color=00E5A0&label=downloads" alt="npm weekly downloads" loading="lazy">
<img src="https://img.shields.io/github/stars/ckmtools/textlens?color=00E5A0" alt="GitHub stars" loading="lazy">
</div>
<p class="product-description">Zero-dependency text analysis and readability toolkit.</p>
<pre><code><span class="install-cmd"><span class="prompt">$</span> npm install textlens</span></code></pre>
<pre><code>import { analyze } from 'textlens';
const result = analyze('Your text here...');
console.log(result.readability.consensusGrade);</code></pre>
<ul class="features" aria-label="Features">
<li>8 readability formulas</li>
<li>Sentiment analysis</li>
<li>Keyword extraction</li>
<li>SEO scoring</li>
<li>CLI included</li>
<li>Zero dependencies</li>
</ul>
<div class="link-row">
<a href="https://www.npmjs.com/package/textlens" rel="noopener">npm</a>
<a href="https://github.com/ckmtools/textlens" rel="noopener">GitHub</a>
<a href="https://dev.to/ckmtools" rel="noopener">Article</a>
<a href="https://buy.stripe.com/4gMbJ16rM3MJ4HZ4hGf7i00" rel="noopener">Support</a>
</div>
</article>
<article class="product-card">
<h2><a href="/envscan/">envscan</a></h2>
<p class="product-description">CLI tool that scans your Node.js source code to auto-discover every process.env reference, generates .env.example, and validates all vars before deploy.</p>
<pre><code><span class="install-cmd"><span class="prompt">$</span> envscan scan</span>
Found 8 env vars across 12 files
Validation: 7/8 set. Missing: JWT_SECRET</code></pre>
<ul class="features" aria-label="Features">
<li>Auto-discovers from source code</li>
<li>Generates .env.example</li>
<li>Validates before deploy</li>
<li>GitHub Action CI tier</li>
<li>Zero config</li>
</ul>
<div class="link-row">
<a href="/envscan/">Learn more</a>
<a href="/envscan/" class="btn-secondary">Join Waitlist</a>
</div>
</article>
<article class="product-card">
<h2><a href="/prosescore/">ProseScore</a></h2>
<div class="badge-row">
<img src="https://img.shields.io/github/stars/ckmtools/prosescore?color=00E5A0" alt="GitHub stars" loading="lazy">
</div>
<p class="product-description">Web-based readability and content analysis. Runs entirely in your browser.</p>
<pre><code>Paste text, get readability grades instantly.</code></pre>
<ul class="features" aria-label="Features">
<li>8 readability formulas</li>
<li>Sentiment analysis</li>
<li>Keyword extraction</li>
<li>SEO scoring</li>
<li>Privacy-first (runs offline)</li>
<li>Free + Pro tiers</li>
</ul>
<div class="link-row">
<a href="https://prosescore.ckmtools.dev/" rel="noopener">Try it</a>
<a href="https://github.com/ckmtools/prosescore" rel="noopener">GitHub</a>
<a href="/prosescore/">Details</a>
</div>
</article>
</section>
<section class="articles" aria-label="Latest articles">
<h2>Latest Articles</h2>
<div class="article-grid">
<a href="/blog/sentiment-analysis-nodejs.html" class="article-card">
<h3>Sentiment Analysis in Node.js Without External APIs</h3>
<p>Build sentiment analysis from scratch using textlens — no API keys needed.</p>
</a>
<a href="/blog/prosescore-hemingway-alternative.html" class="article-card">
<h3>ProseScore: A Free Hemingway Alternative</h3>
<p>A privacy-first readability tool that runs in your browser. No signups, no limits.</p>
</a>
<a href="/blog/readability-formula-guide.html" class="article-card">
<h3>The Complete Guide to Readability Formulas</h3>
<p>How Flesch-Kincaid, Gunning Fog, and 6 other formulas score your writing.</p>
</a>
<a href="/blog/content-quality-checker-typescript.html" class="article-card">
<h3>Build a Content Quality Checker in TypeScript</h3>
<p>Combine readability, sentiment, and SEO scoring into one analysis pipeline.</p>
</a>
<a href="/blog/how-to-score-readability.html" class="article-card">
<h3>How to Score Readability in JavaScript</h3>
<p>Add readability scoring to any Node.js project in under 5 minutes.</p>
</a>
<a href="/blog/readability-seo-typescript.html" class="article-card">
<h3>Readability Meets SEO: A TypeScript Approach</h3>
<p>Use textlens to optimize content for both readers and search engines.</p>
</a>
</div>
<p class="section-more"><a href="/blog/">View all articles →</a></p>
</section>
</main>
<footer class="site-footer">
<p>Built by <a href="https://github.com/ckmtools" rel="noopener">ckmtools</a> — 2026</p>
</footer>
</body>
</html>