tutorialgetting-started· 2026-04-20· 5 min read

CheckApp Tutorial — Your First AI Content Check in 5 Minutes

By the end of this post you'll have run CheckApp on an article and read the report. Total time: 5 minutes. Total cost: under 10 cents.

No signup. No gate. Install, configure one API key, run. That's it.

What you'll need

  • Node 20+ (check: node --version)
  • A terminal
  • One API key — Exa Search for fact-check (free trial tier available), or skip fact-check entirely and start with LanguageTool (free, no key) + the offline SEO skill
  • A .md or .txt file you want to check (or use a public Google Doc URL)

That's the whole list. You don't need to configure all 12 skills to run your first check. Start with one.

Step 1: Install

npm install -g checkapp

One command. CheckApp ships as a global CLI with a full web dashboard built in. You'll do most work in the dashboard — the CLI is mostly there for CI / automation. After install, checkapp --version should return 1.2.0.

Step 2: Open the dashboard

checkapp --ui

That starts a local web server and opens the dashboard at http://localhost:3000 in your browser. This is the primary UI — Run Check, Reports history, Skills management, Settings (providers + keys), Contexts (brand voice, briefs), Cost estimates. Leave it running; everything below uses it.

CheckApp dashboard home — stat cards for total checks, average score, total cost, and checks this month. Verdict distribution bar. API cost chart over the last 7 days. Recent checks table listing each article with its verdict and cost.

Step 3: Configure providers

In the dashboard, click Settings in the left sidebar. The Providers page lists all 12 skills with their available providers — free tiers are badged so you can see at a glance what won't cost anything.

Settings → Providers page — per-skill provider picker. Grammar shows LanguageTool managed + self-hosted (both free tier), Sapling, and LLM fallback. Academic Citations shows Semantic Scholar (free). Self-Plagiarism shows three backends. Each provider has a 'key required' or 'free tier' badge.

(If you prefer the terminal, checkapp --setup walks through the same options in a wizard.)

The full catalog of skills and providers:

SkillWhat it checksFree optionPaid option
Grammarspelling, grammar, style, offset-based rewritesLanguageToolSapling
SEOkeyword density, readability, headingsOffline (built-in)
Fact-checkreal sources for factual claimsExa Search ($0.007/claim), Exa Deep Reasoning ($0.025/claim), Parallel Task
Plagiarismcopied passagesCopyscape, Originality.ai
AI detectionAI-generated content flagCopyscape, Originality.ai
Self-plagiarismoverlap with your own past articlesUpstash Vector free tierCloudflare Vectorize, Pinecone
Tonevoice alignment to your brand docClaude, MiniMax, OpenRouter
Legalhealth / FDA / GDPR riskClaude, MiniMax, OpenRouter
Summarykey pointsClaude, MiniMax, OpenRouter
Briefcoverage of a project briefClaude, MiniMax, OpenRouter
Purposeintent driftClaude, MiniMax, OpenRouter
AcademicSemantic Scholar citations for scientific claimsFree, no key

Twelve skills, six providers that each run for free. You control the cost by which paid providers you add — that's the BYOK promise.

Fastest zero-cost path for your first run:

  • Grammar → LanguageTool (free)
  • SEO → Offline (free)
  • Academic → Semantic Scholar (free, no key)
  • Everything else → press Enter to skip. A skipped verdict is not a failure — it just means the skill didn't run because you didn't configure it. You can add providers later. This is the normal state for most of the 12 skills on a first run.

The config is saved to ~/.checkapp/config.json. You can edit it directly or re-run --setup any time.

Step 4: Run your first check

checkapp article.md

