Payload AI Plugin

June 1, 2026 ยท View on GitHub

Payload AI Plugin

Transform content creation with intelligent automation โ€” your models, your way

Supported AI Providers


๐Ÿš€ What is this?

The Payload AI Plugin is your secret weapon for turbocharged content creation. It seamlessly integrates cutting-edge AI capabilities directly into Payload CMS, turning your content workflow from tedious to tremendous.

๐ŸŽฅ See It in Action


โš ๏ธ Beta Notice

This plugin is actively evolving. We're constantly shipping improvements and new features. Tested with Payload v3.38.0.

Quick Start Tip: Try it out with Payload's website template for the smoothest experience.


โœจ Features

๐Ÿ“ Text & RichText Fields

Content Generation Magic:

  • โœ… Compose - Generate content from scratch
  • โœ… Proofread - Polish your prose (Beta)
  • โœ… Translate - Break language barriers
  • โœ… Rephrase - Find better ways to say it (Beta)
  • ๐Ÿ”œ Expand - Elaborate on ideas
  • ๐Ÿ”œ Summarize - Distill the essence
  • ๐Ÿ”œ Simplify - Make complex things clear

๐ŸŽจ Upload Fields

  • ๐ŸŽ™๏ธ Voice Generation - Powered by ElevenLabs & OpenAI
  • ๐Ÿ–ผ๏ธ Image Generation - Powered by OpenAI (DALL-E & GPT-Image-1)

๐Ÿ”ง Power User Features

  • ๐Ÿ”Œ Bring Your Own Model - Not limited to our defaults
  • ๐ŸŽ›๏ธ Field-Level Prompts - Customize AI behavior per field
  • ๐Ÿ” Access Control - Lock down who can use AI features
  • ๐Ÿง  Prompt Editor - Fine-tune AI instructions
  • ๐ŸŒ i18n Support - Works with your multilingual setup
  • ๐ŸŽจ Custom Components - Extend with your own UI

๐Ÿ”œ Coming Soon

  • ๐Ÿ“Š Document Analyzer
  • โœ… Fact Checking
  • ๐Ÿ”„ Automated Workflows
  • ๐Ÿ’ก Editor Suggestions
  • ๐Ÿ’ฌ AI Chat Assistant

๐Ÿ“ฆ Installation

pnpm add @ai-stack/payloadcms

That's it! Now let's configure it.


๐Ÿ› ๏ธ Quick Setup

Step 1: Configure the Plugin

Add to src/payload.config.ts:

import { payloadAiPlugin } from '@ai-stack/payloadcms'

export default buildConfig({
  plugins: [
    payloadAiPlugin({
      collections: {
        [Posts.slug]: true,
      },
      debugging: false,
    }),
  ],
  // ... rest of your config
})

Step 2: Enable AI in Your Fields

Add to your RichText fields (e.g., src/collections/Posts/index.ts):

import { PayloadAiPluginLexicalEditorFeature } from '@ai-stack/payloadcms'

fields: [
  {
    name: 'content',
    type: 'richText',
    editor: lexicalEditor({
      features: ({ rootFeatures }) => {
        return [
          HeadingFeature({ enabledHeadingSizes: ['h1', 'h2', 'h3', 'h4'] }),
          // Add this line:
          PayloadAiPluginLexicalEditorFeature(),
        ]
      },
    }),
  },
]

Step 3: Add Your API Keys

Create a .env file in your project root. Add the keys for the providers you want to use:

# Text Generation - Choose your provider(s)
OPENAI_API_KEY=your-openai-api-key           # OpenAI models (GPT-4, etc.)
ANTHROPIC_API_KEY=your-anthropic-api-key     # Claude models
GOOGLE_GENERATIVE_AI_API_KEY=your-google-key # Gemini models
MINIMAX_API_KEY=your-minimax-api-key         # MiniMax M3 / M2.7 models

# Image Generation - Choose your provider(s)
OPENAI_API_KEY=your-openai-api-key           # DALL-E (uses same key as above)
# OPENAI_ORG_ID=your-org-id                  # Required only for GPT-Image-1 model
GOOGLE_GENERATIVE_AI_API_KEY=your-google-key # Imagen (uses same key as above)

# Audio/Voice Generation - Choose your provider(s)
ELEVENLABS_API_KEY=your-elevenlabs-api-key   # ElevenLabs voices
OPENAI_API_KEY=your-openai-api-key           # OpenAI TTS (uses same key as above)

# Optional: Use custom OpenAI-compatible endpoint
# OPENAI_BASE_URL=https://api.openai.com/v1

