Auto-schedule your Notion social calendar to Buffer

Every Monday, Wednesday, and Friday morning, write per-platform captions, pair each Notion calendar row with a stock photo, and schedule it in Buffer.

Agentic Task
NotionPexelsBufferMarketingContent GenerationData Sync

Every Monday, Wednesday, and Friday at 9am ET, fill out and schedule the upcoming posts in my Notion social calendar.

Step 1. In Notion, query the data source for my "Social Calendar" database. Filter to rows where Status = "Needs scheduling" AND Publish Date is within the next 7 days.

Step 2. For each row, read the topic and the list of target channels (any combination of LinkedIn, Instagram, and Twitter/X).

Step 3. For each target channel, draft a platform-specific caption tuned to that channel's character limit and tone:

• LinkedIn: professional, 1 to 3 short paragraphs, up to 3000 characters.

• Instagram: visual-first and conversational, under 2200 characters, with 5 to 10 relevant hashtags.

• Twitter/X: punchy and standalone, under 280 characters, at most 1 to 2 hashtags.

Step 4. Call Pexels Search Photos for a portrait or square image that matches the row's topic. Pick the best match. Capture the photographer's name and the Pexels photo URL so it can be credited per Pexels' attribution rules ("Photo by {photographer} on Pexels").

Step 5. For each target channel on the row, call Buffer Create Post with: the platform-specific caption text (with the photographer credit appended), the Pexels image URL as the media asset, and scheduledAt set to the row's Publish Date.

Step 6. After every Buffer post for that row is created, call Notion Update a Page on the row to (a) write the returned Buffer post IDs into a "Buffer post IDs" property and (b) flip Status to "Scheduled".

Error handling: If Pexels returns no good match, retry once with a broader search term derived from the topic; if it is still empty, schedule the Buffer post as text only. If Buffer Create Post fails for any channel (e.g. daily posting limit hit, channel disconnected), write the error message into a "Last error" property on the Notion row and leave Status as "Needs scheduling" so I can retry on the next run.

Do not publish anything immediately. Every Buffer post should be created in scheduled mode at the row's Publish Date.

Additional information

What does this prompt do?
  • Reads the upcoming posts in your Notion social calendar that still need scheduling.
  • Writes a tailored caption for each channel, with the right length and tone for LinkedIn, Instagram, and X.
  • Finds a matching free stock photo from Pexels and includes the required photographer credit.
  • Schedules every post in Buffer at the publish time on your Notion row, then flips the row to Scheduled.
What do I need to use this?
  • A Notion workspace with a social calendar database (topic, target channels, publish date, status).
  • A free Pexels account for stock photos.
  • A Buffer account with your social channels (LinkedIn, Instagram, X, etc.) already connected.
How can I customize it?
  • Change which days and time of day the agent runs.
  • Add or remove target platforms (LinkedIn, Instagram, X, Facebook, TikTok, Threads, and more).
  • Tune the tone, hashtag count, or length guidelines per platform.
  • Rename or re-filter the status column (for example, only schedule rows marked Approved).

Frequently asked questions

Do I need a paid Buffer plan?
No. A free Buffer account works. Free accounts can create one API key, which is all this workflow needs.
What if I do not have a Pexels account yet?
Sign up at pexels.com and request an API key from their API page. It is free and usually approved instantly.
Can I review captions before they go out?
Yes. The agent only schedules posts in Buffer, it does not publish them immediately. You can also add a Draft status in Notion so the agent only touches rows you have approved.
Will this work if my Notion calendar uses different column names?
Yes. Tell Geni which Notion fields represent the topic, target channels, publish date, and status, and it will adapt.
What happens if Pexels has no good match for a topic?
The agent retries with a broader search term. If it still cannot find a match, it schedules the post as text only rather than skipping the row.

Stop hand-writing every caption in your social calendar.

Connect Notion, Pexels, and Buffer once. Geni fills your calendar with platform-specific captions and matching visuals three times a week.