Documentation

Build with InsertContent

Learn how to generate AI-powered content and automatically deliver it to your databases, CMS platforms, and custom endpoints.

Overview

InsertContent is an AI-powered content generation platform that creates high-quality blog posts and automatically delivers them to your databases and websites. It uses Google Gemini AI with search grounding to ensure content is accurate and up-to-date.

AI Generation

Gemini-powered content with real-time search grounding for accuracy

Auto Delivery

Push to PostgreSQL, Supabase, Neon, or any database

Multi-Platform

WordPress, webhooks, and custom integrations

Quick Start

1

Create a Project

Set up your product/website details and configure AI settings

2

Add Topics

Queue topics for content generation manually or via API

3

Configure Delivery

Connect your PostgreSQL database or other delivery targets

4

Generate Content

AI creates and delivers your content automatically

Projects

Projects organize your content around a specific product, website, or brand. Each project has:

  • Product Info - Name, URL, description for context
  • Target Audience - Who you're writing for
  • AI Settings - Model selection, quality thresholds
  • Delivery Targets - Where content gets published

Managing Topics

Topics are the subjects for content generation. Add topics manually or via the API.

// Add a topic via API
POST /api/projects/{projectId}/topics

{
  "title": "Best AI Writing Tools in 2026",
  "keywords": ["ai writing", "content tools"],
  "priority": "high"
}

Content Generation

Content is generated using Google Gemini AI with search grounding for accuracy. Each piece of content includes:

  • SEO-optimized title and meta description
  • Structured content with headings
  • Internal linking suggestions
  • Quality score (0-100)
  • Auto-approval based on quality threshold

Custom Prompts

Customize AI behavior with project-specific prompts for different content types:

  • Blog Posts - Long-form educational content
  • Product Reviews - Comparison and review articles
  • How-To Guides - Step-by-step tutorials
  • News Updates - Timely industry news

PostgreSQL Integration

Deliver content directly to any PostgreSQL database (Neon, Supabase, self-hosted).

Setup

  1. Go to Settings → Integrations → PostgreSQL
  2. Enter your connection string
  3. Select your target table
  4. Map content fields to your table columns
  5. Test the connection

Column Mapping

Map InsertContent fields to your database schema:

Content Field    →  Your Column
─────────────────────────────────
title            →  post_title
content          →  body_html
slug             →  url_slug
metaDescription  →  seo_description
publishedAt      →  created_at

Example Table Schema

CREATE TABLE blog_posts (
  id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
  title VARCHAR(500) NOT NULL,
  slug VARCHAR(500) UNIQUE NOT NULL,
  content TEXT NOT NULL,
  meta_description TEXT,
  featured_image VARCHAR(2000),
  status VARCHAR(50) DEFAULT 'draft',
  created_at TIMESTAMPTZ DEFAULT NOW(),
  published_at TIMESTAMPTZ
);

WordPress Integration

Publish content directly to WordPress using the REST API.

Setup

  1. Enable the WordPress REST API on your site
  2. Create an Application Password in WordPress
  3. Add your WordPress URL and credentials in Integrations
  4. Select post status (draft/publish) and categories

Required WordPress Settings

WordPress URL: https://your-site.com
Username: your_username
Application Password: xxxx xxxx xxxx xxxx
Post Status: draft | publish
Default Category: Blog

Frontend Integration Guide

Display your AI-generated content beautifully on any website. Choose the integration method that matches your technical comfort level.

Recommended for Non-Technical Users

If you're not comfortable with code, use WordPress Direct Publishing below. It requires zero coding — just connect and your content auto-publishes!

No Code

WordPress Direct Publishing

Easiest • 5 min setup

Content auto-publishes directly to your WordPress site. No coding, no copying — it just works.

1WordPress Admin → Users → Profile
2Create Application Password
3InsertContent → Integrations
4Enter URL & password
5Content auto-publishes!
Pro tip: Set post status to "Draft" to review before publishing
Intermediate

WordPress Theme Customization

Custom styling • PHP knowledge helpful

Add a shortcode to display AI content with your theme's styling. Perfect for custom layouts.

