Notion Integration
CollaborationAutomate image processing in Notion databases
Database Triggers
Process on new entries
Batch Processing
Handle multiple images
Auto Captions
AI-generated descriptions
Notion API Integration
Process Database Images
// Process images in a Notion database
const { Client } = require('@notionhq/client');
const notion = new Client({ auth: 'YOUR_NOTION_TOKEN' });
const BUTTERFLY_API_KEY = 'YOUR_BUTTERFLY_API_KEY';
async function processNotionDatabase(databaseId) {
// Query database for items with images
const response = await notion.databases.query({
database_id: databaseId,
filter: {
property: 'Image',
files: { is_not_empty: true }
}
});
for (const page of response.results) {
const imageFile = page.properties.Image.files[0];
const imageUrl = imageFile.file?.url || imageFile.external?.url;
// Enhance image with ButterflyAPI
const enhanced = await fetch('https://butterflyapi.com/api/v1/run', {
method: 'POST',
headers: {
'Authorization': `Bearer ${BUTTERFLY_API_KEY}`,
'Content-Type': 'application/json'
},
body: JSON.stringify({
api: 'image-enhance',
input: { image_url: imageUrl, scale: 2 }
})
}).then(r => r.json());
// Generate caption
const caption = await fetch('https://butterflyapi.com/api/v1/run', {
method: 'POST',
headers: {
'Authorization': `Bearer ${BUTTERFLY_API_KEY}`,
'Content-Type': 'application/json'
},
body: JSON.stringify({
api: 'image-caption',
input: { image_url: imageUrl }
})
}).then(r => r.json());
// Update Notion page
await notion.pages.update({
page_id: page.id,
properties: {
'Enhanced Image': {
files: [{ type: 'external', external: { url: enhanced.output.image_url } }]
},
'Caption': {
rich_text: [{ text: { content: caption.output.caption } }]
}
}
});
}
}Use Cases
- 1.Product Catalogs - Automatically enhance and caption product images in database
- 2.Content Libraries - Generate alt text for accessibility
- 3.Asset Management - Remove backgrounds for consistent presentation
- 4.Social Media Planning - Create cartoon versions for campaigns