Supabase Storage

Publish articles as rows in a table inside your own external Supabase project, with discovered schema and per-field column mapping.

The Supabase integration publishes your articles straight into a table in your own external Supabase project — not Rankturn's database. Each published article becomes a row in the table you choose, and each part of the article (title, body, slug, and so on) is written to the column you choose for it. This is ideal when your blog or app reads its content directly from a Supabase database (for example a Next.js, SvelteKit, or Flutter front end backed by Supabase).

Connecting takes three steps: you enter your project details, Rankturn looks up the tables and columns in your project, and you match each article field to a column. Once connected, Supabase appears as a publishing destination when you publish or schedule an article.

Connecting Supabase requires an active paid plan — connecting (and looking up your tables) is not available on the free plan.

For how your details are stored, see Credentials & Security.

Connecting

The Supabase connection wizard has three steps. Open it from Settings → Integrations, find the Supabase card, and click Connect (or Edit Settings if it is already connected).

Step 1 — Connection details

FieldDescriptionDefault
Supabase Project URLYour project URL, e.g. https://your-project.supabase.co. Found in your Supabase dashboard under Project Settings → API.
Service Role KeyYour project's service_role key, found under Project Settings → API → service_role. Rankturn uses it to read your table structure and to add rows.
Database SchemaThe schema that holds your table.public

Click Next. Rankturn checks the URL (and blocks internal/private addresses for safety), then connects to your project and lists its tables.

The service role key is a powerful secret — it grants full access to your project. Rankturn stores it encrypted and never shows it back to you. When you later Edit Settings, the key field is blank; leave it blank to keep the stored key, or type a new value to replace it.

Step 2 — Select table

Rankturn lists the tables it found in your chosen schema. Pick the one table where articles should be added, then click Next.

Step 3 — Map columns

Rankturn shows each article field next to a dropdown of the selected table's columns (each column lists its data type). It pre-fills sensible matches for you (see Matching fields to columns), and you can adjust any of them.

  • Title and Content are required — you cannot finish until both are matched to a column. A warning reminds you while either is unset.
  • Every other field is optional. Choose None for any field you don't want written.
  • This step also sets the Content Format and the Status value (covered below).

Click Connect to finish. Rankturn runs a connection test first, and only saves the connection if it succeeds.

Matching fields to columns

For the standard setup, you don't need to run any setup commands in your project. Rankturn looks up your tables and columns for you using your service role key.

How it works. Rankturn reads your project's table structure to list your tables and their columns and types. If it can't read that directly, it instead looks for a few common content table names (posts, articles, blog_posts, content, pages, blogs, news, stories) and figures out the columns from an existing row. Internal system tables are skipped. What Rankturn finds is saved, so editing the connection later doesn't have to look everything up again.

Automatic matching. When you pick a table, Rankturn suggests a column for each article field by matching common names (ignoring upper/lower case). For example:

Article fieldMatches column names like
Titletitle, name, heading
Contentcontent, body, text
Excerptexcerpt, summary, description
Meta Descriptionmeta_description, seo_description
Slugslug, url, permalink
Published Atpublished_at, publish_date, created_at
Thumbnail URLthumbnail_url, thumbnail, featured_image, featured_image_url, image_url, cover_image, og_image
Thumbnail Alt Textthumbnail_alt_text, thumbnail_alt, image_alt, image_alt_text, featured_image_alt
Inline Imagesimages / inline_images (only if the column is json/jsonb)
Tagstags (only if the column is json/jsonb/array)
Categorycategory, category_name
Statusstatus
Word Countword_count, words
Reading Timereading_time, read_time
Updated Atupdated_at, modified_at, edited_at
Authorauthor, author_name, writer
Canonical URLcanonical_url, canonical, canonical_link
Schema Markupschema_markup, json_ld, jsonld, structured_data, schema (only if json/jsonb)

The list also includes Updated At and Created At fields, which carry the article's last-modified and creation dates. Each is written only when the article actually has that date. One thing to watch: a column named created_at is matched to the Published At field (not Created At), so it fills with the publish time — if you want the article's real creation date there, match the Created At field to it yourself.

Automatic matching is only a starting point — review every match and fix anything that points at the wrong column. Any field left as None is simply not written, and optional fields that have no value on a given article are skipped rather than written as empty.

Re-using rows by slug. If you match the Slug field to a column and the article has its own slug, Rankturn first looks for an existing row with that slug and updates it instead of adding a duplicate. This way, publishing the same article again doesn't create a second copy. Because your table is your own, Rankturn uses the matched slug column to recognize a row it has published before. An auto-generated slug (built from the title) is not used this way — to keep different articles from colliding, those always add a new row. Match a real slug column if you want updates on republish.

Content Format & Status Value

Two settings on the mapping step control how article data lands in your table.

Content Format

The Content Format setting controls the format Rankturn writes into your Content column, so it matches how your site displays it:

FormatWhat is writtenUse when your front end…
Markdown (default)The body as Markdown.Displays the column using a Markdown renderer (e.g. react-markdown).
HTMLThe body as HTML.Displays the column as HTML directly.
PlainPlain text with all formatting removed.Wants plain text with no markup.

Status value

If you match a column to Status, Rankturn writes a fixed status word into it on every publish. You set this value when connecting; it defaults to published. Make it match the wording your site expects — for example public, live, or published.

Images

Articles can carry several kinds of imagery, each written only if you match a column for it and the article actually has that image:

  • Thumbnail URL — the article's cover/featured image link. Match it to a text/URL column (e.g. featured_image, cover_image).
  • Thumbnail Alt Text — the alt text for that cover image. Match it to a text column.
  • Inline Images — the list of images used within the body, written as a list. Automatic matching only suggests this for a json/jsonb column (named images or inline_images); match it to a JSONB column so the list is stored cleanly.

Rankturn does not copy image files into your project — it writes the links to images that are already hosted (your thumbnail link and the inline image links). Your site loads them from those links. If you need the image files themselves in your own storage, download them from those links separately.

Tips & Troubleshooting

"Setup required" / no tables found. Confirm the Service Role Key is the service_role key (not the anon key) and that the Database Schema name is correct. The service role key must be able to read your tables for the lookup to work.

Connection test fails. Double-check the Project URL (it should look like https://<project-ref>.supabase.co) and the service role key. Rankturn also rejects URLs that point to private/internal addresses.

Rows always look like drafts on your site. Match a Status column and set the Status value to whatever your site treats as live (e.g. published or public).

Tags or images stored as literal text with brackets. Match Tags and Inline Images to array/JSONB columns, not plain text columns, so the values aren't stored as a quoted string. The Category match is singular and is written as plain text.

Republishing creates duplicate rows. Match the Slug field to a column and give your articles their own slugs, so Rankturn can find and update the existing row instead of adding a new one.

For how this connection's details are encrypted and stored, see Credentials & Security. For scheduling and automatic publishing, see Publishing & Scheduling.