Skip to content
Back to skills

Hootsuite Hello World

BSecurity

'Create a minimal working Hootsuite example.

  • 2,719 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added September 21, 2026
ai-agentstypescriptpythonbashtestingapi

Works with

  • claude code
  • api

Security analysis

B75/100
  • criticalDownloads and executes remote scripts — classic supply chain attack

Pro shows the line behind each finding and how to fix it

Scanned September 21, 2026

npx -y skills add jeremylongshore/claude-code-plugins-plus --skill hootsuite-hello-world --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Hootsuite Hello World?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Hootsuite Hello World
[![Security: B — Skills Directory](https://www.skillsdirectory.com/api/skills/jeremylongshore-hootsuite-hello-world-47c363ca/badge)](https://www.skillsdirectory.com/skills/jeremylongshore-hootsuite-hello-world-47c363ca)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: hootsuite-hello-world
description: 'Create a minimal working Hootsuite example.

  Use when starting a new Hootsuite integration, testing your setup,

  or learning basic Hootsuite API patterns.

  Trigger with phrases like "hootsuite hello world", "hootsuite example",

  "hootsuite quick start", "simple hootsuite code".

  '
allowed-tools: Read, Write, Edit, Bash(npm:*), Bash(curl:*)
version: 1.6.0
license: MIT
author: Jeremy Longshore <jeremy@intentsolutions.io>
tags:
- saas
- hootsuite
- social-media
compatibility: Designed for Claude Code
---
# Hootsuite Hello World

## Overview

List your social media profiles and schedule a post using the Hootsuite REST API. The API base URL is `https://platform.hootsuite.com/v1/`.

## Prerequisites

- Completed `hootsuite-install-auth` setup
- Valid access token
- At least one social profile connected in Hootsuite

## Instructions

### Step 1: List Social Profiles

```typescript
// hello-hootsuite.ts
import 'dotenv/config';

const TOKEN = process.env.HOOTSUITE_ACCESS_TOKEN!;
const BASE = 'https://platform.hootsuite.com/v1';

async function listProfiles() {
  const response = await fetch(`${BASE}/socialProfiles`, {
    headers: { 'Authorization': `Bearer ${TOKEN}` },
  });
  const { data } = await response.json();

  for (const profile of data) {
    console.log(`${profile.type}: @${profile.socialNetworkUsername} (ID: ${profile.id})`);
  }
  return data;
}

listProfiles().catch(console.error);
```

### Step 2: Schedule a Post

```typescript
async function schedulePost(socialProfileId: string, text: string, scheduledAt: Date) {
  const response = await fetch(`${BASE}/messages`, {
    method: 'POST',
    headers: {
      'Authorization': `Bearer ${TOKEN}`,
      'Content-Type': 'application/json',
    },
    body: JSON.stringify({
      text,
      socialProfileIds: [socialProfileId],
      scheduledSendTime: scheduledAt.toISOString(),
      emailNotification: false,
    }),
  });

  const result = await response.json();
  console.log('Scheduled message ID:', result.data[0]?.id);
  console.log('State:', result.data[0]?.state);
  console.log('Scheduled for:', result.data[0]?.scheduledSendTime);
  return result;
}

// Schedule a post 1 hour from now
const profiles = await listProfiles();
if (profiles.length > 0) {
  const oneHourLater = new Date(Date.now() + 3600000);
  await schedulePost(profiles[0].id, 'Hello from the Hootsuite API!', oneHourLater);
}
```

### Step 3: List Scheduled Messages

```typescript
async function listMessages() {
  const response = await fetch(`${BASE}/messages?state=SCHEDULED&limit=10`, {
    headers: { 'Authorization': `Bearer ${TOKEN}` },
  });
  const { data } = await response.json();
  for (const msg of data) {
    console.log(`[${msg.state}] ${msg.text?.substring(0, 60)}... → ${msg.scheduledSendTime}`);
  }
}
```

### Step 4: curl Quick Test

```bash
# List profiles
curl -s -H "Authorization: Bearer $HOOTSUITE_ACCESS_TOKEN" \
  https://platform.hootsuite.com/v1/socialProfiles | python3 -m json.tool

# Get current user
curl -s -H "Authorization: Bearer $HOOTSUITE_ACCESS_TOKEN" \
  https://platform.hootsuite.com/v1/me | python3 -m json.tool
```

## Output

- Listed social media profiles with IDs
- Scheduled a post to a social profile
- Retrieved scheduled messages

## Error Handling

| Error | Cause | Solution |
|-------|-------|----------|
| `401 Unauthorized` | Expired token | Refresh token via OAuth flow |
| `403 Forbidden` | Insufficient permissions | Check app scopes |
| `422 Unprocessable` | Invalid profile ID or past date | Verify profile ID and future date |
| No profiles returned | No social accounts connected | Connect accounts in Hootsuite dashboard |

## Examples

Create a fictitious draft in a sandbox profile and record `profile=hello-sandbox; content=fixture-only; approval=pending; audience=test-only; public_posts=0; cleanup=complete`. Do not use a real account or post text as tutorial data.

## Resources

- [Messages API](https://developer.hootsuite.com/docs/message-scheduling)
- [Social Profiles API](https://apidocs.hootsuite.com/docs/api/index.html)
- [REST API Reference](https://developer.hootsuite.com/docs/using-rest-apis)

## Next Steps

Proceed to `hootsuite-local-dev-loop` for development workflow.

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.