What This System Does
The Social Media Content Pipeline eliminates the manual work of creating daily social media content. Every morning, it scans travel industry news, selects the most compelling stories, researches them in depth, generates professional imagery, and writes tailored posts for each platform — all before you finish your first cup of coffee.
Your role is editorial: review the stories that appear in Slack, and approve the ones you like with a single emoji reaction. Everything else is automatic.
- Every morning at 7 AM, the system generates 5 fully-written stories with images
- Stories appear in Slack as individual messages in
#content-review - You react with ✔️ to approve a story
- Posts go to Buffer (for scheduled publishing) and Nexus (for records)
- A 🚀 emoji confirms the story was queued successfully
Architecture at a Glance
The system runs as two connected workflows in n8n (our automation platform):
Social Media Content Pipeline
Runs on a daily schedule. Discovers news, selects stories, researches topics, generates images, writes posts, and delivers everything to Slack for review.
Emoji Approve > Buffer Publish
Event-driven. Listens for emoji reactions on Slack messages. When you approve a story, it extracts the posts, sends them to Buffer for scheduling, saves them to Nexus, and confirms with a rocket emoji.
Technology Stack
| Component | Technology | Purpose |
|---|---|---|
| Automation | n8n | Orchestrates the entire pipeline |
| AI Writing | Claude Sonnet | Story selection and post composition |
| AI Filtering | Claude Haiku | Headline relevance scoring |
| Research | Perplexity | Deep-dive story research |
| Stock Photos | Unsplash | Professional destination photography |
| AI Images | Replicate FLUX | Custom conceptual imagery |
| Trends | Google Trends | Trending travel topics |
| Review | Slack | Story delivery and approval interface |
| Publishing | Buffer | Scheduled multi-platform posting |
| Records | Nexus CRM | Post archival and analytics |
Platform Strategy
Each platform gets a uniquely tailored post — not just truncated copies. The AI understands the voice, audience, and rules for each channel.
Shane's professional voice. Industry analysis, expert insights, thought leadership. Ends with a Slack Connect invitation. No hard sell.
Facebook Group
"Luxury Eco-Adventure Travel" group. Pure value — no self-promotion, no CTAs, no mentions of Travel Tamers. Knowledgeable member sharing insights.
Visual-first, emotional, destination-focused. Short paragraphs with heavy hashtags (10-15). Ends with a DM call-to-action.
X (Twitter)
Punchy and concise. Lead with a key stat or insight. 2-3 hashtags max. Designed for engagement and retweets.
Important: The Facebook group has strict no-promotion rules. Posts are written as a knowledgeable travel enthusiast sharing insights with peers — never as a brand. Questions are encouraged to spark discussion.
Stage 1: Daily Content Generation
Every morning at 7:00 AM Eastern, the pipeline kicks off automatically. Here's what happens behind the scenes, step by step.
Step 1: News Aggregation
The pipeline starts by pulling all messages from the #feed-travel-news Slack channel.
This channel is populated by RSS feeds and curated news sources covering the luxury travel industry.
Typically, 100-200 headlines arrive overnight. The system collects them all and extracts the headline text, stripping URLs and formatting.
Step 2: AI Filtering & Story Selection
Google Trends Context
Fetches current trending travel topics to inform story selection.
Google Trends via PlaywrightClaude Haiku: Headline Filtering
A fast AI pass that scores all 100-200 headlines for relevance, filtering down to ~30 candidates. Factors in trending topics and premium travel focus.
Claude Haiku 4.5Claude Sonnet: Story Selection
A deeper AI analysis that selects the top 5 most compelling stories. Considers newsworthiness, brand alignment, audience interest, and diversity of topics.
Claude SonnetQuality over quantity: If the AI can't find 5 compelling stories, the pipeline publishes fewer rather than filling with low-quality content.
Step 3: Research & Image Acquisition
Once the top 5 stories are selected, three things happen in parallel for each story:
Perplexity Research
Each story gets a deep research pass — current facts, industry context, traveler perspectives, pricing trends. This becomes the factual backbone of each post.
Perplexity SonarUnsplash: Stock Photography (2 per story)
Professional destination and travel photography. These high-quality photos build trust and credibility. The system fetches 2 photos per story for variety.
Unsplash APIFLUX: AI-Generated Imagery (1 per story)
Custom conceptual images that complement the stock photos — artistic interpretations, mood pieces, or abstract travel concepts that no stock photo could capture.
Replicate FLUX SchnellImage ratio: Each story gets approximately 2 Unsplash photos and 1 FLUX image — a ~2:1 ratio that prioritizes real photography for trust while adding AI creativity.
Step 4: Post Composition
Claude Sonnet takes the research, images, and story context and writes 4 platform-specific posts per story. Each post is crafted for its platform's unique voice, audience, and format — not just truncated from a single draft.
| Platform | Voice | Key Rules |
|---|---|---|
| Shane's professional voice | Expert analysis, industry insights, ends with Slack Connect CTA | |
| Facebook Group | Knowledgeable enthusiast | Zero self-promotion, no brand mentions, spark discussion |
| Visual & emotional | Short paragraphs, DM CTA, 10-15 hashtags | |
| X | Punchy & concise | Key stat + insight, 2-3 hashtags, under 280 chars |
Step 5: Slack Delivery
The finished stories are posted to the #content-review Slack channel as
5 separate messages — one per story. Each message includes:
- Story header with the headline
- Hero image (Unsplash photo, prominent at top)
- Key facts bullet list from research
- All 4 platform posts (LinkedIn, Instagram, Facebook, X)
- Additional images (second Unsplash + FLUX image)
Timing: The full pipeline typically completes in 3-5 minutes. The longest step is FLUX image generation (12-second rate limit between images). Stories arrive in your channel by approximately 7:05 AM.
Stage 2: Review & Publish
This is where you come in. The stories are waiting in Slack. Your job is to review them and decide which ones go out.
Reviewing Stories
Open #content-review in Slack. You'll see 5 individual story messages. For each one, consider:
- Is the story relevant? Does it align with our brand and audience?
- Are the facts accurate? Check key claims against the research.
- Is the tone right? LinkedIn should feel expert, Facebook should feel conversational (not promotional), Instagram should feel inspiring.
- Are the images appropriate? Do they complement the story?
- Is the Facebook post group-safe? Zero brand mentions, zero self-promotion.
Approving a Story
To approve a story for publishing, simply react to the Slack message with the heavy check mark emoji ✔️.
What happens after you approve
Posts extracted from Slack blocks
The system reads the approved message and extracts each platform's post text and all images.
Queued in Buffer
Each platform post is sent to Buffer with all images attached. LinkedIn is auto-truncated to 1,248 characters. Instagram posts include images (required by the platform).
Buffer GraphQL APISaved to Nexus
All 4 platform posts are saved to the Nexus social_posts table with images, headline, and source tracking.
Nexus CRM APIRocket emoji confirmation
A 🚀 emoji appears on the message, confirming everything was queued successfully.
Requesting a Rewrite
If a story's posts aren't quite right but the topic is good, you can request a rewrite instead of approving.
After the rewrite appears as a thread reply, you can review the new version. If you like it, approve the original message with ✔️ — the system will pick up the latest content.
Buffer & Nexus
Approved stories flow to two destinations:
Buffer
Posts are added to your Buffer queue with "automatic" scheduling — Buffer determines the optimal time to publish based on your audience. Each platform (Facebook, LinkedIn, Instagram) gets its own post with all images attached. You can review and adjust timing in the Buffer dashboard.
Nexus CRM
Every approved post is saved to the social_posts table in Nexus with platform, content, images, story headline, and source tracking. This creates a complete archive of all published content and enables future engagement analytics.
Emoji Reference
Quick reference for all emoji interactions in the system:
| Emoji | Action | Who | Result |
|---|---|---|---|
| ✔️ | Approve | You | Posts sent to Buffer + Nexus |
| ❌ | Request Rewrite | You | Claude rewrites with fresh angle, posts as thread reply |
| 🚀 | Queued | System | Confirms posts were successfully sent to Buffer |
| ✏️ | Rewrite Ready | System | Confirms a rewrite was posted as a thread reply |
Note: Only react to messages in #content-review. Reactions in other channels are ignored by the system. Each story is a separate message — approve them individually.
Troubleshooting
No stories appeared this morning
The pipeline may have failed or found fewer than 5 compelling stories. Check #automation-errors for any error messages. Common causes:
- Slack API issue — the bot couldn't read #feed-travel-news
- Claude API timeout — the writing step can take up to 5 minutes for complex stories
- No news — if the feed channel was quiet, there may not be enough headlines
You can manually trigger the pipeline from the n8n dashboard by opening the "Social Media Content Pipeline" workflow and clicking "Execute Workflow".
I approved a story but didn't get the rocket emoji
The approval workflow may have encountered an error. Check #automation-errors. Common causes:
- Buffer API error — the post content may be too long for a platform, or the API is down
- Wrong emoji — make sure you're using the heavy check mark (✔️), not the white check mark or other variants
- Wrong channel — the system only watches
#content-review
Stories have no images
Image issues are usually caused by API rate limits:
- Unsplash — 50 requests/hour limit. If exceeded, stories will have fewer or no stock photos.
- FLUX (Replicate) — Rate-limited with 12-second delays between generations. If the service is slow, some AI images may not generate.
The next pipeline run (tomorrow morning or manual trigger) should work normally once rate limits reset.
Posts aren't appearing in Buffer
Check the Buffer dashboard directly. Posts may be queued but not yet scheduled. Also verify:
- Buffer channels are connected — Facebook, LinkedIn, and Instagram must all be linked in Buffer
- Buffer token is valid — tokens can expire; check
#automation-errorsfor auth failures - Instagram requires images — if the story had no images, the Instagram post will be skipped
How do I run the pipeline manually?
- Go to automations.traveltamers.com
- Open "Social Media Content Pipeline" from the workflow list
- Click the orange "Execute Workflow" button
- Wait 3-5 minutes for stories to appear in
#content-review
Configuration Reference
These environment variables power the pipeline. They're set in the n8n Docker container on the VPS.
Content Generation Variables
| Variable | Purpose |
|---|---|
SLACK_BOT_TOKEN | Slack API access for reading and posting |
ANTHROPIC_API_KEY | Claude API for filtering and writing |
PERPLEXITY_API_KEY | Perplexity for story research |
REPLICATE_API_TOKEN | FLUX image generation |
UNSPLASH_ACCESS_KEY | Stock photography |
SLACK_CHANNEL_CONTENT_REVIEW | Channel ID for #content-review |
Publishing Variables
| Variable | Purpose |
|---|---|
BUFFER_ACCESS_TOKEN | Buffer API for scheduling posts |
BUFFER_PROFILE_FACEBOOK | Facebook channel ID in Buffer |
BUFFER_PROFILE_LINKEDIN | LinkedIn channel ID in Buffer |
BUFFER_PROFILE_INSTAGRAM | Instagram channel ID in Buffer |
NEXUS_CRM_URL | Nexus API base URL |
NEXUS_SERVICE_TOKEN | JWT for Nexus API authentication |
Slack Channel IDs
| Channel | ID | Purpose |
|---|---|---|
| #content-review | C0AKYDBNAKY | Story delivery and approval |
| #automation-errors | C0ALDC9FGDP | Error alerts |
| #feed-travel-news | (configured in workflow) | News source channel |