New in v0.10.0. Reusable AI pipeline templates for accelerated content creation workflows.
Pipeline Templates allow you to create, share, and install reusable AI content pipelines. Instead of configuring personas, stages, and variables from scratch for every brief, teams can install a pre-built template that handles the entire workflow.
The system includes 8 production-ready built-in templates, a community library with ratings and installs, template versioning, and plugin hooks for extending the library with custom template packs.
- Marketing teams — Reuse campaign templates across projects (Blog Post, Social Media, Landing Page)
- Product teams — Standardize e-commerce workflows (Product Descriptions)
- Agency teams — White-label templates for client work (Email Newsletter, Press Release)
- Technical writers — Consistent documentation templates (Technical Documentation)
- Content creators — Video production at scale (Video Script)
Numen ships with 8 production-ready templates covering common content workflows:
Slug: blog-post-pipeline
Complete blog post creation with outline, draft, SEO review, and editorial gate.
Slug: social-media-campaign
Generate platform-specific posts (Twitter, LinkedIn, Instagram) from a single brief.
Slug: product-description
Generate compelling product copy with feature bullets and SEO meta descriptions.
Slug: email-newsletter
Create full newsletters with subject line variants, body, and spam check.
Slug: press-release
Generate professional press releases in AP style with legal review gate.
Slug: landing-page
Craft high-converting landing page copy with headlines, hero, benefits, and CTAs.
Slug: technical-documentation
Generate developer-ready docs: overview, getting started, API reference, FAQ.
Slug: video-script
Create full video scripts with hooks, scene breakdown, narration, and pacing review.
{
"name": "Template Display Name",
"slug": "kebab-case-slug",
"description": "Short description of what the template does",
"category": "content|social|ecommerce|email|pr|marketing|technical|video",
"icon": "pencil|megaphone|cart|email|newspaper|rocket|books|film",
"schema_version": "1.0",
"author_name": "Creator Name",
"author_url": "https://example.com",
"is_published": true
}The definition field in PipelineTemplateVersion contains the full pipeline configuration:
{
"version": "1.0",
"personas": [
{
"ref": "unique_ref",
"name": "Display Name",
"system_prompt": "System prompt for the persona...",
"llm_provider": "openai|anthropic|azure-openai|together-ai",
"llm_model": "gpt-4o|claude-3-sonnet|...",
"voice_guidelines": "Brand voice and tone notes..."
}
],
"stages": [
{
"type": "ai_generate|ai_review|ai_transform|human_gate|auto_publish",
"name": "Stage Display Name",
"persona_ref": "reference_to_personas[*].ref",
"config": {
"prompt_template": "Prompt with {variables}...",
"instructions": "For human_gate and auto_publish stages"
},
"enabled": true
}
],
"settings": {
"auto_publish": false,
"review_required": true,
"max_retries": 3,
"timeout_seconds": 300
},
"variables": [
{
"key": "variable_key",
"type": "string|text|select|textarea",
"label": "Display Label",
"required": true,
"options": ["option1", "option2"]
}
]
}GET /api/v1/spaces/{space}/pipeline-templates
Query: page, per_page, category, published, sort
POST /api/v1/spaces/{space}/pipeline-templates
GET /api/v1/spaces/{space}/pipeline-templates/{template}
PATCH /api/v1/spaces/{space}/pipeline-templates/{template}
DELETE /api/v1/spaces/{space}/pipeline-templates/{template}
POST /api/v1/spaces/{space}/pipeline-templates/{template}/publish
POST /api/v1/spaces/{space}/pipeline-templates/{template}/unpublish
GET /api/v1/spaces/{space}/pipeline-templates/{template}/versions
POST /api/v1/spaces/{space}/pipeline-templates/{template}/versions
GET /api/v1/spaces/{space}/pipeline-templates/{template}/versions/{version}
POST /api/v1/spaces/{space}/pipeline-templates/installs/{version}
PATCH /api/v1/spaces/{space}/pipeline-templates/installs/{install}
DELETE /api/v1/spaces/{space}/pipeline-templates/installs/{install}
Rate Limited: 5 requests per minute per user
GET /api/v1/spaces/{space}/pipeline-templates/{template}/ratings
POST /api/v1/spaces/{space}/pipeline-templates/{template}/ratings
- Select Template — Browse templates by category, rating, or download count
- Review Definition — Display template metadata, ratings, definition (personas, stages, variables)
- Confirm Installation — Creates install record and Brief with template configuration
- Launch Pipeline — Users can immediately start briefs using the template
$hookRegistry = app(\App\Plugin\HookRegistry::class);
$hookRegistry->registerTemplateCategory([
'slug' => 'custom-category',
'label' => 'Custom Content Type',
'description' => 'Templates for custom content workflows',
'icon' => 'star',
]);$hookRegistry->registerTemplatePack([
'id' => 'my-plugin-templates',
'name' => 'My Plugin Templates',
'author' => 'Your Company',
'url' => 'https://example.com',
'templates' => [
[
'name' => 'Custom Template 1',
'slug' => 'custom-template-1',
'description' => 'Description...',
'category' => 'custom-category',
'icon' => 'star',
'schema_version' => '1.0',
'definition' => [
'version' => '1.0',
'personas' => [ /* ... */ ],
'stages' => [ /* ... */ ],
'variables' => [ /* ... */ ],
],
],
],
]);- Global (
space_id = null) — Available to all spaces (built-in, published templates) - Space-scoped (
space_id = <uuid>) — Private to a specific space
| Operation | Permission | Role |
|---|---|---|
| Create | templates.create |
Editor, Admin |
| Update | templates.update |
Editor, Admin |
| Publish | templates.publish |
Admin |
| Delete | templates.delete |
Admin |
| Install | templates.install |
Editor, Author |
| Rate | templates.rate |
Any authenticated user |
All template operations logged for compliance:
- Template creation/update/deletion
- Version publishing
- Template installation
- Template ratings
- Install template: 5 requests per minute
- Rating: 1 request per minute
- Template creation: 10 requests per minute