Replace article.md with your file. CheckApp accepts Markdown, plain text, and Google Doc URLs (checkapp https://docs.google.com/...).

The check runs in under 30 seconds for a typical 800-word article. Output prints to the terminal as skills complete.

Here's what the output looks like:

CheckApp v1.2.0 — article.md (843 words)

  grammar        warn    8 findings
  seo            pass    keyword density 1.4%, readability 68
  fact-check     skipped (no provider configured)
  tone           skipped (no provider configured)
  plagiarism     skipped (no provider configured)
  ...

Verdict: WARN
Estimated cost this run: $0.00

Skills you didn't configure show as skipped. That's expected. It means the skill didn't run, not that your article passed.

Step 5: Read the report

After the summary, CheckApp prints findings for each non-passing skill. For grammar it looks like this:

grammar — WARN — 8 findings

  [1] offset 142–158 — "utilise" → "utilize" (US spelling)
  [2] offset 203–241 — passive voice: "was written by" → "wrote"
  [3] offset 388–412 — double space before "and"
  ...

Each finding has:

  • Offset — the exact character range in your file where the issue is
  • What it found — the original text
  • Rewrite — a suggested fix, anchored to that offset

These are not find-and-replace suggestions. They're offset-based splices, applied in descending order. If you have 8 fixes in one sentence, they don't drift and corrupt each other.

For fact-check findings (if you enabled it), each finding also includes the claim, a verdict, real source URLs, and a confidence score. Here's a real example:

fact-check — WARN — 1 finding

  [1] offset 518–578 — Claim: "the average B2B buyer engages with 13 pieces of content before purchasing"
       Verdict: insufficient_evidence
       Confidence: 0.31
       Sources:
         • gartner.com/en/doc/b2b-buying-journey  (relevance 0.68)
         • demandgen.com/2024-content-report       (relevance 0.52)
       Note: 13-pieces figure not found in top sources; closest reference cites 6–8.

The URLs are live. Open them. The relevance scores come from the retrieval provider, not an LLM. The verdict comes from an LLM reading those real pages — not recalling facts from training. When the sources don't support the claim, you see insufficient_evidence, not a faked pass.

Understanding the verdicts

Every skill returns one of four verdicts:

VerdictMeaning
passNo issues found
warnIssues found, but not blocking
failBlocking issues — this article has a real problem
skippedSkill not configured — not a failure, just not running

The overall article verdict is the worst verdict across all configured skills. If grammar is warn and SEO is pass, the article verdict is warn.

skipped is not a problem. It means you haven't configured that skill yet. A full configuration with all 12 skills enabled costs $0.05–$0.25 per article depending on your provider choices. Start with the free skills, add paid ones when you're ready.

Step 6: Back to the dashboard — history, drill-downs, reruns

Open the dashboard at localhost:3000 (it's still running from Step 2). The check you just ran is the top row in Reports — click it to see the full breakdown with clickable findings.

A CheckApp report detail page — overall score 79/100 PASS for 'fintech-explainer-ach-vs-wire.md'. 12 skill cards below showing per-skill scores and verdicts. Fact Check scored 92 with two 'claim verified' findings each with a 'View evidence' button.

The dashboard keeps history of every check. Click any past report to review findings. Click View evidence on a fact-check finding to see the actual source URLs with relevance scores — not LLM memory, real pages.

What to try next

Enable more skills. Grammar and SEO are free. The highest-signal paid skill for most writers is fact-check — add an Exa API key (Exa Search at ~$0.007/claim, Exa Deep Reasoning at ~$0.025/claim for deeper retrieval, or Parallel Task for multi-hop research-grade reasoning). Both Exa and Parallel have free-trial tiers.

Upload a tone guide. Go to Settings → Context, upload your brand voice document, then enable the Tone skill. On your next check, CheckApp compares the article against your voice guide. Costs about $0.002 per run with MiniMax.

Run it on your last five articles. Not for the findings — for the patterns. Most writers have one or two recurring issues (passive voice, unsupported statistics, keyword stuffing). Five articles will tell you what yours are.

Install it and run it today

npm install -g checkapp
checkapp --setup
checkapp article.md

The code is on GitHub — MIT license, 338 passing tests. If something breaks, open an issue.

For Claude Code users: install the MCP server from the repo and check_article becomes a native tool in your agent workflow. Your agent drafts. Then it checks.