Check copy for AI writing patterns
seo_lintChecks landing page copy, blog posts, titles and meta descriptions for patterns common in AI-written text (such as "isn't X, it's Y" reframes, ", not X" contrasts, two-beat fragments, stock idioms and kicker lines), weak copy (dash punctuation, buzzwords, vague link text) and SEO rules (title 30 to 60 characters, description 70 to 160, one H1). Each error and warning has a line, the words, and a concrete fix. Each finding has a category (ai, copy or seo); only limits the check, such as only ["ai"] to leave out house style like dashes. Review items are judgement calls for you: read each quote and change it only when it fails the question. A url checks the main content of a live page (CLI and local MCP only). It reads no accounts.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | Optional instead of text: a live page. Its main content is extracted as Markdown (as seo_page with detail full shows it) and checked with the blog preset. Only the CLI and the local MCP server read pages. | |
| only | No | Optional categories to check: ai (patterns common in AI-written text), copy (weak copy and house style, such as dashes) or seo (titles, descriptions, headings). Default: all. | |
| text | No | The copy to check: a page, post, title or description, up to 200,000 characters. Markdown, MDX or HTML as written, so line numbers match. | |
| rules | No | Optional. true lists every rule with its id, category, level and description instead of checking text; only limits the list, such as only ["ai"]. | |
| format | No | Optional. md (default for text), mdx, html, astro or text. Code, tags and URLs are skipped; captions and titles are checked. | |
| preset | No | Optional. blog (default for Markdown), landing (default for HTML: stricter on buzzwords, weak links and claims with no number), docs, or meta (one title or description per line; start a line with "title:" or "description:" to say which). | |
| meta_kind | No | Optional, with the meta preset: title or description, what a line with no "title:" or "description:" label is. Default: a line up to 70 characters is a title, a longer one a description. | |
| ignore_rules | No | Optional rule ids or review lenses to skip. | |
| ignore_phrases | No | Optional phrases to allow, such as a product name a rule keeps matching. |