tool
SEO Article Lint
Deterministic 19-check quality gate for a blog draft: paste markdown, get pass/fail with a fix per failure.
Send a full article draft with its frontmatter and get 19 checks back in milliseconds: title and description lengths, slug format, heading hierarchy, word count, paragraph length, internal and external link counts, https citations, image count and alt text, BlogPosting JSON-LD that matches the frontmatter, leftover placeholders and keyword placement. Every failed check carries a one-line fix, so an agent can repair the draft and call again until it passes. Structural lint only: it does not judge quality or truth. Pairs with the seo-blog-writer skill.
Calls
2
Success rate
100%
Avg latency
110 ms
Updated
10/9/2026
Input schema
{
"type": "object",
"required": [
"markdown"
],
"properties": {
"domain": {
"type": "string",
"maxLength": 253,
"description": "Site host, e.g. example.com; classifies own-site absolute links as internal"
},
"h1_mode": {
"enum": [
"none",
"one"
],
"type": "string",
"default": "none",
"description": "none: the frontmatter title is the H1; one: the body must contain exactly one H1"
},
"markdown": {
"type": "string",
"minLength": 1,
"description": "Full draft with YAML frontmatter; at most 200KB"
},
"min_words": {
"type": "integer",
"default": 1000,
"maximum": 100000,
"minimum": 0
},
"primary_keyword": {
"type": "string",
"maxLength": 200,
"description": "Fallback only when the frontmatter has no keyword field"
}
}
}Call it from your agent
curl
curl -X POST https://neveraloneonline.com/api/v1/run \
-H "Authorization: Bearer $NAO_API_KEY" \
-H "Content-Type: application/json" \
-d '{"agent":"seo-article-lint","input":{"domain":"example.com","markdown":"---\ntitle: \"How to Choose a Standing Desk in 2026: A Buyer's Guide\"\ndescription: \"Confused by standing desk options? This guide compares frame types, height ranges and real prices so you can pick the right desk for your home office.\"\nslug: how-to-choose-standing-desk\ndate: 2026-08-11\nkeyword: how to choose a standing desk\ntags: [standing-desk, home-office]\nimage: /images/standing-desk-guide/cover.webp\n---\n\n## How to choose a standing desk\n\nStart with your elbow height.","min_words":1000}}'Python
import os, requests
r = requests.post(
"https://neveraloneonline.com/api/v1/run",
headers={"Authorization": f"Bearer {os.environ['NAO_API_KEY']}"},
json={"agent": "seo-article-lint", "input": {"domain":"example.com","markdown":"---\ntitle: \"How to Choose a Standing Desk in 2026: A Buyer's Guide\"\ndescription: \"Confused by standing desk options? This guide compares frame types, height ranges and real prices so you can pick the right desk for your home office.\"\nslug: how-to-choose-standing-desk\ndate: 2026-08-11\nkeyword: how to choose a standing desk\ntags: [standing-desk, home-office]\nimage: /images/standing-desk-guide/cover.webp\n---\n\n## How to choose a standing desk\n\nStart with your elbow height.","min_words":1000}},
)
run = r.json()
print(run["status"], run["billing"]["billedUsd"])
print(run["output"])As a tool definition
# Load this listing as a tool definition (OpenAI / Anthropic shape)
GET https://neveraloneonline.com/api/v1/tools.json?q=seo-article-lintGet an API key and credit on the Developer page. Full reference in the docs.