Replaces Ahrefs ($99/mo)
Full SEO audit for any URL via a single API call. Scores meta tags (title, description, OpenGraph, Twitter Cards, canonical), counts internal vs external links, measures content depth, and uses GPT-4o to generate specific, actionable recommendations. Returns a score out of 100 with prioritized issues.
GET request to target URL, returns full HTML body with response headers
Scores title, description, OpenGraph, Twitter Cards, canonical, viewport (0-100)
Extracts every meta tag and OpenGraph property from the page
Counts total, internal, and external links with full URL list
Extracts clean text, word count, and character count
GPT-4o generates specific, actionable SEO improvement recommendations
Real results from production (jarvissdk.com) — not mocked data.
curl -X POST https://jarvissdk.com/api/v1/chain \
-H "x-api-key: jsk_your_key" \
-H "Content-Type: application/json" \
-d '{
"steps": [
{"module": "http-client", "action": "request", "input": {"url": "https://example.com", "method": "GET"}},
{"module": "seo-toolkit", "action": "analyze-meta", "input": {"html": "{{prev.body}}", "url": "https://example.com"}},
{"module": "html-toolkit", "action": "extract-links", "input": {"html": "{{steps[0].body}}"}},
{"module": "html-toolkit", "action": "extract-text", "input": {"html": "{{steps[0].body}}"}},
{"module": "ai-analyzer", "action": "summarize", "input": {
"text": "SEO Audit:\nScore: {{steps[1].score}}/100\nIssues: {{steps[1].issues}}\nLinks: {{steps[2].count}}\nWords: {{steps[3].word_count}}\nProvide actionable SEO recommendations.",
"max_sentences": 10
}}
],
"auto_install": true
}'const response = await fetch("https://jarvissdk.com/api/v1/chain", {
method: "POST",
headers: {
"x-api-key": "jsk_your_key",
"Content-Type": "application/json",
},
body: JSON.stringify({
steps: [
{ module: "http-client", action: "request", input: { url: targetUrl, method: "GET" } },
{ module: "seo-toolkit", action: "analyze-meta", input: { html: "{{prev.body}}", url: targetUrl } },
{ module: "html-toolkit", action: "extract-links", input: { html: "{{steps[0].body}}" } },
{ module: "html-toolkit", action: "extract-text", input: { html: "{{steps[0].body}}" } },
{ module: "ai-analyzer", action: "summarize", input: {
text: `SEO Audit for ${targetUrl}:\nScore: {{steps[1].score}}/100\nIssues: {{steps[1].issues}}\nLinks: {{steps[2].count}}\nWords: {{steps[3].word_count}}\nProvide actionable SEO recommendations.`,
max_sentences: 10,
}},
],
auto_install: true,
}),
});
const { results, summary } = await response.json();
console.log(`SEO Score: ${results[1].output.score}/100`);
console.log(`Issues: ${results[1].output.issues.join(", ")}`);
console.log(`Recommendations: ${results[4].output.summary}`);import requests
resp = requests.post(
"https://jarvissdk.com/api/v1/chain",
headers={"x-api-key": "jsk_your_key", "Content-Type": "application/json"},
json={
"steps": [
{"module": "http-client", "action": "request", "input": {"url": target_url, "method": "GET"}},
{"module": "seo-toolkit", "action": "analyze-meta", "input": {"html": "{{prev.body}}", "url": target_url}},
{"module": "html-toolkit", "action": "extract-links", "input": {"html": "{{steps[0].body}}"}},
{"module": "html-toolkit", "action": "extract-text", "input": {"html": "{{steps[0].body}}"}},
{"module": "ai-analyzer", "action": "summarize", "input": {
"text": f"SEO Audit for {target_url}:\nScore: {{{{steps[1].score}}}}/100\nIssues: {{{{steps[1].issues}}}}\nLinks: {{{{steps[2].count}}}}\nWords: {{{{steps[3].word_count}}}}\nProvide actionable SEO recommendations.",
"max_sentences": 10,
}},
],
"auto_install": True,
},
)
data = resp.json()
seo = data["results"][1]["output"]
print(f"Score: {seo['score']}/100")
print(f"Issues: {seo['issues']}")
print(f"AI Recommendations: {data['results'][4]['output']['summary']}")Get the same insights via a single API call. Free tier includes 1,000 executions/month.