UX and product teams collect insights from users daily — feature requests, frustrations, praise, patterns. Most of these insights live inside scattered tweets, screenshots, Slack messages, and internal threads.
This guide shows how to turn all that chaos into clean, branded visual cards and then automatically group them into AI-generated moodboards using the Contentdrips API.
Paste a tweet → extract text → render → categorize → drop into moodboards.
No designers. No screenshots. No editing.
Why Screenshots Don't Work
Most teams screenshot tweets for internal decks and research docs. But screenshots:
- Look inconsistent
- Capture random UI elements
- Break brand guidelines
- Don't scale
- Aren't easy to automate
Rendering tweets as structured visual cards gives you:
- Consistent formatting
- Proper brand alignment
- High readability
- Customizable layouts
- Fully automated workflows
Perfect for UX research, VOC dashboards, planning sessions, and product reviews.
What You'll Build
By following this tutorial, you'll be able to:
- Extract tweet text from any tweet URL
- Send that text to the Contentdrips API
- Render it into a polished card image
- Generate a shareable CDN URL
- Use these cards to build moodboards of customer insights
The final output looks like neatly designed "insight cards" that can be grouped under themes like:
- "Feature Requests"
- "Bugs & Pain Points"
- "Delight / Praise"
- "Confusion / Misunderstanding"
These visual boards are massively helpful for PMs, UX teams, founders, and researchers.
Prerequisites
You'll need:
- Node.js or any environment that supports HTTP requests
- A Twitter API bearer token (for extracting tweet text)
- A Contentdrips API token (free, no credit card)
- A Contentdrips template with a text field labeled
tweet_text
Step 0: Prepare Your Template (One-Time Only)
Inside Contentdrips:
- Open Templates → Tweet Styles and choose any layout OR open your own template and click Automate
- Make sure the tweet-body textbox is labeled
tweet_text
You'll use this label in the API calls.
Step 1: Extract the Tweet Text
function getTweetId(url) {
const match = url.match(/status\/(\d+)/);
return match ? match[1] : null;
}
async function getTweetText(url, twitterToken) {
const id = getTweetId(url);
if (!id) throw new Error("Invalid tweet URL");
const response = await fetch(
`https://api.twitter.com/2/tweets/${id}`,
{
headers: { "Authorization": `Bearer ${twitterToken}` }
}
);
const json = await response.json();
return json.data.text;
}
Step 2: Render the Tweet as a Card
async function renderTweetCard(text, cdToken, templateId) {
const response = await fetch("https://generate.contentdrips.com/render", {
method: "POST",
headers: {
"Authorization": `Bearer ${cdToken}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
template_id: templateId,
output: "png",
content_update: [
{ type: "textbox", label: "tweet_text", value: text }
]
})
});
const json = await response.json();
return json.job_id;
}
Step 3: Poll the Rendering Job
async function checkJobStatus(jobId, cdToken) {
const response = await fetch(
`https://generate.contentdrips.com/job/${jobId}/status`,
{ headers: { "Authorization": `Bearer ${cdToken}` } }
);
const json = await response.json();
return json.status;
}
Step 4: Get the Final Image URL
async function getRenderedImage(jobId, cdToken) {
const response = await fetch(
`https://generate.contentdrips.com/job/${jobId}/result`,
{ headers: { "Authorization": `Bearer ${cdToken}` } }
);
const json = await response.json();
return json.export_url;
}
Complete Function: Tweet URL → Rendered Card
async function tweetToCard(tweetUrl, twitterToken, cdToken, templateId) {
const tweetText = await getTweetText(tweetUrl, twitterToken);
const jobId = await renderTweetCard(tweetText, cdToken, templateId);
let status = "queued";
while (status !== "completed") {
await new Promise(r => setTimeout(r, 2000));
status = await checkJobStatus(jobId, cdToken);
}
return await getRenderedImage(jobId, cdToken);
}
How to Turn These Cards Into Moodboards
Once you have images for each tweet, you can build moodboards automatically using:
Keyword grouping
Look for patterns:
- "pricing"
- "signup"
- "loading"
- "mobile"
- "AI"
- etc.
Sentiment analysis
- Positive → Praise
- Negative → Pain points
- Mixed → Confusion
Product area tagging
Auto-tag based on:
- Onboarding
- Billing
- Collaboration
- Performance
- Search
- Editor
AI clustering
Feed tweet texts into an embedding model and cluster them into themes.
Your moodboard becomes:
- Feature requests cluster
- Frustrations cluster
- UX issues cluster
- Compliments cluster
Generate a visual board
Drop the exported card images into:
- Notion galleries
- FigJam boards
- Miro boards
- Custom dashboards
- Internal portals
- Research docs
You now have a living, visual "Voice of Customer" wall.
Real Use Cases for Product Teams
1. VOC Dashboards
Turn daily tweets into categorized, auto-updating visual boards.
2. Weekly UX Moodboards
Generate cards from all tweets mentioning your product that week.
3. Feature Demand Maps
Group "feature request" cards and count frequency visually.
4. Sprint Planning Inputs
Show developers a board of the exact user pain points.
5. Design Critique Sessions
Discuss clusters of UX frustration tweets with visuals.
These boards become part of your team's decision-making process.
Why This Approach Works
- Clean visuals remove noise
- Consistency helps with pattern recognition
- Cards are easier to share internally
- Automation saves countless hours
- Insights become searchable and scannable
- Works at any scale
It transforms raw, messy tweets into structured research assets.
What You Can Add Next
- A Slack bot that generates a card whenever someone pastes a tweet
- A Notion integration for automatic board updates
- A daily cron job that fetches brand mentions
- A dashboard showing "top recurring themes"
- Export moodboards as PDFs for leadership
The entire system can become hands-free.
Resources
- Contentdrips API documentation
- Twitter API documentation
- Template automation guide
Final Thoughts
Screenshots are the past.
Rendered insight cards + automated moodboards are the future of customer understanding.
With just a few API calls, you can give your product team a high-signal, automated, visual voice-of-customer system that runs itself.
Top comments (0)