šØāš³ Content Cookbook
Ready-to-use recipes for common content curation workflows using curate.fun plugins ā”
š Introductionā
This cookbook provides tested plugin combinations ("recipes") that you can copy and adapt for your own curation needs. Each recipe includes:
- A description of what the workflow accomplishes
- The complete configuration code
- Explanations of key components
- Tips for customization
š§© Recipe Structureā
Most recipes follow this general pattern:
- Source Data: The original content from platforms like Twitter
- Data Mapping: Extracting and structuring relevant information
- Content Enhancement: Improving content with AI or other transformations
- Channel Formatting: Preparing content for specific platforms
- Distribution: Sending the formatted content to destination channels
The workflow follows a linear path: Source Data ā Data Mapping ā Content Enhancement ā Channel Formatting ā Distribution
š„ Popular Recipesā
AI-Enhanced News Flashā
This recipe takes tweets and transforms them into professional news flashes with AI-generated titles and summaries.
"transform": [
{
"plugin": "@curatedotfun/object-transform",
"config": {
"mappings": {
"source": "https://x.com/{{username}}/status/{{tweetId}}",
"content": "{{content}}",
"author": "{{username}}",
"notes": "{{curator.notes}}",
"submittedAt": "{{submittedAt}}"
}
}
},
{
"plugin": "@curatedotfun/ai-transform",
"config": {
"prompt": "Summarize the content into a concise news flash, incorporating relevant details from the curator's notes. Maintain a neutral, third-person tone.",
"apiKey": "{OPENROUTER_API_KEY}",
"schema": {
"title": {
"type": "string",
"description": "Title derived from summary of content"
},
"summary": {
"type": "string",
"description": "Summary of content influenced by curator notes"
}
}
}
}
],
"distribute": [
{
"transform": [
{
"plugin": "@curatedotfun/simple-transform",
"config": {
"template": "š· {{feedName}}: *{{title}}*\n\n{{summary}}\n\nš¤ Source [@{{author}}](https://x.com/{{author}})_\nš [Read More](<{{source}}>)"
}
}
],
"plugin": "@curatedotfun/telegram",
"config": {
"botToken": "{TELEGRAM_BOT_TOKEN}",
"channelId": "@your_channel"
}
}
]
Key Components:
- Object Transform: Maps tweet data into a structured format
- AI Transform: Generates a title and summary using AI
- Simple Transform: Formats the content for Telegram with emojis and markdown
- Telegram Distribution: Sends the formatted content to a Telegram channel
Customization Tips:
- Adjust the AI prompt to match your content style
- Modify the template to include different emojis or formatting
- Add additional distribution channels with their own formatting
Multi-Platform Distributionā
This recipe distributes the same content to multiple platforms with platform-specific formatting.
"distribute": [
{
"transform": [
{
"plugin": "@curatedotfun/simple-transform",
"config": {
"template": "š¢ {{feedName}}: *{{title}}*\n\n{{summary}}\n\nš¤ Source [@{{author}}](https://x.com/{{author}})_\nš [Read More](<{{source}}>)"
}
}
],
"plugin": "@curatedotfun/telegram",
"config": {
"botToken": "{TELEGRAM_BOT_TOKEN}",
"channelId": "-1001941128087",
"messageThreadId": "11535"
}
},
{
"transform": [
{
"plugin": "@curatedotfun/simple-transform",
"config": {
"template": "š¢ {{feedName}}: *{{title}}*\n\n{{summary}}\n\nš¤ Source [@{{author}}](https://x.com/{{author}})_\nš [Read More](<{{source}}>)"
}
}
],
"plugin": "@curatedotfun/near-social",
"config": {
"accountId": "your-account.near",
"privateKey": "{NEAR_PRIVATE_KEY}",
"networkId": "mainnet"
}
},
{
"transform": [
{
"plugin": "@curatedotfun/object-transform",
"config": {
"mappings": {
"title": "{{title}}",
"content": "<h2>{{title}}</h2><p>{{summary}}</p>",
"description": "{{summary}}",
"link": "{{source}}",
"publishedAt": "{{createdAt}}",
"author": {
"name": "{{username}}",
"link": "https://x.com/{{author}}"
},
"categories": ["{{feedName}}", "{{tags}}"],
"source": {
"url": "{{source}}",
"title": "twitter"
}
}
}
}
],
"plugin": "@curatedotfun/rss",
"config": {
"serviceUrl": "http://localhost:4001",
"apiSecret": "{API_SECRET}"
}
}
]
Key Components:
- Simple Transform: Creates human-readable content for social platforms
- Object Transform: Maps data to RSS-specific format
- Multiple Distribution Plugins: Sends to Telegram, NEAR Social, and RSS
Customization Tips:
- Add or remove distribution channels as needed
- Customize each channel's formatting independently
- Use different templates for different platforms
Notion Database Integrationā
This recipe sends curated content to a Notion database with structured properties.
"distribute": [
{
"transform": [
{
"plugin": "@curatedotfun/object-transform",
"config": {
"mappings": {
"tweetId": "{{title}}",
"userId": "{{source}}",
"submittedAt": "{{submittedAt}}"
}
}
}
],
"plugin": "@curatedotfun/notion",
"config": {
"token": "{NOTION_TOKEN}",
"databaseId": "your-database-id",
"aiToken": "{OPENROUTER_API_KEY}"
}
}
]
Key Components:
- Object Transform: Maps content to Notion database properties
- Notion Plugin: Integrates with a Notion database
Customization Tips:
- Adjust mappings to match your Notion database structure
- Add additional properties like tags, categories, or status
š Transformation Chainsā
Two-Step AI Processingā
This recipe shows how to chain multiple AI transformations for more sophisticated content processing.
"transform": [
{
"plugin": "@curatedotfun/object-transform",
"config": {
"mappings": {
"rawContent": "{{content}}",
"curatorNotes": "{{curator.notes}}"
}
}
},
{
"plugin": "@curatedotfun/ai-transform",
"config": {
"prompt": "Extract the key facts from this content.",
"apiKey": "{OPENROUTER_API_KEY}",
"schema": {
"keyFacts": {
"type": "array",
"items": {
"type": "string"
},
"description": "List of key facts from the content"
}
}
}
},
{
"plugin": "@curatedotfun/ai-transform",
"config": {
"prompt": "Create a news article based on these key facts and curator notes.",
"apiKey": "{OPENROUTER_API_KEY}",
"schema": {
"title": {
"type": "string",
"description": "Article title"
},
"article": {
"type": "string",
"description": "Full article text"
}
}
}
}
]
Key Components:
- Initial Data Mapping: Prepares raw content
- First AI Pass: Extracts key facts
- Second AI Pass: Creates a complete article
Customization Tips:
- Adjust prompts for different content types
- Modify the schema to extract different information
- Add more transformation steps for complex workflows
š Feed-Specific Recipesā
Crypto News Feedā
This recipe is optimized for cryptocurrency news curation.
"transform": [
{
"plugin": "@curatedotfun/object-transform",
"config": {
"mappings": {
"source": "https://x.com/{{username}}/status/{{tweetId}}",
"content": "{{content}}",
"author": "{{username}}",
"notes": "{{curator.notes}}",
"submittedAt": "{{submittedAt}}"
}
}
},
{
"plugin": "@curatedotfun/ai-transform",
"config": {
"prompt": "Summarize this cryptocurrency news into a concise update. Include any price information, project developments, or market trends mentioned.",
"apiKey": "{OPENROUTER_API_KEY}",
"schema": {
"title": {
"type": "string",
"description": "Title derived from summary of content"
},
"summary": {
"type": "string",
"description": "Summary of content influenced by curator notes"
}
}
}
}
],
"distribute": [
{
"transform": [
{
"plugin": "@curatedotfun/simple-transform",
"config": {
"template": "š° Crypto: *{{title}}*\n\n{{summary}}\n\nš¤ Source [@{{author}}](https://x.com/{{author}})_\nš [Read More](<{{source}}>)"
}
}
],
"plugin": "@curatedotfun/telegram",
"config": {
"botToken": "{TELEGRAM_BOT_TOKEN}",
"channelId": "@cryptonews"
}
}
]
Tech Updates Feedā
This recipe is designed for technology news and updates.
"transform": [
{
"plugin": "@curatedotfun/object-transform",
"config": {
"mappings": {
"source": "https://x.com/{{username}}/status/{{tweetId}}",
"content": "{{content}}",
"author": "{{username}}",
"notes": "{{curator.notes}}",
"submittedAt": "{{submittedAt}}"
}
}
},
{
"plugin": "@curatedotfun/ai-transform",
"config": {
"prompt": "Summarize this technology news into a concise update. Focus on innovations, product launches, or industry trends.",
"apiKey": "{OPENROUTER_API_KEY}",
"schema": {
"title": {
"type": "string",
"description": "Title derived from summary of content"
},
"summary": {
"type": "string",
"description": "Summary of content influenced by curator notes"
}
}
}
}
],
"distribute": [
{
"transform": [
{
"plugin": "@curatedotfun/simple-transform",
"config": {
"template": "š¤ Tech: *{{title}}*\n\n{{summary}}\n\nš¤ Source [@{{author}}](https://x.com/{{author}})_\nš [Read More](<{{source}}>)"
}
}
],
"plugin": "@curatedotfun/telegram",
"config": {
"botToken": "{TELEGRAM_BOT_TOKEN}",
"channelId": "@technews"
}
}
]
š Scheduled Content Recipesā
Daily Recapā
This recipe generates a daily summary of all curated content.
"outputs": {
"recap": {
"enabled": true,
"schedule": "0 18 * * *", // Daily at 6 PM
"transform": [
{
"plugin": "@curatedotfun/ai-transform",
"config": {
"prompt": "Create a summary of today's top content, organizing it by topic and highlighting the most important developments.",
"apiKey": "{OPENROUTER_API_KEY}",
"schema": {
"title": {
"type": "string",
"description": "Recap title"
},
"summary": {
"type": "string",
"description": "Full recap text"
}
}
}
}
],
"distribute": [
{
"transform": [
{
"plugin": "@curatedotfun/simple-transform",
"config": {
"template": "š
Daily Recap: *{{title}}*\n\n{{summary}}"
}
}
],
"plugin": "@curatedotfun/telegram",
"config": {
"botToken": "{TELEGRAM_BOT_TOKEN}",
"channelId": "@your_channel"
}
}
]
}
}
š§ Advanced Techniquesā
Conditional Transformationsā
While curate.fun doesn't directly support conditional logic, you can achieve similar results by using the AI transform plugin with specific prompts:
"plugin": "@curatedotfun/ai-transform",
"config": {
"prompt": "If the content mentions a product launch, focus on the product features. If it mentions funding, focus on the investment details. Otherwise, provide a general summary.",
"apiKey": "{OPENROUTER_API_KEY}"
}
Content Categorizationā
Use AI to automatically categorize content:
"plugin": "@curatedotfun/ai-transform",
"config": {
"prompt": "Analyze this content and categorize it.",
"apiKey": "{OPENROUTER_API_KEY}",
"schema": {
"category": {
"type": "string",
"enum": ["News", "Tutorial", "Opinion", "Announcement", "Other"],
"description": "Content category"
},
"tags": {
"type": "array",
"items": {
"type": "string"
},
"description": "Relevant tags"
}
}
}
š Contributing Recipesā
Have a great recipe to share? We'd love to add it to the cookbook! Submit your recipes to the curate.fun GitHub repository.