Apify Actor 化

apify-actorization
分类通用
作者Agentic Awesome Skills 社区
许可MIT
评分4.90/5
使用3.8K

Apify Actorization

Actorization 将现有软件转换为与 Apify 平台兼容的可复用无服务器应用程序。Actor 是打包为 Docker 镜像的程序,它们接收定义明确的 JSON 输入,执行操作,并可选择性地产生结构化的 JSON 输出。

快速上手

1. 在项目根目录下运行 apify init
2. 使用 SDK 生命周期封装代码(见下文各语言具体章节)
3. 配置 .actor/input_schema.json
4. 使用 apify run --input '{"key": "value"}' 进行测试
5. 使用 apify push 部署

何时使用此技能

  • 将现有项目转换为在 Apify 平台上运行
  • 为项目添加 Apify SDK 集成
  • 将 CLI 工具或脚本封装为 Actor
  • 将 Crawlee 项目迁移到 Apify

前置条件

验证 apify CLI 是否已安装:

bash
apify --help

如果未安装:

bash
brew install apify-cli

或者:npm install -g apify-cli

或者从您的操作系统包管理器验证的官方发布包安装

验证 CLI 是否已登录:

bash
apify info  # 应返回您的用户名

如果未登录,请检查 APIFY_TOKEN 环境变量是否已定义。如果未定义,请引导用户在 https://console.apify.com/settings/integrations 生成一个令牌,将其添加到 shell 或密钥管理器中(避免将明文令牌留在命令历史记录中),然后运行:

bash
apify login

Actorization 检查清单

复制此清单以跟踪进度:

  • [ ] 步骤 1:分析项目(语言、入口点、输入、输出)
  • [ ] 步骤 2:运行 apify init 创建 Actor 结构
  • [ ] 步骤 3:应用特定语言的 SDK 集成
  • [ ] 步骤 4:配置 .actor/input_schema.json
  • [ ] 步骤 5:配置 .actor/output_schema.json(如果适用)
  • [ ] 步骤 6:更新 .actor/actor.json 元数据
  • [ ] 步骤 7:使用 apify run 进行本地测试
  • [ ] 步骤 8:使用 apify push 部署

步骤 1:分析项目

在进行更改之前,请了解项目情况:

1. 确定语言 - JavaScript/TypeScript, Python 或其他
2. 寻找入口点 - 开始执行的主文件
3. 确定输入 - 命令行参数、环境变量、配置文件
4. 确定输出 - 文件、控制台输出、API 响应
5. 检查状态 - 是否需要在运行之间持久化数据?

步骤 2:初始化 Actor 结构

在项目根目录下运行:

bash
apify init

这将创建:

  • .actor/actor.json - Actor 配置和元数据

  • .actor/input_schema.json - Apify 控制台的输入定义

  • Dockerfile(如果不存在)- 容器镜像定义

步骤 3:应用特定语言的更改

根据您的项目语言选择:

快速参考

| 语言 | 安装 | 封装代码 |
|----------|---------|-----------|
| JS/TS | npm install apify | await Actor.init() ... await Actor.exit() |
| Python | pip install apify | async wi |
th Actor: |
| 其他 | 在包装脚本中使用 CLI |
apify actor:get-input / apify actor:push-data |

步骤 4-6:配置 Schema

有关以下内容的详细配置,请参阅 schemas-and-output.md

  • 输入 Schema (.actor/input_schema.json)

  • 输出 Schema (.actor/output_schema.json)

  • Actor 配置 (.actor/actor.json)

  • 状态管理(请求队列、键值存储)

请使用 @apify/json_schemas npm 包验证 Schema。

步骤 7:本地测试

使用内联输入运行 Actor(适用于 JS/TS 和 Python Actor):

bash
apify run --input '{"startUrl": "https://example.com", "maxItems": 10}'

或使用输入文件:

bash
apify run --input-file ./test-input.json

重要提示: 请始终使用 apify run,而非 npm startpython main.py。CLI 会配置正确的环境和存储。

步骤 8:部署

bash
apify push

这将把您的 Actor 上传并在 Apify 平台上构建。

商业化(可选)

部署后,您可以在 Apify Store 中将 Actor 商业化。推荐的模型是 按事件付费 (PPE)

  • 按抓取的每个结果/项目计费
  • 按处理的每个页面计费
  • 按每次 API 调用计费

在 Apify Console 的 Actor > Monetization 中配置 PPE。在代码中使用 await Actor.charge('result') 对事件进行计费。

其他选项:租赁(月度订阅)或 免费(开源)。

部署前检查清单

  • [ ] .actor/actor.json 存在且名称和描述正确
  • [ ] .actor/actor.json 通过 @apify/json_schemas (actor.schema.json) 验证
  • [ ] .actor/input_schema.json 定义了所有必需的输入
  • [ ] .actor/input_schema.json 通过 @apify/json_schemas (input.schema.json) 验证
  • [ ] .actor/output_schema.json 定义了输出结构(如果适用)
  • [ ] .actor/output_schema.json 通过 @apify/json_schemas (output.schema.json) 验证
  • [ ] Dockerfile 存在且构建成功
  • [ ] Actor.init() / Actor.exit() 包裹了主代码 (JS/TS)
  • [ ] async with Actor: 包裹了主代码 (Python)
  • [ ] 通过 Actor.getInput() / Actor.get_input() 读取输入
  • [ ] 输出使用 Actor.pushData() 或键值存储
  • [ ] apify run 使用测试输入执行成功
  • [ ] actor.json 的 meta 部分设置了 generatedBy

Apify MCP 工具

如果配置了 MCP 服务器,请使用以下工具获取文档:

  • search-apify-docs - 搜索文档
  • fetch-apify-docs - 获取完整文档页面

否则,MCP 服务器 URL 为:https://mcp.apify.com/?tools=docs`。

资源

局限性

  • 仅在任务明确符合上述范围时使用此技能。
  • 不要将输出视为针对特定环境的验证、测试或专家评审的替代方案。
  • 如果缺少必需的输入、权限、安全边界或成功标准,请停止并请求澄清。