Claude-code-plugins-plus-skills hootsuite-sdk-patterns
install
source · Clone the upstream repo
git clone https://github.com/jeremylongshore/claude-code-plugins-plus-skills
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/jeremylongshore/claude-code-plugins-plus-skills "$T" && mkdir -p ~/.claude/skills && cp -r "$T/plugins/saas-packs/hootsuite-pack/skills/hootsuite-sdk-patterns" ~/.claude/skills/jeremylongshore-claude-code-plugins-plus-skills-hootsuite-sdk-patterns && rm -rf "$T"
manifest:
plugins/saas-packs/hootsuite-pack/skills/hootsuite-sdk-patterns/SKILL.mdsource content
Hootsuite SDK Patterns
Overview
Production patterns for Hootsuite REST API: typed client, token management, scheduling helpers, and Python integration.
Instructions
Step 1: Typed API Client
// src/hootsuite/types.ts interface SocialProfile { id: string; type: 'TWITTER' | 'FACEBOOK' | 'INSTAGRAM' | 'LINKEDIN' | 'PINTEREST' | 'YOUTUBE' | 'TIKTOK'; socialNetworkUsername: string; socialNetworkId: string; } interface ScheduledMessage { id: string; text: string; state: 'SCHEDULED' | 'SENT' | 'FAILED' | 'REJECTED'; socialProfileIds: string[]; scheduledSendTime: string; sentAt?: string; mediaUrls?: Array<{ id: string }>; } interface HootsuiteResponse<T> { data: T; }
Step 2: Scheduling Helper with Timezone
function scheduleForTimezone( hour: number, minute: number, timezone: string, daysFromNow = 0 ): Date { const date = new Date(); date.setDate(date.getDate() + daysFromNow); const dateStr = date.toISOString().split('T')[0]; const timeStr = `${hour.toString().padStart(2, '0')}:${minute.toString().padStart(2, '0')}:00`; return new Date(`${dateStr}T${timeStr}`); } // Schedule posts at optimal times per platform const OPTIMAL_TIMES = { TWITTER: { hour: 9, minute: 0 }, INSTAGRAM: { hour: 11, minute: 0 }, LINKEDIN: { hour: 7, minute: 30 }, FACEBOOK: { hour: 13, minute: 0 }, };
Step 3: Python Client
# hootsuite/client.py import os, requests, time from dotenv import load_dotenv load_dotenv() class HootsuiteClient: BASE = 'https://platform.hootsuite.com/v1' def __init__(self): self.token = os.environ['HOOTSUITE_ACCESS_TOKEN'] self.headers = {'Authorization': f'Bearer {self.token}', 'Content-Type': 'application/json'} def get_profiles(self): r = requests.get(f'{self.BASE}/socialProfiles', headers=self.headers) r.raise_for_status() return r.json()['data'] def schedule_message(self, profile_ids, text, scheduled_time): r = requests.post(f'{self.BASE}/messages', headers=self.headers, json={ 'text': text, 'socialProfileIds': profile_ids, 'scheduledSendTime': scheduled_time.isoformat(), }) r.raise_for_status() return r.json()['data']
Step 4: Cross-Platform Post Formatter
function formatPost(text: string, platform: string): string { const limits: Record<string, number> = { TWITTER: 280, FACEBOOK: 63206, INSTAGRAM: 2200, LINKEDIN: 3000, TIKTOK: 2200, }; const limit = limits[platform] || 2200; return text.length > limit ? text.substring(0, limit - 3) + '...' : text; }
Output
- Typed API client with token refresh
- Timezone-aware scheduling helpers
- Python client class
- Cross-platform post formatting
Resources
Next Steps
Apply patterns in
hootsuite-core-workflow-a for publishing.