You only need the keys for the providers you plan to use. Mix and match based on your preferences!

Important: Restart your server after updating .env or plugin settings!

You may also need to regenerate the import map:

payload generate:importmap

โš™๏ธ Advanced Configuration

๐Ÿ” Access Control & Multi-Tenant Setup
import { payloadAiPlugin } from '@ai-stack/payloadcms'

export default buildConfig({
  plugins: [
    payloadAiPlugin({
      collections: {
        [Posts.slug]: true,
      },
      
      // Enable AI for globals too
      globals: {
        [Home.slug]: true,
      },

      // Development helpers
      debugging: false,
      disableSponsorMessage: false,
      generatePromptOnInit: process.env.NODE_ENV !== 'production',

      // Specify media collection for GPT-Image-1
      uploadCollectionSlug: "media",

      // Lock down AI features
      access: {
        generate: ({ req }) => req.user?.role === 'admin',
        settings: ({ req }) => req.user?.role === 'admin',
      },

      // Customize language options
      options: {
        enabledLanguages: ["en-US", "zh-SG", "zh-CN", "en"],
      },

      // Reference additional fields in prompts
      promptFields: [
        {
          name: 'url',
          collections: ['images'],
        },
        {
          name: 'markdown',
          async getter(doc, {collection}) {
            return docToMarkdown(collection, doc)
          }
        }
      ],

      // Control initial prompt generation
      seedPrompts: ({path}) => {
        if (path.endsWith('.meta.description')) {
          return {
            data: {
              prompt: 'Generate SEO-friendly meta description: {{markdown}}',
            }
          }
        }
        if (path.endsWith('.slug')) return false // Disable for slugs
        return undefined // Use defaults
      },

      // Custom media upload (useful for multi-tenant)
      mediaUpload: async (result, { request, collection }) => {
        return request.payload.create({
          collection,
          data: result.data,
          file: result.file,
        })
      },
    }),
  ],
})
๐ŸŽจ Custom Components & Fields

Custom fields don't automatically inherit AI capabilities. If your AI-enabled fields don't show Compose settings, manually add this component path:

@ai-stack/payloadcms/fields#ComposeField

Debug Tip: Enable debugging: true in your plugin config to see which fields have AI enabled.


๐Ÿ“š Documentation

Need more details? Check out the Complete Setup Guide for:

  • Custom model configuration
  • Advanced prompt engineering
  • Field-specific customization
  • Troubleshooting tips

๐Ÿค Support This Project

Built with โค๏ธ in my free time. If this plugin saves you hours of work, consider fueling future development!

Buy Me A Coffee

Every coffee keeps the AI models running and new features shipping. Thank you! ๐Ÿ™


๐Ÿ‘ฅ Contributing

We love contributors! Whether you're fixing typos, suggesting features, or building new capabilities, all contributions are welcome.

Ways to Contribute

  • ๐Ÿ› Report bugs
  • ๐Ÿ’ก Suggest features
  • ๐Ÿ“– Improve documentation
  • ๐Ÿ”ง Submit pull requests

Join the conversation on Payload's Discord and let's build something amazing together!

Local Development

Want to hack on the plugin? Here's how:

Prerequisites

  • Node.js (version in .nvmrc)
  • pnpm
  • Database connection (Postgres or MongoDB)
  • Optional: AI provider API keys

Setup

# 1. Install dependencies
pnpm install

# 2. Set up environment
cp dev/.env.example dev/.env
# Edit dev/.env with your DATABASE_URI, PAYLOAD_SECRET, and API keys

# 3. Start development server
pnpm dev
# Admin UI available at http://localhost:3000

# 4. Generate types/importmap if needed
pnpm generate:importmap
pnpm generate:types

Development Workflow

  • Plugin source: src/
  • Test app: dev/
  • Edit files in src/ and refresh to see changes

Testing & Quality

pnpm test                    # Run all tests
pnpm lint                    # ESLint
pnpm prettier --write .      # Format code
pnpm build                   # Build plugin

Test in Another Project

pnpm pack
# In your other project:
pnpm add /path/to/ai-plugin-*.tgz

Project Structure

โ”œโ”€โ”€ src/              # Plugin source code
โ”œโ”€โ”€ dev/              # Test Payload app
โ”‚   โ”œโ”€โ”€ int.spec.ts   # Integration tests
โ”‚   โ””โ”€โ”€ e2e.spec.ts   # E2E tests
โ””โ”€โ”€ README.md         # You are here!

Made with โค๏ธ and โ˜• by the community

Star on GitHub โ€ข Join Discord โ€ข Read the Guide