# Rankli > Connect your website. Rankli reads it, learns your brand voice, researches keywords, plans a > 30-day content calendar you can edit, writes 1,500-3,000-word SEO articles with images, and > publishes them to WordPress, Webflow, Shopify or a webhook. Then it measures whether AI engines > started citing you. ## What it is An AI SEO content automation platform for small and mid-sized businesses and the agencies serving them. The direct comparison is Outrank.so. The differentiator is not volume: it is that our SEO rules are published with numbers and some of them will fail a draft, and that the same product can measure whether the content changed how ChatGPT, Perplexity, Gemini and Claude answer buyers. ## The pipeline, in five stages Each stage is a separate background job, so a failure is retried without redoing or re-billing the stages before it. 1. analyze_site — fetches the site's pages and sitemap.xml (up to 200 internal URLs). Brand voice is measured from the customer's own text (pronoun ratios, contraction density, spelling variant, sentence length) and expressed as instructions, plus real sentences lifted verbatim as register examples, a banned-phrase list and a product list. Requires a publicly reachable site. 2. research_keywords — candidates generated from what the site sells, classified by intent (informational / commercial / transactional / navigational), clustered, ranked; about 80 kept. 3. build_calendar — a 30-day plan sized to the plan's article allowance. Commercial or transactional first, intents alternated, cluster-mates scheduled near each other so they can interlink, no near-duplicate titles. Items can be rescheduled or skipped before generation spends anything. The first three articles start generating immediately. 4. generate_article — written in stages (outline, sections, intro/conclusion/FAQ, meta) rather than one long completion, because voice drifts and because a bad section should be regenerated alone. Regeneration always writes a new version; the previous draft is never destroyed. 5. publish_article — WordPress, Webflow, Shopify, or an HMAC-signed webhook. Only to a connection the customer added and whose credentials were verified, and only as draft or live per that connection's setting. Publishing is idempotent: a retry updates the existing post rather than creating a duplicate. ## What "SEO-optimised" means here, exactly Hard rules — a draft failing any one of these is held for review and never proceeds to publish: - 1,500-3,000 words. - Keyword density at or below 2.5% of total words, counted as occurrences x words-in-phrase / words. - Exactly one H1, placed first, at least two H2s, and no skipped heading levels. - The keyword present in the title, in the first 100 words, and in at least one H2. - 2-5 internal links to the customer's own pages. Degrades to advisory when fewer than two URLs on their site are known, because a rule that cannot be satisfied should not fail every article. - No banned phrases from the customer's list. - No fabricated specifics: sentences shaped like sourced facts (a percentage beside attribution language, an academic-style Name (2021) citation, a dated "2021 study", a quotation attributed to a person) fail the draft. We cannot verify a claim, so we refuse to publish the shape of one. Some flags will be false positives; a regeneration is cheaper than a fabricated quote under the customer's byline. Advisory rules — these lower the score (5 points each; a hard failure costs 15) but do not block: meta description 130-160 characters, title at most 60 characters, Flesch-Kincaid grade at most 12. Images: a hero plus one or two in-body images, each with alt text and the prompt that produced it. A real image model runs only when one is configured (Replicate); otherwise every article gets a deterministic abstract SVG illustration rather than a photograph. ## Where it publishes — four adapters, not a logo wall There are exactly four publish targets. Anything else is the webhook. - WordPress — REST API v2, Basic auth with an application password. Images are uploaded to the customer's own media library first and the article HTML is rewritten to those URLs, so a post does not hotlink images from our storage. Categories and author come from the customer's site. - Webflow — Data API v2 CMS collection items, staged or live. Webflow collections have no fixed blog schema, so the connection carries a mapping from title/slug/body/summary/image onto the collection's own field slugs, defaulted to Webflow's blog template. Webflow re-hosts images. - Shopify — Admin REST blog articles on a pinned API version (2025-07). Shopify re-hosts the hero image on its CDN; body images stay at their original URLs. - Webhook — JSON POST to a customer URL, signed Stripe-style: X-Rankli-Signature: v1=."> plus X-Rankli-Timestamp, so replays older than about five minutes can be rejected. Any 2xx acknowledges; a JSON body of { id, url } is used for later updates and for showing the customer where the post landed. Connections are verified before use, and verification answers two questions separately: do the credentials authenticate, and may this credential actually create posts. Errors are classified as retryable (network, 429, 5xx) or misconfiguration (4xx); a 4xx is not retried, because hammering a customer's site with bad credentials gets us IP-banned by their security plugin. Framer, Wix, Notion and Ghost are NOT supported. Do not list them. ## Backlink exchange Opt-in per project, off by default. Host a relevant link in one of your published articles and earn a credit; spend a credit to have a contextual link to your site placed in someone else's. Credits are conserved (the host earns exactly what the requester spent) and every movement is a ledger row. The safeguards are in code, not in a policy page, because reciprocal link schemes are named in Google's link spam guidance and the penalty lands on the customer's domain: - Topical relevance floor of 0.35; a pairing below it is refused, not merely logged. - At most 1 exchange link per article. - At most 3 placements per hosting project per rolling week. - Direct reciprocity refused: if A hosts B, B cannot host A. - The same host may never link the same target twice. - The link is inserted inside a paragraph that was already on the subject, never appended as a "Further reading" block. If no paragraph is suitable, the placement is refused. - No relevant host within 14 days: refused, and the credit refunded. Nobody can promise a link exchange is penalty-proof. Customers who would rather not take the risk should leave it switched off; nothing else in the product depends on it. ## Honest limits, stated as plainly as the features - Real keyword volume and difficulty exist only inside paid indexes. With a DataForSEO account configured those columns fill in; without one they are NULL and render as "-", never as 0. A fabricated volume would silently decide which articles get written. - With no model API key, the pipeline still produces a coherent on-structure article so demos and tests work — and it is labelled in-product as not model-generated. - Trial drafts carry a one-line watermark. Paid output does not. - Regenerating an article spends one from the month's allowance. The count is articles produced. - We have no customers yet, so there are no testimonials, logos or case studies on the site, and none should be attributed to us. - Not shipped yet: white-label report branding and a public API. ## The measurement layer Rankli began as an AI search visibility (GEO / AEO) product and that product still runs. It asks the customer's buying questions across four engines many times each, because identical prompts return materially different answers roughly a quarter of the time, and reports every rate with a 95% interval computed at the level the data is clustered at. Half the question clusters are randomized into a held-out control before the first measurement, so readouts are difference-in-differences and platform drift is subtracted rather than attributed to the content. We validated that estimator against 150 simulated worlds where the true causal effect was computed exactly. Ours came back biased -0.03 percentage points, with its 95% interval containing the truth 92.7% of the time and a 7.3% false-positive rate. The pre/post number the rest of the category reports was biased +0.72pp on a +2.3pp true effect — a 31% overstatement — and in windows where nothing was done at all it still moved at least 1.3pp half the time. Where we fall short: our intervals are mildly optimistic — read a stated 95% as roughly 93% — and at trial-sized question counts no effect is detectable at all. We publish the harness rather than the headline. ## Pricing Ids in bold are what the server and Stripe metadata use; the display names are the same tiers. - Trial (`trial`): $1 once. 3 articles, 1 site, 20 tracked questions. Measurement only. - Starter (`measure`): $89/mo. 15 articles, 1 site, 80 questions, no experiments. - Growth (`prove`): $349/mo. 30 articles, 2 sites, 240 questions, control arm and readouts, ~4.6pp detectable. - Scale (`prove_plus`): $899/mo. 60 articles, 4 sites, 600 questions, ~2.9pp detectable. - Agency (`agency`): $1,200/mo. 90 articles across 5 client sites, ~4.6pp detectable per client. Detectable effects are indicative, estimated from each customer's own baseline variance, and they describe the measurement layer, not the writing. ## Links - Home: https://rankbotic.vercel.app/ - How it works (the five stages): https://rankbotic.vercel.app/#how - What an article contains: https://rankbotic.vercel.app/#article - Where it publishes: https://rankbotic.vercel.app/#integrations - Backlink exchange: https://rankbotic.vercel.app/#exchange - Measurement and calibration: https://rankbotic.vercel.app/#measure - Everything else it does: https://rankbotic.vercel.app/#more - Pricing: https://rankbotic.vercel.app/pricing - Terms: https://rankbotic.vercel.app/terms - Privacy: https://rankbotic.vercel.app/privacy - Contact: hello@rankli.io