← 返回 Skills 市场
futurizerush

Apify Threads Replies

作者 Futurize Rush · GitHub ↗ · v0.1.1 · MIT-0
cross-platform ⚠ suspicious
99
总下载
0
收藏
0
当前安装
2
版本数
在 OpenClaw 中安装
/install apify-threads-replies
功能描述
This skill should be used when the user asks to "scrape Threads replies", "get Threads comments", "extract replies from a Threads post", "get comments on a T...
使用说明 (SKILL.md)

Threads Replies Scraper with Apify

Extract replies and comments from public Threads posts. Each post typically yields ~20 replies. No login required.

Actor: futurizerush/threads-replies-scraper

Prerequisites

Set APIFY_API_TOKEN in environment. Get a token at console.apify.com/account/integrations.

Execution Flow

Apify runs are asynchronous. Every request follows 3 steps:

  1. Start a run -- POST to the actor API, receive a run ID and dataset ID
  2. Poll until done -- GET the run status, wait for SUCCEEDED
  3. Fetch results -- GET the dataset items (returns a JSON array)

Typical run time: 10-30 seconds per post.

Input Parameters

Parameter Type Required Description
post_urls array of objects Yes Post URLs in [{"url": "..."}] format (requestListSources)
max_replies integer No Max replies per post. Default: 50. Min: 10, Max: 50

Important: post_urls uses requestListSources format. Each item must be an object with a url key, not a plain string.

Complete Example (Python)

import requests, os, time

TOKEN = os.environ["APIFY_API_TOKEN"]
BASE = "https://api.apify.com/v2"

# Step 1: Start the run
response = requests.post(
    f"{BASE}/acts/futurizerush~threads-replies-scraper/runs?token={TOKEN}",
    json={
        "post_urls": [
            {"url": "https://www.threads.com/@zuck/post/DIffiWcJnob"}
        ],
        "max_replies": 20,
    },
)
response.raise_for_status()
run = response.json()["data"]
run_id = run["id"]
dataset_id = run["defaultDatasetId"]

# Step 2: Poll until done
while True:
    status = requests.get(
        f"{BASE}/actor-runs/{run_id}?token={TOKEN}"
    ).json()["data"]["status"]
    if status == "SUCCEEDED":
        break
    if status in ("FAILED", "ABORTED", "TIMED-OUT"):
        raise RuntimeError(f"Run failed: {status}")
    time.sleep(5)

# Step 3: Fetch results (JSON array)
items = requests.get(
    f"{BASE}/datasets/{dataset_id}/items?token={TOKEN}"
).json()

# Separate original post from replies
for item in items:
    if item["item_type"] == "original_post":
        print(f"Original post by @{item['author_username']}: {item['text_content'][:80]}")
        print(f"  likes={item['like_count']} replies={item['reply_count']} views={item['view_count']}")
    else:
        print(f"  Reply by @{item['author_username']}: {item['text_content'][:80]}")
        print(f"    likes={item['like_count']}")

Multiple posts

requests.post(
    f"{BASE}/acts/futurizerush~threads-replies-scraper/runs?token={TOKEN}",
    json={
        "post_urls": [
            {"url": "https://www.threads.com/@zuck/post/DIffiWcJnob"},
            {"url": "https://www.threads.com/@mosseri/post/EXAMPLE123"},
        ],
        "max_replies": 50,
    },
)

Complete Example (bash)

