Introduction

Octopus turns a list of keywords into product listing pages published in your Shopify store — one page per query, checked against duplicates.

The principle is simple: you provide the keywords, Octopus spreads its tentacles to generate, check and publish. This documentation covers installation, importing, the two generation modes and the status reference.

Requirements An active Shopify store. AI writing (Editorial mode in Hybrid / Generation, AI collection intros) needs your Anthropic key — optional: Aggregation and templated intros work without one.

Installation

  1. Install Octopus from the Shopify App Store and grant read/write permissions for pages and collections.
  2. In Settings, build the content index in one click: your store's pages, collections and articles feed anti-cannibalization.
  3. (Optional) Add your Anthropic key in Settings to enable AI writing (Editorial Hybrid / Generation, AI collection intros).
Note No credit card required for the Free plan (10 active pages).

Import keywords

From the Import screen, drop a CSV file. One row = one keyword. The keyword column is required; min_products (1–100, minimum product threshold for that keyword) is optional. The delimiter (, or ;) is auto-detected, BOM is handled, up to 5 MB, and duplicates are de-duplicated.

# keywords.csv
keyword,min_products
snowboard,5
veste hiver,3
guide cadeaux fêtes,
# a sample file is downloadable in the app (/sample.csv)

You pick the processing mode when launching the batch — Product, Editorial, or both (counts as 2 against quota) — not per CSV row. Before any launch, a preview shows total / valid / errors / blocked / cannibalization conflicts: nothing is created until you confirm.

Octopus then creates one page per keyword and runs batch generation in the background. You track progress in the jobs list — each job shows success / total.

Blocked keywords (blacklist)

You define, for your store, a list of patterns to exclude — competitor brands, banned terms… — added one by one or in bulk, with an optional reason. Any matching keyword is filtered out at import and appears in the blocked-keywords list.

Product & Editorial modes

Octopus generates two page types depending on keyword intent. You pick the mode when launching the batch: Product, Editorial, or both (each keyword then counts as 2 against quota).

Product mode

Creates a native Shopify collection grouping the relevant products from your catalog, with title, SEO title ({keyword} — {Store}), meta description and an intro above the grid. Search relies on Shopify's native engine (active products only, up to 250). Ideal for transactional queries ("snowboard", "jeans").

Semantic relevance filter Each candidate product is re-scored by similarity between the keyword and its curated metadata (title + type + tags + vendor — the description is excluded, as it's the source of false positives). The threshold is adjustable (default 0.30) and can be turned off; it never drops below your product minimum — it tightens the selection, it doesn't block. Below min_products, the keyword becomes "Insufficient" rather than creating a thin page.

Editorial mode (RAG engine)

Octopus indexes your blog and measures, for each keyword, how close it is to your existing articles. It then automatically picks one of three RAG modes:

  • Aggregationvery close articles: a curation page (excerpts + links to your articles). 100% your content, no AI key required.
  • Hybridmedium closeness: a Claude-written intro + curation of your articles.
  • Generationno close content: a full article (400–600 words) written by Claude. Requires your Anthropic key.
About the key Editorial mode works without a key in Aggregation. Only Generation (and the Hybrid intro) writes with AI and needs your Anthropic key; without a key, those keywords are offered as "deferred" with a clear message rather than written.

Anti-cannibalization

Octopus checks for duplicates in two layers, against all your store's existing content (pages, collections, articles) and content it has already created:

  1. At import — exact-duplicate detection via a "token fingerprint": case-, accent-, plural-, word-order- and stop-word-insensitive (FR/EN).
  2. At processingsemantic detection via embedding similarity (adjustable threshold, default 0.75) that catches near-duplicates, including between two keywords in the same batch.

On a conflict, you decide per row: ignore (default — the page isn't created and gets "Cannibalization"), force (create anyway — the slug is auto-suffixed) or rename the keyword.

The content index builds in one click from Settings and keeps updating as pages are created.

HTML sitemap

Octopus generates and keeps up to date an HTML sitemap page that lists and links every page it creates. Google's crawlers get a single entry point to all your SEO pages — crawling and indexing are faster and more thorough.

Content is grouped (Collections / Thematic articles), sorted alphabetically, with a counter and an update date, and localized FR/EN to your store's language. It's regenerated automatically at the end of each batch and after every deletion — nothing to do on your side.

The title and slug are customizable; changing the slug renames the existing page and creates a 301 redirect from the old URL. A link to the sitemap is added automatically to your theme's footer menu (on by default) so Google crawls it — removed automatically if you uncheck the option.

Good to know The HTML sitemap gives Google a single entry point to all your pages: it discovers your long-tail pages even with no external link pointing to them.

Automatic collection maintenance

Your collections stay in sync with your catalog: new products added, non-matching ones removed — automatically, every day. Octopus re-runs the search for each collection it created and applies the same relevance filter.

The frequency is adjustable in Settings: daily (the default), every 3 days, weekly, or manual. The diff is minimal: title, SEO and description are left untouched. The last refresh date is shown in Settings.

Your manual edits are untouchable Octopus manages its own product selection through Shopify's new collection model. Add or remove products by hand — the sync never overwrites your choices. Your blog re-indexing is configured separately (every 6 h / 12 h / 24 h or manual).

301 redirects

When you delete a page generated by Octopus, a confirmation dialog offers to create a permanent 301 redirect — pre-checked, because it's recommended. You stay in control: pick the destination (parent collection, homepage, or any other URL), or uncheck it if you'd rather not redirect.

With the redirect, no broken links and no lost ranking: the SEO equity the page built up is passed to the destination, and your visitors — like Google — always land on a valid page. Without a redirect, the old URL will return a 404.

Redirects are created natively in Shopify's URL redirects: you can review or adjust them anytime from your admin.

Page statuses

Each generated page carries a status, following a strict color code:

Published Insufficient Cannibalization Queued Error
  • Publishedthe page is live in Shopify, ready to index.
  • Insufficienttoo few products/data to generate a quality page. To enrich.
  • Cannibalizationa near-duplicate page already exists; publishing blocked.
  • Queuedin the generation queue.
  • Errorgeneration or publishing failed; check the job detail.

Anthropic API key

Octopus runs on BYOK (Bring Your Own Key): AI writing — AI collection intros, Editorial Hybrid and Generation — uses your own Anthropic key. Go to Settings → API key and paste a key in the Anthropic format. Without a key, everything remains usable (Aggregation + templated intros).

# expected format
sk-ant-xxxxxxxxxxxxxxxxxxxxxxxx

The key is encrypted (AES-256-GCM) and never exposed client-side. You are billed directly by Anthropic for your usage — Octopus takes no markup and never spends AI credits on your behalf. The model is Claude Sonnet; content is written in your store's primary language (EN, FR, DE, ES, IT, PT, NL, JA), with the tone and niche you configure.

Need help? Check the FAQ or message us from the Dashboard.