Supabase Content Publisher
Create, validate, and publish content records in Supabase without touching the dashboard. Insert new entries, check for duplicates, and manage status transitions from draft to published.
The Challenge
You use Supabase as your content backend but managing records means jumping between the dashboard, checking for duplicate slugs manually, and running update queries to change statuses. When you need to publish a batch of draft posts or add a dozen product listings, the process is slow and repetitive. One wrong slug and you have a broken link. One missed status update and unpublished content sits in limbo.
What This Prompt Does
Create Content
Inserts new records with all required fields, auto-populating timestamps and default status values
Check Duplicates
Searches for existing records by slug or title before creating so you never end up with collisions
Update Metadata
Changes categories, tags, SEO fields, and any other metadata on existing content records
Manage Status
Transitions content through draft, review, published, and archived states with validation
The Prompt
The Prompt
Task
Use @Supabase/Create RecordName it "Supabase/Create Record" and call it with @Supabase/Create Record to insert new content records (blog posts, product listings, pages, or any CMS-style entries), @Supabase/Read RecordsName it "Supabase/Read Records" and call it with @Supabase/Read Records to check for duplicates and retrieve existing content, and @Supabase/Update RecordName it "Supabase/Update Record" and call it with @Supabase/Update Record to change status, update metadata, or modify published content.
Input
The user provides:
- The content table name in Supabase (e.g., "posts", "products", "pages")
- The action: create new content, check for duplicates, update status, or publish
- Content data: title, body/description, slug, category, tags, author, metadata
- Status transitions: draft, review, published, archived
Example: "Create a new blog post in the posts table with title 'Getting Started with Supabase', slug 'getting-started-supabase', status 'draft', and category 'tutorials'. Then check if any other post already has the same slug."
Context
Creating Content Records
- Use @Supabase/Read RecordsName it "Supabase/Read Records" and call it with @Supabase/Read Records to check if a record with the same slug or title already exists
- If a duplicate is found, warn the user and show the existing record
- Use @Supabase/Create RecordName it "Supabase/Create Record" and call it with @Supabase/Create Record to insert the new content with all provided fields
- Auto-populate metadata fields:
- created_at: current timestamp
- updated_at: current timestamp
- status: "draft" unless specified otherwise
- author: as provided or default
- Return the created record with its generated ID
Duplicate Checking
- Use @Supabase/Read RecordsName it "Supabase/Read Records" and call it with @Supabase/Read Records to search by slug, title, or external_id
- Report any matches with their current status and last updated date
- Let the user decide whether to proceed with creation or update the existing record instead
Updating Content
- Use @Supabase/Read RecordsName it "Supabase/Read Records" and call it with @Supabase/Read Records to find the content to update
- Use @Supabase/Update RecordName it "Supabase/Update Record" and call it with @Supabase/Update Record to modify fields:
- Status changes: draft to review, review to published, published to archived
- Metadata updates: category, tags, SEO fields, featured image
- Content edits: title, body, description, excerpt
- Always update the updated_at timestamp when modifying a record
- For status transitions, validate the transition is valid (e.g., do not go from archived back to draft without explicit confirmation)
Bulk Publishing
If the user wants to publish multiple items:
- Use @Supabase/Read RecordsName it "Supabase/Read Records" and call it with @Supabase/Read Records to find all records matching the criteria (e.g., status = "review")
- Show the list of records that would be published
- Use @Supabase/Update RecordName it "Supabase/Update Record" and call it with @Supabase/Update Record to change status to "published" and set published_at timestamp
- Report results for each item
Safety Guidelines
- Always check for slug/title duplicates before creating
- Show the current state of a record before updating it
- Require confirmation for bulk status changes
- Never overwrite content body without showing the diff
Output
Content Operation Results:
Records Created: | Title | Slug | Status | ID | |-------|------|--------|----| | [title] | [slug] | [status] | [generated_id] |
Duplicate Check: | Slug | Existing Title | Status | Last Updated | |------|---------------|--------|-------------| | [slug] | [title] | [status] | [date] |
Records Updated: | ID | Field | Previous Value | New Value | |----|-------|----------------|-----------| | [id] | status | draft | published | | [id] | updated_at | [old] | [new] |
Summary:
- Created: [n] new records
- Updated: [n] existing records
- Duplicates found: [n]
- Skipped: [n]
Example Usage
Try asking:
- →"Create a new product listing in the products table: name "Wireless Charger", slug "wireless-charger", price 29.99, category "electronics", status "draft"."
- →"Find all posts in the posts table with status "review" and publish them by setting status to "published" and adding a published_at timestamp."
- →"Check if a blog post with slug "supabase-getting-started" already exists. If not, create it with title "Getting Started with Supabase" and status "draft"."