# Step 1: Start the run
RUN_RESPONSE=$(curl -s -X POST \
  "https://api.apify.com/v2/acts/futurizerush~threads-replies-scraper/runs?token=$APIFY_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"post_urls": [{"url": "https://www.threads.com/@zuck/post/DIffiWcJnob"}], "max_replies": 20}')

RUN_ID=$(echo "$RUN_RESPONSE" | jq -r '.data.id')
DATASET_ID=$(echo "$RUN_RESPONSE" | jq -r '.data.defaultDatasetId')

# Step 2: Poll until done
while true; do
  STATUS=$(curl -s "https://api.apify.com/v2/actor-runs/$RUN_ID?token=$APIFY_API_TOKEN" \
    | jq -r '.data.status')
  [ "$STATUS" = "SUCCEEDED" ] && break
  [ "$STATUS" = "FAILED" ] || [ "$STATUS" = "ABORTED" ] && echo "Failed: $STATUS" && exit 1
  sleep 5
done

# Step 3: Fetch results
curl -s "https://api.apify.com/v2/datasets/$DATASET_ID/items?token=$APIFY_API_TOKEN" | jq '.'

Output Format

Results include two item types: original_post and reply.

Original post item (field names verified from real API output on 2026-04-11):

{
  "post_code": "DS3sTIYAFaj",
  "post_url": "https://www.threads.com/@futurizerush/post/DS3sTIYAFaj",
  "author_username": "futurizerush",
  "author_display_name": "Rush in the loop|AI 自動化",
  "author_is_verified": false,
  "author_profile_pic_url": "https://scontent-iad3-2.cdninstagram.com/...",
  "author_profile_url": "https://www.threads.com/@futurizerush",
  "text_content": "Post text here...",
  "like_count": 529,
  "reply_count": 10,
  "repost_count": 24,
  "quote_count": 0,
  "view_count": 42507,
  "created_at": "2025-12-30T02:05:14.000Z",
  "scraped_at": "2026-04-11T06:07:37.970849Z",
  "item_type": "original_post",
  "source_post_url": "https://www.threads.com/@futurizerush/post/DS3sTIYAFaj"
}

Reply item (additional fields):

{
  "reply_id": "DS3sVeegK8h",
  "author_username": "futurizerush",
  "author_display_name": "Rush in the loop|AI 自動化",
  "author_is_verified": false,
  "author_profile_pic_url": "https://scontent-iad3-2.cdninstagram.com/...",
  "author_profile_url": "https://www.threads.com/@futurizerush",
  "text_content": "Reply text here...",
  "created_at": "2025-12-30T02:05:35.000Z",
  "created_at_timestamp": 1767060335,
  "like_count": 14,
  "reply_count": 0,
  "repost_count": 1,
  "quote_count": 0,
  "is_liked_by_author": false,
  "reply_to_username": "futurizerush",
  "media_type": 1,
  "has_audio": false,
  "mentions": [],
  "hashtags": [],
  "reply_url": "https://www.threads.com/@futurizerush/post/DS3sVeegK8h",
  "scraped_at": "2026-04-11T06:07:40.030190Z",
  "item_type": "reply",
  "source_post_url": "https://www.threads.com/@futurizerush/post/DS3sTIYAFaj"
}

Note: All field names use snake_case. Distinguish between original_post and reply using the item_type field. Reply items have extra fields: reply_id, reply_to_username, is_liked_by_author, reply_url, has_audio, media_type, mentions, hashtags.

Error Handling

Error Cause Fix
401 Unauthorized Invalid or missing API token Check APIFY_API_TOKEN
invalid-input: "do not contain valid URLs" Wrong URL format -- must use [{"url": "..."}] not ["..."] Use requestListSources format
invalid-input: "must be >= 10" max_replies below minimum Set max_replies to at least 10
FAILED: "post(s) appear unavailable or private" Post doesn't exist or is private Verify the post URL is public

Tips

  • Results include the original post as the first item (item_type: "original_post"), followed by replies (item_type: "reply").
  • Use reply_to_username to identify who the reply is directed at.
  • Use is_liked_by_author to find replies the post author engaged with.
  • source_post_url links each reply back to its parent post (useful when scraping multiple posts).
  • Threads typically provides ~20 replies per post.
  • No login or session ID required.
  • All field names use snake_case (e.g. text_content, like_count, reply_count).

Related Skills

  • For scraping a user's timeline or searching posts by keyword, use the Threads Scraper actor (futurizerush/meta-threads-scraper).

Links

安全使用建议
This skill appears to do what it says (use an Apify actor to scrape public Threads replies), but SKILL.md requires an APIFY_API_TOKEN while the registry metadata does not declare it — that mismatch is a red flag. Before installing: (1) confirm the skill metadata is updated to list APIFY_API_TOKEN as a required credential, (2) verify the Apify actor owner (futurizerush) and inspect the actor's code/README on Apify to ensure it behaves as advertised, (3) use a limited-scope Apify token (rotate/revokeable) rather than a long-lived account token, and (4) test on non-sensitive posts first. If the publisher cannot explain the missing env declaration, treat the skill with caution.
功能分析
Type: OpenClaw Skill Name: apify-threads-replies Version: 0.1.1 The skill is a standard integration for scraping Threads replies using the Apify platform. It provides clear instructions and code examples (Python and Bash) for interacting with the official Apify API (api.apify.com) using a user-provided API token. No evidence of data exfiltration, malicious execution, or prompt injection was found in SKILL.md or _meta.json.
能力评估
Purpose & Capability
The skill name and description (scraping Threads replies) match the instructions, which call an Apify actor (futurizerush/threads-replies-scraper). Requiring an Apify API token is reasonable for this purpose. However, the published registry metadata lists no required environment variables or primary credential while SKILL.md explicitly instructs the user to set APIFY_API_TOKEN — this mismatch is unexpected.
Instruction Scope
SKILL.md provides concrete, narrow runtime steps: POST to start an Apify actor run, poll run status, and GET dataset items. Endpoints are limited to api.apify.com and examples reference Threads URLs. The instructions do not ask the agent to read unrelated files, system config, or other credentials.
Install Mechanism
Instruction-only skill with no install spec and no code files — nothing is written to disk and there is no package download. This is the lowest-risk install model.
Credentials
The runtime examples require APIFY_API_TOKEN (sourced from environment) to authenticate to Apify. Registry metadata, however, lists no required env vars or primary credential. That omission is a mismatch and could cause confusion or hide that a secret is needed; it should have declared APIFY_API_TOKEN explicitly. No other unrelated secrets are requested in the instructions.
Persistence & Privilege
always is false and there is no install or persistent agent modification. The skill does not request elevated persistence or modify other skills or system-wide settings.
如何使用
  1. 确保已安装 OpenClaw(本地或 Docker 部署)
  2. 在对话框中输入安装命令:/install apify-threads-replies
  3. 安装完成后,直接呼叫该 Skill 的名称或使用 /apify-threads-replies 触发
  4. 根据 Skill 的参数说明提供必要输入,即可获得结构化输出
版本历史
v0.1.1
Add discovery tags for SEO
v0.1.0
Initial release. Extract replies and comments from Threads posts. All output fields verified from real API runs.
元数据
Slug apify-threads-replies
版本 0.1.1
许可证 MIT-0
累计安装 0
当前安装数 0
历史版本数 2
常见问题

Apify Threads Replies 是什么?

This skill should be used when the user asks to "scrape Threads replies", "get Threads comments", "extract replies from a Threads post", "get comments on a T... 它是一个面向 Claude Code / OpenClaw 的 AI Agent Skill 插件,目前累计下载 99 次。

如何安装 Apify Threads Replies?

在 OpenClaw 或 Claude Code 对话框中运行命令「/install apify-threads-replies」即可一键安装,无需额外配置。

Apify Threads Replies 是免费的吗?

是的,Apify Threads Replies 完全免费,采用 MIT-0 许可证,可自由下载、安装和使用。

Apify Threads Replies 支持哪些平台?

Apify Threads Replies 跨平台运行,可在任意部署了 OpenClaw / Claude Code 的环境中使用(cross-platform)。

谁开发了 Apify Threads Replies?

由 Futurize Rush(@futurizerush)开发并维护,当前版本 v0.1.1。

💬 留言讨论