界面已本地化;技能介绍与说明文档按所选语言由 AI 自动翻译,代码、命令、路径和专业术语保留原文,以原作者文档为准。
探索技能
开发与工程 · SKILL.md

hootsuite-debug-bundle

hootsuite-debug-bundle

【开发与工程】Collect Hootsuite debug evidence for support tickets and troubleshooting. Use when encountering persistent issues, preparing support tickets, or collecting diagnostic information for Hootsuite problems. Trigger with phrases like "hootsuite debug", "hootsuite support bundle", "collect hootsuite logs", "hootsuite diagnostic".

独立 GitHub 快照 · 自动分类 · 以原作者文档为准

技能说明

GitHub

name: hootsuite-debug-bundle description: 'Collect Hootsuite debug evidence for support tickets and troubleshooting.

Use when encountering persistent issues, preparing support tickets,

or collecting diagnostic information for Hootsuite problems.

Trigger with phrases like "hootsuite debug", "hootsuite support bundle",

"collect hootsuite logs", "hootsuite diagnostic".

' allowed-tools: Read, Bash(grep:), Bash(curl:), Bash(tar:*), Grep version: 1.6.0 license: MIT author: Jeremy Longshore jeremy@intentsolutions.io tags:

  • saas
  • hootsuite
  • social-media compatibility: Designed for Claude Code

Hootsuite Debug Bundle

Overview

Collect Hootsuite API connectivity status, social profile health, scheduled post state, and OAuth token validity into a single diagnostic archive. This bundle helps troubleshoot failed post scheduling, disconnected social accounts, media upload errors, and API authentication problems.

Debug Collection Script

#!/bin/bash
set -euo pipefail
BUNDLE="debug-hootsuite-$(date +%Y%m%d-%H%M%S)"
mkdir -p "$BUNDLE"

# Environment check
echo "=== Hootsuite Debug Bundle ===" | tee "$BUNDLE/summary.txt"
echo "Generated: $(date -u +%Y-%m-%dT%H:%M:%SZ)" >> "$BUNDLE/summary.txt"
echo "HOOTSUITE_API_KEY: ${HOOTSUITE_API_KEY:+[SET]}" >> "$BUNDLE/summary.txt"
echo "HOOTSUITE_ACCESS_TOKEN: ${HOOTSUITE_ACCESS_TOKEN:+[SET]}" >> "$BUNDLE/summary.txt"

# API connectivity — user profile endpoint
HTTP=$(curl -s -o /dev/null -w "%{http_code}" \
  -H "Authorization: Bearer ${HOOTSUITE_ACCESS_TOKEN}" \
  https://platform.hootsuite.com/v1/me 2>/dev/null || echo "000")
echo "API Status: HTTP $HTTP" >> "$BUNDLE/summary.txt"

# User profile and social profiles
curl -s -H "Authorization: Bearer ${HOOTSUITE_ACCESS_TOKEN}" \
  https://platform.hootsuite.com/v1/me > "$BUNDLE/me.json" 2>&1 || true
curl -s -H "Authorization: Bearer ${HOOTSUITE_ACCESS_TOKEN}" \
  https://platform.hootsuite.com/v1/socialProfiles > "$BUNDLE/profiles.json" 2>&1 || true

# Scheduled posts and rate limit headers
curl -s -D "$BUNDLE/rate-headers.txt" -H "Authorization: Bearer ${HOOTSUITE_ACCESS_TOKEN}" \
  "https://platform.hootsuite.com/v1/messages?limit=10&state=SCHEDULED" > "$BUNDLE/scheduled-posts.json" 2>&1 || true

tar -czf "$BUNDLE.tar.gz" "$BUNDLE" && rm -rf "$BUNDLE"
echo "Bundle: $BUNDLE.tar.gz"

Analyzing the Bundle

tar -xzf debug-hootsuite-*.tar.gz
cat debug-hootsuite-*/summary.txt                  # Auth + connectivity
jq '.data[] | {id, type, socialNetworkId}' debug-hootsuite-*/profiles.json  # Connected accounts
jq '.data[] | {id, state, scheduledSendTime}' debug-hootsuite-*/scheduled-posts.json
grep -i "ratelimit\|retry" debug-hootsuite-*/rate-headers.txt

Common Issues

SymptomCheck in BundleFix
API returns 401summary.txt shows HTTP 401OAuth token expired; re-authorize via Hootsuite app OAuth flow
Social profile disconnectedprofiles.json shows missing or error-state profileRe-connect the social account in Hootsuite dashboard > Social Accounts
Scheduled post failedscheduled-posts.json shows FAILED stateCheck media URLs are accessible; verify profile has posting permissions
Rate limited (429)rate-headers.txt shows Retry-AfterReduce scheduling frequency; batch post creation requests
Missing profilesprofiles.json returns fewer accounts than expectedCheck team permissions; verify plan supports connected account count

Automated Health Check

async function checkHootsuite(): Promise<void> {
  const token = process.env.HOOTSUITE_ACCESS_TOKEN;
  if (!token) { console.error("[FAIL] HOOTSUITE_ACCESS_TOKEN not set"); return; }

  const res = await fetch("https://platform.hootsuite.com/v1/me", {
    headers: { Authorization: `Bearer ${token}` },
  });
  console.log(`[${res.ok ? "OK" : "FAIL"}] API: HTTP ${res.status}`);

  if (res.ok) {
    const profiles = await fetch("https://platform.hootsuite.com/v1/socialProfiles", {
      headers: { Authorization: `Bearer ${token}` },
    });
    const data = await profiles.json();
    console.log(`[INFO] Connected profiles: ${data.data?.length ?? 0}`);
  }
}
checkHootsuite();

Prerequisites

  • An incident ID, bounded collection window, approved restricted destination, and a draft-only sandbox profile.
  • A redaction policy excluding tokens, post copy, media, handles, audience data, and account metadata before evidence leaves the runtime.

Instructions

  1. Collect only status, latency band, schedule state, configuration revision, quota headers, and opaque profile/post correlation IDs.
  2. Verify redaction before packaging and stop if copy, media, or account fields cannot be proven absent.
  3. Compare aggregate results to baseline, encrypt the bundle at the approved location, and grant minimum access.
  4. Record owner/deletion date, then remove temporary evidence after the incident window.

Output

Create a bundle manifest with incident ID, collection window, checks run, opaque correlation IDs, aggregate metrics, revision, destination, owner, and retention. Copy, media, handles, and credentials are prohibited.

Error Handling

Stop for failed redaction, unknown destination, or a command that could publish or expose account content. Record the missing evidence class and escalate; do not bypass safeguards.

Examples

incident=inc-opaque-21; window=15m; profile=sandbox-brand; schedule=failed; latency=p95-420ms; destination=restricted-support; retention=7d is a useful redacted bundle summary.

Resources

Next Steps

See hootsuite-common-errors.

我的收藏