{
  "schemaVersion": "1.0",
  "item": {
    "slug": "publora-threads",
    "name": "Publora — Threads",
    "source": "tencent",
    "type": "skill",
    "category": "开发工具",
    "sourceUrl": "https://clawhub.ai/sergebulaev/publora-threads",
    "canonicalUrl": "https://clawhub.ai/sergebulaev/publora-threads",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/publora-threads",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=publora-threads",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "SKILL.md"
    ],
    "primaryDoc": "SKILL.md",
    "quickSetup": [
      "Download the package from Yavira.",
      "Extract the archive and review SKILL.md first.",
      "Import or place the package into your OpenClaw setup."
    ],
    "agentAssist": {
      "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
      "steps": [
        "Download the package from Yavira.",
        "Extract it into a folder your agent can access.",
        "Paste one of the prompts below and point your agent at the extracted folder."
      ],
      "prompts": [
        {
          "label": "New install",
          "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
        },
        {
          "label": "Upgrade existing",
          "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
        }
      ]
    },
    "sourceHealth": {
      "source": "tencent",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-04-30T16:55:25.780Z",
      "expiresAt": "2026-05-07T16:55:25.780Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=network",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=network",
        "contentDisposition": "attachment; filename=\"network-1.0.0.zip\"",
        "redirectLocation": null,
        "bodySnippet": null
      },
      "scope": "source",
      "summary": "Source download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this source.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/publora-threads"
    },
    "validation": {
      "installChecklist": [
        "Use the Yavira download entry.",
        "Review SKILL.md after the package is downloaded.",
        "Confirm the extracted package contains the expected setup assets."
      ],
      "postInstallChecks": [
        "Confirm the extracted package includes the expected docs or setup files.",
        "Validate the skill or prompts are available in your target agent workspace.",
        "Capture any manual follow-up steps the agent could not complete."
      ]
    },
    "downloadPageUrl": "https://openagent3.xyz/downloads/publora-threads",
    "agentPageUrl": "https://openagent3.xyz/skills/publora-threads/agent",
    "manifestUrl": "https://openagent3.xyz/skills/publora-threads/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/publora-threads/agent.md"
  },
  "agentAssist": {
    "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
    "steps": [
      "Download the package from Yavira.",
      "Extract it into a folder your agent can access.",
      "Paste one of the prompts below and point your agent at the extracted folder."
    ],
    "prompts": [
      {
        "label": "New install",
        "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
      },
      {
        "label": "Upgrade existing",
        "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
      }
    ]
  },
  "documentation": {
    "source": "clawhub",
    "primaryDoc": "SKILL.md",
    "sections": [
      {
        "title": "Publora — Threads",
        "body": "Threads platform skill for the Publora API. For auth, core scheduling, media upload, and workspace/webhook docs, see the publora core skill.\n\nBase URL: https://api.publora.com/api/v1\nHeader: x-publora-key: sk_YOUR_KEY\nPlatform ID format: threads-{accountId}"
      },
      {
        "title": "⚠️ Temporary Restriction — Thread Nesting Unavailable",
        "body": "Multi-threaded nested posts are temporarily unavailable on Threads due to Threads app reconnection status.\n\nThis means: content over 500 characters that would normally auto-split into connected reply chains does not work right now.\n\nWhat still works normally:\n\nSingle posts (text, images, videos, carousels)\nStandalone posts under 500 characters\n\nContact support@publora.com for updates on when thread nesting will be restored."
      },
      {
        "title": "Platform Limits (API)",
        "body": "PropertyAPI LimitNotesText500 characters10,000 via text attachmentImagesUp to 20 × 8 MBJPEG, PNGVideo5 min / 500 MBMP4, MOVMax links5 per post—Text only✅ Yes—Threading⚠️ Temporarily unavailableSee aboveRate limit250 posts/24hr1,000 replies/24hr"
      },
      {
        "title": "Post a Single Thread",
        "body": "await fetch('https://api.publora.com/api/v1/create-post', {\n  method: 'POST',\n  headers: { 'Content-Type': 'application/json', 'x-publora-key': 'sk_YOUR_KEY' },\n  body: JSON.stringify({\n    content: 'Building in public is the best marketing strategy. Here\\'s why 👇',\n    platforms: ['threads-17841412345678']\n  })\n});"
      },
      {
        "title": "Schedule a Post",
        "body": "body: JSON.stringify({\n  content: 'Your Threads post here',\n  platforms: ['threads-17841412345678'],\n  scheduledTime: '2026-03-20T10:00:00.000Z'\n})"
      },
      {
        "title": "Post with Image",
        "body": "// Step 1: Create post\nconst post = await fetch('https://api.publora.com/api/v1/create-post', {\n  method: 'POST',\n  headers: { 'Content-Type': 'application/json', 'x-publora-key': 'sk_YOUR_KEY' },\n  body: JSON.stringify({\n    content: 'Caption for your image post',\n    platforms: ['threads-17841412345678']\n  })\n}).then(r => r.json());\n\n// Step 2: Get upload URL\nconst upload = await fetch('https://api.publora.com/api/v1/get-upload-url', {\n  method: 'POST',\n  headers: { 'Content-Type': 'application/json', 'x-publora-key': 'sk_YOUR_KEY' },\n  body: JSON.stringify({\n    postGroupId: post.postGroupId,\n    fileName: 'photo.jpg',\n    contentType: 'image/jpeg',\n    type: 'image'\n  })\n}).then(r => r.json());\n\n// Step 3: Upload to S3\nawait fetch(upload.uploadUrl, {\n  method: 'PUT',\n  headers: { 'Content-Type': 'image/jpeg' },\n  body: imageBytes\n});"
      },
      {
        "title": "Thread Nesting (when available)",
        "body": "When thread nesting is restored, you can split long content using --- on its own line:\n\nbody: JSON.stringify({\n  content: 'First post in thread.\\n\\n---\\n\\nSecond post continues the thought.\\n\\n---\\n\\nFinal post wraps up.',\n  platforms: ['threads-17841412345678']\n})\n\n⚠️ Currently disabled. Single posts and carousels work normally."
      },
      {
        "title": "Platform Quirks",
        "body": "Connected via Meta OAuth — same account as Instagram\n5 links per post max — Threads enforces this at the API level\nPNG supported — unlike Instagram, Threads accepts PNG images\nThreading restriction — see the notice at the top of this skill"
      }
    ],
    "body": "Publora — Threads\n\nThreads platform skill for the Publora API. For auth, core scheduling, media upload, and workspace/webhook docs, see the publora core skill.\n\nBase URL: https://api.publora.com/api/v1\nHeader: x-publora-key: sk_YOUR_KEY\nPlatform ID format: threads-{accountId}\n\n⚠️ Temporary Restriction — Thread Nesting Unavailable\n\nMulti-threaded nested posts are temporarily unavailable on Threads due to Threads app reconnection status.\n\nThis means: content over 500 characters that would normally auto-split into connected reply chains does not work right now.\n\nWhat still works normally:\n\nSingle posts (text, images, videos, carousels)\nStandalone posts under 500 characters\n\nContact support@publora.com for updates on when thread nesting will be restored.\n\nPlatform Limits (API)\nProperty\tAPI Limit\tNotes\nText\t500 characters\t10,000 via text attachment\nImages\tUp to 20 × 8 MB\tJPEG, PNG\nVideo\t5 min / 500 MB\tMP4, MOV\nMax links\t5 per post\t—\nText only\t✅ Yes\t—\nThreading\t⚠️ Temporarily unavailable\tSee above\nRate limit\t250 posts/24hr\t1,000 replies/24hr\nPost a Single Thread\nawait fetch('https://api.publora.com/api/v1/create-post', {\n  method: 'POST',\n  headers: { 'Content-Type': 'application/json', 'x-publora-key': 'sk_YOUR_KEY' },\n  body: JSON.stringify({\n    content: 'Building in public is the best marketing strategy. Here\\'s why 👇',\n    platforms: ['threads-17841412345678']\n  })\n});\n\nSchedule a Post\nbody: JSON.stringify({\n  content: 'Your Threads post here',\n  platforms: ['threads-17841412345678'],\n  scheduledTime: '2026-03-20T10:00:00.000Z'\n})\n\nPost with Image\n// Step 1: Create post\nconst post = await fetch('https://api.publora.com/api/v1/create-post', {\n  method: 'POST',\n  headers: { 'Content-Type': 'application/json', 'x-publora-key': 'sk_YOUR_KEY' },\n  body: JSON.stringify({\n    content: 'Caption for your image post',\n    platforms: ['threads-17841412345678']\n  })\n}).then(r => r.json());\n\n// Step 2: Get upload URL\nconst upload = await fetch('https://api.publora.com/api/v1/get-upload-url', {\n  method: 'POST',\n  headers: { 'Content-Type': 'application/json', 'x-publora-key': 'sk_YOUR_KEY' },\n  body: JSON.stringify({\n    postGroupId: post.postGroupId,\n    fileName: 'photo.jpg',\n    contentType: 'image/jpeg',\n    type: 'image'\n  })\n}).then(r => r.json());\n\n// Step 3: Upload to S3\nawait fetch(upload.uploadUrl, {\n  method: 'PUT',\n  headers: { 'Content-Type': 'image/jpeg' },\n  body: imageBytes\n});\n\nThread Nesting (when available)\n\nWhen thread nesting is restored, you can split long content using --- on its own line:\n\nbody: JSON.stringify({\n  content: 'First post in thread.\\n\\n---\\n\\nSecond post continues the thought.\\n\\n---\\n\\nFinal post wraps up.',\n  platforms: ['threads-17841412345678']\n})\n\n\n⚠️ Currently disabled. Single posts and carousels work normally.\n\nPlatform Quirks\nConnected via Meta OAuth — same account as Instagram\n5 links per post max — Threads enforces this at the API level\nPNG supported — unlike Instagram, Threads accepts PNG images\nThreading restriction — see the notice at the top of this skill"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/sergebulaev/publora-threads",
    "publisherUrl": "https://clawhub.ai/sergebulaev/publora-threads",
    "owner": "sergebulaev",
    "version": "2.0.0",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/publora-threads",
    "downloadUrl": "https://openagent3.xyz/downloads/publora-threads",
    "agentUrl": "https://openagent3.xyz/skills/publora-threads/agent",
    "manifestUrl": "https://openagent3.xyz/skills/publora-threads/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/publora-threads/agent.md"
  }
}