From hootsuite-pack
Retrieves Hootsuite social media analytics for messages, profiles, and organizations; shortens URLs via Ow.ly API. Tracks engagement, clicks, and post performance.
How this skill is triggered — by the user, by Claude, or both
Slash command
/hootsuite-pack:hootsuite-core-workflow-bThis skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
Retrieve social media analytics and use Ow.ly URL shortening via the Hootsuite API. Track post performance, engagement metrics, and click-through rates.
Retrieve social media analytics and use Ow.ly URL shortening via the Hootsuite API. Track post performance, engagement metrics, and click-through rates.
hootsuite-install-auth setupimport 'dotenv/config';
const TOKEN = process.env.HOOTSUITE_ACCESS_TOKEN!;
const BASE = 'https://platform.hootsuite.com/v1';
async function getOrganization() {
const response = await fetch(`${BASE}/me/organizations`, {
headers: { 'Authorization': `Bearer ${TOKEN}` },
});
const { data } = await response.json();
return data[0]; // Primary organization
}
async function shortenUrl(fullUrl: string) {
const response = await fetch(`${BASE}/shorteners/owly`, {
method: 'POST',
headers: {
'Authorization': `Bearer ${TOKEN}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({ url: fullUrl }),
});
const { data } = await response.json();
console.log(`${fullUrl} → ${data.shortUrl}`);
return data;
}
// Shorten multiple URLs
async function shortenBatch(urls: string[]) {
return Promise.all(urls.map(url => shortenUrl(url)));
}
async function getMessageAnalytics(messageId: string) {
const response = await fetch(`${BASE}/messages/${messageId}`, {
headers: { 'Authorization': `Bearer ${TOKEN}` },
});
const { data } = await response.json();
console.log(`Message: ${data.text?.substring(0, 50)}...`);
console.log(`State: ${data.state}`);
console.log(`Sent: ${data.sentAt}`);
return data;
}
// List sent messages and their performance
async function getSentMessages(profileId: string) {
const response = await fetch(
`${BASE}/messages?socialProfileIds=${profileId}&state=SENT&limit=20`,
{ headers: { 'Authorization': `Bearer ${TOKEN}` } },
);
const { data } = await response.json();
for (const msg of data) {
console.log(`[${msg.sentAt}] ${msg.text?.substring(0, 60)}`);
}
return data;
}
async function getProfileDetails(profileId: string) {
const response = await fetch(`${BASE}/socialProfiles/${profileId}`, {
headers: { 'Authorization': `Bearer ${TOKEN}` },
});
const { data } = await response.json();
console.log(`Profile: @${data.socialNetworkUsername}`);
console.log(`Network: ${data.type}`);
console.log(`ID: ${data.id}`);
return data;
}
| Error | Cause | Solution |
|---|---|---|
404 on message | Message deleted or wrong ID | Verify message ID |
| No analytics data | Post too recent | Wait for engagement data (24-48h) |
| Ow.ly rate limited | Too many shortening requests | Batch and throttle |
For common errors, see hootsuite-common-errors.
npx claudepluginhub jeremylongshore/claude-code-plugins-plus-skills --plugin hootsuite-packUploads media files and schedules social media posts via Hootsuite REST API. Covers media upload to temporary S3 URLs, status checks, and message scheduling on profiles.
Creates, schedules, and manages social media posts across 9 platforms via the Post Bridge API. Handles media upload, draft mode, platform-specific configs, analytics, and post result tracking.
Schedules social media and chat posts across 28+ platforms (X, LinkedIn, Instagram, TikTok, YouTube, Discord, Slack, etc.) via CLI. Handles media uploads, platform-specific settings, and analytics.