51146da746
* feat: add headless CMS reference and integration guides Add CMS selection guide, content modeling patterns, and editorial workflow reference for marketers. Add integration guides for Sanity (GROQ API), Contentful (CDA/CMA), and Strapi (v5 REST). Register all three in REGISTRY.md and link from content-strategy skill. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix: address review feedback on headless CMS guides - Use {curly_brace} placeholder convention for Strapi relation example - Add note that Contentful CMA create uses PUT with client-generated ID - Add URL-encoding note for Sanity GROQ query parameter - Switch Sanity mutation example from createOrReplace to create (no _id needed) - Add Content-Type header to Contentful update entry example - Fix outdated "Assembly" product name to "Studio" for Contentful Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
161 lines
4.7 KiB
Markdown
161 lines
4.7 KiB
Markdown
# Contentful
|
|
|
|
Enterprise headless CMS with multi-locale support, two-API architecture, and composable content.
|
|
|
|
## Capabilities
|
|
|
|
| Integration | Available | Notes |
|
|
|-------------|-----------|-------|
|
|
| API | ✓ | Content Delivery API (read), Content Management API (write) |
|
|
| MCP | - | No official MCP server |
|
|
| CLI | ✓ | `contentful-cli` for spaces, content types, migrations |
|
|
| SDK | ✓ | `contentful` (delivery), `contentful-management` (management) |
|
|
|
|
## Authentication
|
|
|
|
- **Delivery API (CDA)**: `Authorization: Bearer {delivery_token}`
|
|
- Base URL: `https://cdn.contentful.com`
|
|
- Read-only, CDN-cached
|
|
- **Preview API (CPA)**: `Authorization: Bearer {preview_token}`
|
|
- Base URL: `https://preview.contentful.com`
|
|
- Read-only, returns draft content
|
|
- **Management API (CMA)**: `Authorization: Bearer {management_token}`
|
|
- Base URL: `https://api.contentful.com`
|
|
- Read/write, not cached
|
|
- **Tokens**: Create in Settings → API keys (delivery) or Settings → CMA tokens (management)
|
|
|
|
## Common Agent Operations
|
|
|
|
### Get entries (Delivery API)
|
|
|
|
```bash
|
|
GET https://cdn.contentful.com/spaces/{space_id}/environments/{environment}/entries?content_type=blogPost&limit=10
|
|
|
|
Authorization: Bearer {delivery_token}
|
|
```
|
|
|
|
### Get single entry
|
|
|
|
```bash
|
|
GET https://cdn.contentful.com/spaces/{space_id}/environments/{environment}/entries/{entry_id}
|
|
|
|
Authorization: Bearer {delivery_token}
|
|
```
|
|
|
|
### Search and filter
|
|
|
|
```bash
|
|
# By field value
|
|
GET https://cdn.contentful.com/spaces/{space_id}/environments/{environment}/entries?content_type=blogPost&fields.slug=my-post
|
|
|
|
# Full-text search
|
|
GET https://cdn.contentful.com/spaces/{space_id}/environments/{environment}/entries?query=marketing+strategy
|
|
|
|
# By date range
|
|
GET https://cdn.contentful.com/spaces/{space_id}/environments/{environment}/entries?content_type=blogPost&fields.publishDate[gte]=2024-01-01
|
|
```
|
|
|
|
### Create entry (Management API)
|
|
|
|
CMA uses PUT with a client-generated `entry_id`. To auto-generate, use POST without an ID in the path.
|
|
|
|
```bash
|
|
PUT https://api.contentful.com/spaces/{space_id}/environments/{environment}/entries/{entry_id}
|
|
Content-Type: application/vnd.contentful.management.v1+json
|
|
X-Contentful-Content-Type: blogPost
|
|
Authorization: Bearer {management_token}
|
|
|
|
{
|
|
"fields": {
|
|
"title": {"en-US": "New Post"},
|
|
"slug": {"en-US": "new-post"},
|
|
"body": {"en-US": "Post content here"}
|
|
}
|
|
}
|
|
```
|
|
|
|
### Update entry
|
|
|
|
```bash
|
|
PUT https://api.contentful.com/spaces/{space_id}/environments/{environment}/entries/{entry_id}
|
|
Content-Type: application/vnd.contentful.management.v1+json
|
|
X-Contentful-Version: {current_version}
|
|
Authorization: Bearer {management_token}
|
|
|
|
{
|
|
"fields": {
|
|
"title": {"en-US": "Updated Title"}
|
|
}
|
|
}
|
|
```
|
|
|
|
### Publish entry
|
|
|
|
```bash
|
|
PUT https://api.contentful.com/spaces/{space_id}/environments/{environment}/entries/{entry_id}/published
|
|
X-Contentful-Version: {current_version}
|
|
Authorization: Bearer {management_token}
|
|
```
|
|
|
|
### Unpublish entry
|
|
|
|
```bash
|
|
DELETE https://api.contentful.com/spaces/{space_id}/environments/{environment}/entries/{entry_id}/published
|
|
X-Contentful-Version: {current_version}
|
|
Authorization: Bearer {management_token}
|
|
```
|
|
|
|
## CLI Commands
|
|
|
|
```bash
|
|
# Login
|
|
contentful login
|
|
|
|
# List spaces
|
|
contentful space list
|
|
|
|
# Export space content
|
|
contentful space export --space-id {space_id}
|
|
|
|
# Import content
|
|
contentful space import --space-id {space_id} --content-file export.json
|
|
|
|
# Create migration
|
|
contentful space migration --space-id {space_id} migration.js
|
|
|
|
# List content types
|
|
contentful content-type list --space-id {space_id}
|
|
```
|
|
|
|
## Key Objects
|
|
|
|
- **Space** — Top-level container for content (one per project)
|
|
- **Environment** — Isolated content branch (`master`, `staging`, etc.)
|
|
- **Content Type** — Schema definition with fields and validations
|
|
- **Entry** — Content item of a specific content type
|
|
- **Asset** — Media file (image, video, document)
|
|
- **Locale** — Language/region variant (e.g., `en-US`, `de-DE`)
|
|
|
|
## When to Use
|
|
|
|
- Multi-locale marketing content (global sites)
|
|
- Enterprise content operations with approval workflows
|
|
- Composable content architecture
|
|
- Teams needing established vendor support and SLAs
|
|
- Content reuse across multiple channels
|
|
|
|
## Rate Limits
|
|
|
|
Rate limits are plan-dependent. Check `X-Contentful-RateLimit-Second-Limit` response header for your actual limits.
|
|
|
|
- Delivery API (CDA): Varies by plan (typically high throughput)
|
|
- Preview API (CPA): Lower than CDA (varies by plan)
|
|
- Management API (CMA): ~10 requests per second (default)
|
|
- See [Contentful technical limits](https://www.contentful.com/developers/docs/technical-limits/) for current values
|
|
|
|
## Relevant Skills
|
|
|
|
- content-strategy (CMS selection, content modeling)
|
|
- programmatic-seo (CMS as data source for generated pages)
|
|
- site-architecture (multi-locale URL structure)
|