functions.php
function display_insertcontent_posts($atts) {
    $atts = shortcode_atts(['limit' => 5], $atts);
    $posts = get_posts([
        'posts_per_page' => $atts['limit'],
        'meta_key' => '_insertcontent_generated',
        'meta_value' => 'true'
    ]);

    $output = '<div class="ic-posts">';
    foreach ($posts as $post) {
        $output .= '<article class="ic-post">';
        $output .= '<h2>' . esc_html($post->post_title) . '</h2>';
        $output .= wp_kses_post($post->post_content);
        $output .= '</article>';
    }
    return $output . '</div>';
}
add_shortcode('insertcontent', 'display_insertcontent_posts');

Usage: Add [insertcontent limit="10"] to any page or post

Developer

PostgreSQL + Next.js / React

Full control • TypeScript ready

Query your PostgreSQL database directly for complete control over how content is displayed.

app/blog/page.tsx
import { sql } from '@vercel/postgres';

export default async function BlogPage() {
  const { rows } = await sql`
    SELECT id, title, slug, content, meta_description
    FROM blog_posts WHERE status = 'published'
    ORDER BY created_at DESC LIMIT 20
  `;

  return (
    <main className="max-w-4xl mx-auto py-12">
      <h1 className="text-4xl font-bold mb-8">Blog</h1>
      {rows.map(post => (
        <article key={post.id} className="mb-8 p-6 border rounded-xl">
          <a href={`/blog/${post.slug}`}>
            <h2 className="text-2xl font-semibold">{post.title}</h2>
          </a>
          <p className="text-gray-600">{post.meta_description}</p>
        </article>
      ))}
    </main>
  );
}
Basic

Simple HTML / JavaScript

Any website • Copy & paste

Fetch content via API and display it on any static website. Works everywhere.

index.html
<div id="blog-posts"></div>

<script>
fetch('YOUR_API/api/projects/PROJECT_ID/posts', {
  headers: { 'Authorization': 'Bearer YOUR_API_KEY' }
})
.then(res => res.json())
.then(({ posts }) => {
  document.getElementById('blog-posts').innerHTML = posts.map(p => `
    <article>
      <h2>${p.title}</h2>
      <p>${p.metaDescription}</p>
      <div>${p.content}</div>
    </article>
  `).join('');
});
</script>
Automation

Webflow / Squarespace / Wix

Via Zapier • No-code automation

Connect through Zapier to automatically create content in your favorite website builder.

1

Set up Zapier

Create a webhook trigger in Zapier

2

Connect InsertContent

Send content to your Zapier webhook

3

Add destination

Create content in Webflow/Squarespace/Wix

Webhooks

Send content to any endpoint via webhook for custom integrations.

// Webhook payload
POST https://your-endpoint.com/webhook

{
  "event": "content.generated",
  "data": {
    "id": "uuid",
    "title": "Article Title",
    "content": "Full HTML content...",
    "slug": "article-slug",
    "metaDescription": "SEO description",
    "qualityScore": 85,
    "keywords": ["keyword1", "keyword2"]
  }
}

API Keys

Create API keys to access InsertContent programmatically.

Key Types

  • ic_user_* - User-level keys for creating projects
  • ic_live_* - Project-level production keys
  • ic_test_* - Project-level test keys

Authentication

// Using Bearer token
Authorization: Bearer ic_live_xxxxxxxxxxxx

// Or using X-API-Key header
X-API-Key: ic_live_xxxxxxxxxxxx

MCP Integration

Use InsertContent with Claude Desktop via the Model Context Protocol (MCP).

Claude Desktop Configuration

// claude_desktop_config.json
{
  "mcpServers": {
    "insertcontent": {
      "command": "npx",
      "args": ["insertcontent-mcp"],
      "env": {
        "INSERTCONTENT_API_KEY": "ic_user_xxxx"
      }
    }
  }
}

API Endpoints

Projects

GET    /api/projects              # List projects
POST   /api/projects              # Create project
GET    /api/projects/:id          # Get project
PUT    /api/projects/:id          # Update project

Topics

GET    /api/projects/:id/topics          # List topics
POST   /api/projects/:id/topics          # Add topic
DELETE /api/projects/:id/topics/:topicId # Delete topic

Content

GET    /api/projects/:id/posts           # List posts
GET    /api/projects/:id/posts/:postId   # Get post
POST   /api/projects/:id/posts/:postId/approve  # Approve
POST   /api/projects/:id/posts/:postId/reject   # Reject

Delivery

POST   /api/projects/:id/delivery/postgres      # Configure
POST   /api/projects/:id/delivery/postgres/test # Test connection