基于 Apify Actors 的社交媒体受众分析实战指南:使用 apify-audience-analysis Skill 完成跨平台画像提取
【免费下载链接】agentic-awesome-skillsAAS Core is the local, agent-first control plane for complete catalog discovery, agent-owned selection, stack validation, and planning, backed by 2,600+ agentic skills. Includes CLI, local MCP, catalog, plugins, and Workbench.项目地址: https://gitcode.com/GitHub_Trending/an/agentic-awesome-skills
导读
apify-audience-analysis是 agentic-awesome-skills 仓库中一个面向 Agent 的受众分析技能(Skill),它把"选 Actor → 取 Schema → 跑脚本 → 汇总洞察"的全流程固化成可复制的五步工作流,帮助你在 Facebook、Instagram、YouTube、TikTok 四大平台上提取粉丝人口属性、互动模式与行为数据,并输出结构化结果与解读摘要。读完本文,你将掌握如何借助 apify-audience-analysis/SKILL.md 与配套的 run_actor.js 脚本,从零开始完成一次完整的受众分析任务,包括 Actor 选型、输入参数构造、CSV/JSON 导出与结果汇总。
Skill 定位:当任务匹配受众分析时启用
该 Skill 的元数据(见 SKILL.md 头部 YAML)将其定义为risk: critical、source: community的社区来源技能,说明它属于"高风险外部 API 调用类"技能,使用时需要真实的 Apify Token 并会产生云端计算费用。其适用边界非常明确:
- 需要跨社交平台获取受众人口属性、互动模式或粉丝行为数据;
- 任务核心是"挑选并运行 Apify Actors"来完成 Facebook、Instagram、YouTube 或 TikTok 的受众分析;
- 需要"结构化抓取 + 受众结论解读"两类产出。
反之,若任务与受众分析无关(如品牌舆情监控、竞争对手情报等),应改用仓库中同族技能(如 apify-brand-reputation-monitoring、apify-competitor-intelligence),而不是强行套用本技能。
前置条件与运行环境
Skill 文档列出的前置条件非常轻量(且明确说明"无需预先主动检查"):
- 项目根目录存在
.env文件,其中包含APIFY_TOKEN=your_token; - Node.js 20.6+ —— 因为 run_actor.js 依赖 Node 20.6 引入的原生
--env-file参数来加载环境变量,无需再安装 dotenv 类依赖; mcpcCLI 工具,通过npm install -g @apify/mcpc全局安装,用于动态拉取 Actor 的输入 Schema。
Token 的获取与使用在 run_actor.js 中有兜底校验:如果process.env.APIFY_TOKEN为空,脚本会直接报错并提示在.env中添加APIFY_TOKEN=your_token_here。值得注意的是,脚本在每次请求中都携带了自定义User-Agent: apify-agent-skills/apify-audience-analysis-1.0.1(见 run_actor.js),用于在 Apify 侧统计技能调用来源。
五步工作流:从选型到洞察
Skill 文档提供了一段可直接复制跟踪的任务清单:
Task Progress: - [ ] Step 1: Identify audience analysis type (select Actor) - [ ] Step 2: Fetch Actor schema via mcpc - [ ] Step 3: Ask user preferences (format, filename) - [ ] Step 4: Run the analysis script - [ ] Step 5: Summarize findings下面逐一步骤展开。
Step 1:按分析目标选择 Actor
选型是整个流程中信息密度最高的一步。Skill 文档按"用户需求 → Actor ID → 最佳适用场景"给出了 19 个跨平台 Actor 的映射表,完整继承如下:
| 用户需求 | Actor ID | 最佳用途 |
|---|---|---|
| Facebook 粉丝人口属性 | apify/facebook-followers-following-scraper | FB 粉丝/关注列表 |
| Facebook 互动行为 | apify/facebook-likes-scraper | FB 帖子点赞分析 |
| Facebook 视频受众 | apify/facebook-reels-scraper | FB Reels 观众 |
| Facebook 评论分析 | apify/facebook-comments-scraper | FB 帖子/视频评论 |
| Facebook 内容互动 | apify/facebook-posts-scraper | FB 帖子互动指标 |
| Instagram 受众规模 | apify/instagram-profile-scraper | IG 主页人口属性 |
| Instagram 地理位置 | apify/instagram-search-scraper | IG 地理标记受众 |
| Instagram 标签网络 | apify/instagram-tagged-scraper | IG 标签网络分析 |
| Instagram 综合抓取 | apify/instagram-scraper | 完整 IG 受众数据 |
| Instagram API 模式 | apify/instagram-api-scraper | 基于 API 访问 IG |
| Instagram 粉丝数追踪 | apify/instagram-followers-count-scraper | IG 粉丝数跟踪 |
| Instagram 评论批量导出 | apify/export-instagram-comments-posts | IG 评论批量导出 |
| Instagram 评论分析 | apify/instagram-comment-scraper | IG 评论情感分析 |
| YouTube 观众反馈 | streamers/youtube-comments-scraper | YT 评论分析 |
| YouTube 频道受众 | streamers/youtube-channel-scraper | YT 频道订阅者 |
| TikTok 粉丝人口属性 | clockworks/tiktok-followers-scraper | TT 粉丝列表 |
| TikTok 主页分析 | clockworks/tiktok-profile-scraper | TT 主页人口属性 |
| TikTok 评论分析 | clockworks/tiktok-comments-scraper | TT 评论互动 |
选型思路可以归纳为:先确定"目标平台 + 分析维度(粉丝、评论、互动、标签、地理位置)",再从表中精确匹配;Instagram 因生态复杂,提供了从轻量 profile 抓取到全量instagram-scraper、再到 API 模式的四档能力,可按数据量与成本权衡。
Step 2:通过 mcpc 动态拉取 Actor Schema
确定 Actor 后,使用 mcpc 连接 Apify MCP 服务端拉取该 Actor 的输入 Schema 与说明文档:
export $(grep APIFY_TOKEN .env | xargs) && mcpc --json mcp.apify.com --header "Authorization: Bearer $APIFY_TOKEN" tools-call fetch-actor-details actor:="ACTOR_ID" | jq -r ".content"将命令中的ACTOR_ID替换为 Step 1 选定的值(例如apify/facebook-followers-following-scraper)。该调用会返回三类关键信息:
- Actor 描述与 README;
- 必填与可选输入参数(即运行时要填充的 JSON 字段);
- 输出字段(若可用)。
这一步的价值在于"动态发现":不同 Actor 的输入差异很大(例如评论区抓取需要 post URL,粉丝抓取需要 profile URL),通过 Schema 才能构造出合法的--inputJSON,避免盲目猜测参数名。
Step 3:与用户确认输出偏好
正式运行前必须确认两点:
- 输出格式:
- Quick answer—— 仅在聊天中展示前若干条结果,不保存文件;
- CSV—— 全字段导出为 CSV;
- JSON—— 全量数据导出为 JSON。
- 结果数量:根据具体使用场景确定抓取规模(如分析 Top 粉丝、全量粉丝等)。
Step 4:运行脚本
Skill 文档给出了三种运行形态,均可直接复制执行,其中${CLAUDE_PLUGIN_ROOT}是插件环境注入的路径变量,指向技能目录:
Quick answer(聊天展示,不落盘):
node --env-file=.env ${CLAUDE_PLUGIN_ROOT}/reference/scripts/run_actor.js \ --actor "ACTOR_ID" \ --input 'JSON_INPUT'CSV 导出:
node --env-file=.env ${CLAUDE_PLUGIN_ROOT}/reference/scripts/run_actor.js \ --actor "ACTOR_ID" \ --input 'JSON_INPUT' \ --output YYYY-MM-DD_OUTPUT_FILE.csv \ --format csvJSON 导出:
node --env-file=.env ${CLAUDE_PLUGIN_ROOT}/reference/scripts/run_actor.js \ --actor "ACTOR_ID" \ --input 'JSON_INPUT' \ --output YYYY-MM-DD_OUTPUT_FILE.json \ --format json脚本参数全解(源码级)
run_actor.js 使用 Node 内置的node:util的parseArgs解析参数(见 run_actor.js#L20-L57),完整参数如下:
| 参数 | 短名 | 默认值 | 说明 |
|---|---|---|---|
--actor | -a | 必填 | Actor ID,如apify/facebook-followers-following-scraper |
--input | -i | 必填 | Actor 输入 JSON 字符串 |
--output | -o | 无 | 输出文件路径;不传则进入 Quick answer 模式 |
--format | -f | csv | 输出格式:csv或json |
--timeout | -t | 600 | 最长等待秒数(脚本内会转成整数并参与轮询超时判断) |
--poll-interval | — | 5 | 两次状态轮询之间的间隔秒数 |
--help | -h | — | 打印帮助信息并退出 |
--actor与--input均为必填项,缺失任一都会打印帮助并退出(见 run_actor.js#L38-L48)。
脚本内部执行链路
脚本的完整生命周期(见 run_actor.js#L317-L357)清晰可循:
- 启动 Actor 运行:
startActor将author/actor格式的 Actor ID 转换为 API 兼容的author~actor格式,随后POST https://api.apify.com/v2/acts/{author~actor}/runs?token=...发起运行,返回runId与defaultDatasetId(见 run_actor.js#L96-L134)。若返回 404 则提示Actor not found。 - 轮询运行状态:
pollUntilComplete每poll-interval秒查询一次https://api.apify.com/v2/actor-runs/{runId},仅在状态变化时打印(Status: ...),直到出现SUCCEEDED、FAILED、ABORTED或TIMED-OUT四种终态之一;超过timeout秒则强制返回TIMED-OUT(见 run_actor.js#L137-L171)。 - 结果处理分支:
- 有
--output时调用downloadResults:JSON 模式直接美化写盘;CSV 模式以首条记录字段为表头逐行生成,并对超长文本(>200 字符)截断、对象/数组字段JSON.stringify序列化(见 run_actor.js#L181-L229)。随后reportSummary输出记录数与文件字节大小(见 run_actor.js#L288-L309)。 - 无
--output时调用displayQuickAnswer:在终端打印TOP 5 RESULTS (of N total)分隔线,逐字段展示前 5 条结果(长值截断到 100 字符),并附 Apify Console 数据集链接供查看全量(见 run_actor.js#L232-L285)。
- 有
- CSV 安全细节:
csvCell对以= + @ -等字符开头的单元格自动加单引号前缀,防止公式注入;对含逗号、引号、换行的字段做标准转义(见 run_actor.js#L173-L178)。
Step 5:汇总分析结论
脚本运行结束后,Agent 应向用户输出四类汇总信息:
- 分析的受众成员/主页数量;
- 结果文件位置与文件名;
- 关键人口属性洞察(如地域分布、粉丝量级、互动倾向);
- 建议的下一步动作(如深度分析、受众分层)。
常见错误与处置对照
Skill 文档给出了运行时常见错误的标准处置方式:
| 错误现象 | 处置方式 |
|---|---|
APIFY_TOKEN not found | 引导用户创建.env并写入APIFY_TOKEN=your_token |
mcpc not found | 引导用户执行npm install -g @apify/mcpc |
Actor not found | 核对 Actor ID 拼写 |
Run FAILED | 引导用户查看错误输出中的 Apify Console 运行链接定位失败原因 |
Timeout | 缩小输入规模,或增大--timeout参数 |
从源码可以印证:APIFY_TOKEN not found与Actor not found均来自 run_actor.js 的显式校验(Token 检查见 run_actor.js#L322-L331,404 检查见 run_actor.js#L118-L121);而Run FAILED时脚本会输出https://console.apify.com/actors/runs/{runId}供人工排查(见 run_actor.js#L342-L346)。
使用边界与注意事项
Skill 文档明确划定了三条边界,Agent 使用时应严格遵守:
- 仅在任务范围与本 Skill 描述明确匹配时使用,不做跨领域的通用抓取;
- 抓取结果不能替代环境专属的验证、测试或专家复核——尤其是涉及隐私、授权与平台条款的场景;
- 当必填输入、权限、安全边界或成功标准缺失时,应停止并主动向用户澄清,而不是擅自猜测参数继续执行。
与其他 Apify 系 Skill 的关系
从仓库结构看,plugins/agentic-awesome-skills-claude/skills 目录下存在一整套基于同一run_actor.js模式的 Apify 技能族,包括品牌舆情监控(apify-brand-reputation-monitoring)、竞品情报、内容分析、电商、红人发现、线索生成、市场调研、趋势分析等。它们共享几乎相同的五步工作流、参数体系与错误处理约定,因此掌握本 Skill 后,迁移到该技能族中其他成员的成本极低——差异主要集中在 Step 1 的 Actor 选型表与 Step 5 的汇总口径。这种"同一执行引擎 + 差异化选型表"的设计,是本仓库 Apify 系技能的通用组织模式。
【免费下载链接】agentic-awesome-skillsAAS Core is the local, agent-first control plane for complete catalog discovery, agent-owned selection, stack validation, and planning, backed by 2,600+ agentic skills. Includes CLI, local MCP, catalog, plugins, and Workbench.项目地址: https://gitcode.com/GitHub_Trending/an/agentic-awesome-skills
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考