Apify Actor 化
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 是否已安装:
apify --help如果未安装:
brew install apify-cli
或者:npm install -g apify-cli
或者从您的操作系统包管理器验证的官方发布包安装
验证 CLI 是否已登录:
apify info # 应返回您的用户名如果未登录,请检查 APIFY_TOKEN 环境变量是否已定义。如果未定义,请引导用户在 https://console.apify.com/settings/integrations 生成一个令牌,将其添加到 shell 或密钥管理器中(避免将明文令牌留在命令历史记录中),然后运行:
apify loginActorization 检查清单
复制此清单以跟踪进度:
- [ ] 步骤 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 结构
在项目根目录下运行:
apify init这将创建:
.actor/actor.json- Actor 配置和元数据
.actor/input_schema.json- Apify 控制台的输入定义
Dockerfile(如果不存在)- 容器镜像定义
步骤 3:应用特定语言的更改
根据您的项目语言选择:
- JavaScript/TypeScript: 参阅 js-ts-actorization.md
- Python: 参阅 python-actorization.md
- 其他语言 (基于 CLI): 参阅 cli-actorization.md
快速参考
| 语言 | 安装 | 封装代码 |
|----------|---------|-----------|
| JS/TS | npm install apify | await Actor.init() ... await Actor.exit() |
| Python | pip install apify | async wi |
th Actor: |apify actor:get-input
| 其他 | 在包装脚本中使用 CLI | / 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):
apify run --input '{"startUrl": "https://example.com", "maxItems": 10}'或使用输入文件:
apify run --input-file ./test-input.json重要提示: 请始终使用 apify run,而非 npm start 或 python main.py。CLI 会配置正确的环境和存储。
步骤 8:部署
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`。
资源
- Actorization Academy - 综合指南
- Apify JavaScript SDK - 完整 SDK 参考
- Apify Python SDK - 完整 SDK 参考
- Apify CLI 参考 - CLI 命令
- Actor 规范 - 完整规范
局限性
- 仅在任务明确符合上述范围时使用此技能。
- 不要将输出视为针对特定环境的验证、测试或专家评审的替代方案。
- 如果缺少必需的输入、权限、安全边界或成功标准,请停止并请求澄清。