How it works

From keywords
to live pages,
in four steps

You choose your keywords, Octopus runs the rest: that's programmatic SEO applied to your catalog. Here's exactly what happens between your list and your live pages.

1

Choose your keywords

Octopus reads your catalog — product types, tags, vendors — and suggests ready-to-launch keywords with their product counts: no file needed to get started. Already have your lists? CSV import takes them in one go, one row per keyword. Suggestions come from your catalog, not from search-volume data.

catalog suggestionsCSV import1 keyword = 1 page
2

Octopus builds each page

One page per query, in Product mode (SEO collections) or Editorial mode (guides, comparisons). Generation runs in background batches: you can close the app, the work continues. Each job shows its completed / total progress.

Product modeEditorial modebatched
3

The index removes duplicates

Before publishing, the anti-cannibalization index compares each page to your existing catalog. If a near-duplicate already exists, the query gets the "Cannibalization" status instead of being published — two pages will never compete on the same keyword.

semantic index0 duplicates published
4

Pages ship to Shopify

Validated pages are created natively in your store, with slug, metadata and internal linking — ready to be indexed by Google. You keep full control: edit or unpublish anytime.

slug + metainternal linkingready to index

Anti-cannibalization

Why anti-
cannibalization matters

Generating a thousand pages is useless if they cannibalize each other. Octopus handles that problem before it exists, in three moves.

Step A

Indexing

Every existing page in your store is represented in a semantic index — its intent, not just its words.

Step B

Comparison

Before each creation, the new query is matched against the index. Too much closeness triggers a flag.

Step C

Decision

Duplicate: the page isn't published and gets "Cannibalization". Otherwise, it follows the normal flow to Shopify.

The best way to get it? Try it.