> ## Documentation Index
> Fetch the complete documentation index at: https://help.get-ryze.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Programmatic Articles

> Long-tail articles written and published for you — how topics are planned into pools, turned into full drafts, and pushed live to your store or CMS.

Programmatic articles are the core of Ryze's on-page engine: long-tail landing pages, planned from your data, written in full, and published to your CMS. Each one targets a real keyword and points readers toward the pages you want to rank.

Find them under **Programmatic** in the SEO sidebar.

<Frame>
  <img src="https://mintcdn.com/ryzeai-5f9aafd5/AOERrWrazZOYqwAr/images/seo-programmatic-page.png?fit=max&auto=format&n=AOERrWrazZOYqwAr&q=85&s=6c6ac8f890f3f2f904e1eed5881af36c" alt="The Programmatic page with All, Planned, Drafted, and Published tabs" width="3196" height="1696" data-path="images/seo-programmatic-page.png" />
</Frame>

## The two pools

Topics are planned into two pools so coverage is both focused and wide:

* **Pool A — priority-anchored.** Topics built around your priority keywords and the products that matter most, to drive traffic and links to your key pages.
* **Pool B — open.** Topics that expand into adjacent demand — mined from your Search Console impressions, competitor gaps, and AI brainstorming across your wider catalog.

Each planned topic carries a real keyword, search volume, and difficulty — nothing invented.

## Article statuses

You'll see articles move through states, available as tabs:

| Status        | Meaning                                                         |
| ------------- | --------------------------------------------------------------- |
| **Planned**   | Topic is planned and ready to generate.                         |
| **Drafted**   | The full article body has been written and is ready to publish. |
| **Published** | Live on your store or CMS.                                      |
| **Failed**    | Generation or publishing hit an error — you can retry.          |

## Generate an article

On a **Planned** article, click **Generate**. Ryze writes the full piece:

* **Body** — a complete article (500+ words).
* **Meta title** and **meta description** — for search snippets.
* **Featured image** — selected automatically and uploaded.

<Frame>
  <img src="https://mintcdn.com/ryzeai-5f9aafd5/AOERrWrazZOYqwAr/images/seo-generate-button.png?fit=max&auto=format&n=AOERrWrazZOYqwAr&q=85&s=6157b6fa30925f0fb6c14a14ef76c2c0" alt="A planned article with the Generate button" width="3196" height="1696" data-path="images/seo-generate-button.png" />
</Frame>

It runs in the background — the draft is ready in a few minutes, and the article moves to **Drafted**.

## Review and edit a draft

Before publishing, click **Edit** to refine anything. The **Edit draft** dialog lets you change:

* **Title** and **slug**
* **Meta title** and **meta description**
* **Body** (Markdown — the same content that gets published)
* **Scheduled date**
* **Featured image** (replace or remove)

<Frame>
  <img src="https://mintcdn.com/ryzeai-5f9aafd5/AOERrWrazZOYqwAr/images/seo-edit-draft.png?fit=max&auto=format&n=AOERrWrazZOYqwAr&q=85&s=3dabd70067e9c690b7c75d06678f12c5" alt="The Edit draft dialog" width="3196" height="1696" data-path="images/seo-edit-draft.png" />
</Frame>

<Note>
  You can edit an article in any state except **Published** — once it's live, edits happen on your CMS. You can also **delete** any article that isn't published yet, with a confirmation step.
</Note>

## Scheduling

Every article is planned with a **publish date**. Ryze spreads new articles out automatically — around five a day — so your content rolls out at a steady pace instead of landing all at once.

You control the timing from the **Edit draft** dialog:

* **Move a date.** Change the **Scheduled date** to publish an article sooner or later.
* **Stack a day.** Point several articles at the same date for a bigger drop — the daily publisher sends everything that's due, not a fixed five.

When **auto-publish** is on, each day Ryze publishes every article whose date has arrived — today or earlier — and lets future-dated ones wait their turn. With auto-publish off, you publish each due draft yourself with **Publish now**.

### Content calendar

Click **Calendar view** on the Programmatic page to see the whole plan laid out by day, color-coded by type. It's the fastest way to spot empty days or pile-ups and rebalance dates by editing an article's scheduled date.

<Frame>
  <img src="https://mintcdn.com/ryzeai-5f9aafd5/wL5N5nLp--6Bweeg/images/seo-content-calendar.png?fit=max&auto=format&n=wL5N5nLp--6Bweeg&q=85&s=ed83afc67c8ad466ae849bfbf48177ee" alt="The content calendar with articles laid out by scheduled day" width="3170" height="1776" data-path="images/seo-content-calendar.png" />
</Frame>

The same calendar covers your off-page mentions — open it with **Calendar view** on the Mentions page too.

## Publish

On a **Drafted** article, click **Publish now**. Ryze pushes it to your connected store or CMS and, once live, pings Google to index the new URL. The article moves to **Published** with a link to the live page.

<Frame>
  <img src="https://mintcdn.com/ryzeai-5f9aafd5/AOERrWrazZOYqwAr/images/seo-publish-button.png?fit=max&auto=format&n=AOERrWrazZOYqwAr&q=85&s=f5390d00320c8f2857ec6f657596a7f6" alt="A drafted article with the Publish now button" width="3196" height="1696" data-path="images/seo-publish-button.png" />
</Frame>

### Where it publishes

Supported targets:

| Platform         | How it connects                                |
| ---------------- | ---------------------------------------------- |
| **Shopify**      | OAuth + custom app credentials                 |
| **WordPress**    | Site URL + API token                           |
| **Framer**       | OAuth + a mapped CMS collection                |
| **Wix**          | OAuth + site                                   |
| **Webflow**      | Site token + a CMS collection                  |
| **Ghost**        | Admin API key                                  |
| **GitHub**       | GitHub App — publishes article files to a repo |
| **Ryze Hosting** | A blog hosted by Ryze on your domain           |

What gets pushed: the article HTML, meta title and description, slug, excerpt, and the featured image. Connect a CMS under your [integrations](/integrations/overview) first — without one, there's nowhere to publish.

### Choose the publish target

With several CMS connected, pick which one receives your articles in **Content settings** on the Programmatic page:

<Frame>
  <img src="https://mintcdn.com/ryzeai-5f9aafd5/D5UqALOsthei8CQz/images/seo-content-settings-publish.png?fit=max&auto=format&n=D5UqALOsthei8CQz&q=85&s=aeb56261dd0ffd13063064580c5abbd5" alt="Content settings with the Publish to selector and the Override blog URL field" width="3110" height="1700" data-path="images/seo-content-settings-publish.png" />
</Frame>

* **Publish to** — the connected CMS that receives generated articles. With a single CMS connected, it's used automatically.
* **Override blog URL (optional)** — for headless setups (like GitHub) where articles live at a different public address than the CMS itself. Set it and Ryze uses that address for live links, indexing pings, and liveness checks.

### Manual vs automatic

* **Manual** — you click **Publish now** on each draft.
* **Automatic** — when auto-publish is on, Ryze publishes drafts on schedule (by their assigned date), at a steady daily pace rather than all at once. Set or change a draft's date in the edit dialog.

<Note>
  If a publish fails, the article is marked Failed with the error. Ryze retries up to a few times before skipping; you can also re-publish manually.
</Note>

## Related

<CardGroup cols={2}>
  <Card title="On-Page Fixes" icon="wrench" href="/seo/optimizations">
    Technical and GEO fixes shipped by the agent.
  </Card>

  <Card title="Connect Your Platforms" icon="plug" href="/integrations/overview">
    Connect a store or CMS to publish to.
  </Card>
</CardGroup>
