【研发类-API开发Skills】apify-actorization 技能
Actorization将现有软件转换为与Apify平台兼容的可重用无服务器应用程序。Actor是打包为Docker镜像的程序,接受定义良好的JSON输入,执行操作,并可选地生成结构化JSON输出。
📥 下载地址:antigravity-awesome-skills/skills/apify-actorization at main · sickn33/antigravity-awesome-skills · GitHub
技能概述
apify-actorization 技能用于将现有软件转换为与Apify平台兼容的可重用无服务器应用程序。Actor是打包为Docker镜像的程序,接受定义良好的JSON输入,执行操作,并可选地生成结构化JSON输出。
触发条件
在以下情况下应该调用此技能:
- 将现有项目转换为在Apify平台上运行
- 向项目添加Apify SDK集成
- 将CLI工具或脚本包装为Actor
- 将Crawlee项目迁移到Apify
快速开始
- 在项目根目录运行
apify init - 使用SDK生命周期包装代码(参见语言特定部分)
- 配置
.actor/input_schema.json - 使用
apify run --input '{"key": "value"}'测试 - 使用
apify push部署
前提条件
验证CLI已安装:
apify --help
如果未安装:
brew install apify-cli # 或: npm install -g apify-cli
验证CLI已登录:
apify info # 应返回您的用户名
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: 分析项目
在进行更改之前,了解项目:
- 识别语言- JavaScript/TypeScript、Python或其他
- 找到入口点- 启动执行的主文件
- 识别输入- 命令行参数、环境变量、配置文件
- 识别输出- 文件、控制台输出、API响应
- 检查状态- 是否需要在运行之间持久化数据?
步骤2: 初始化Actor结构
在项目根目录运行:
apify init
这将创建:
.actor/actor.json- Actor配置和元数据.actor/input_schema.json- Apify Console的输入定义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 with Actor: |
| 其他 | 在包装脚本中使用CLI | apify actor:get-input/apify actor:push-data |
步骤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
这将在Apify平台上上传并构建您的actor。
货币化(可选)
部署后,您可以在Apify Store中货币化您的actor。推荐的模式是按事件付费(PPE):
- 每个结果/抓取的项目
- 每个处理的页面
- 每个进行的API调用
在Apify Console中的Actor > Monetization下配置PPE。在代码中使用await Actor.charge('result')收取事件费用。
其他选项:租赁(月度订阅)或免费(开源)。
部署前检查清单
- ☐
.actor/actor.json存在,具有正确的名称和描述 - ☐
.actor/actor.json针对@apify/json_schemas验证 - ☐
.actor/input_schema.json定义所有必需的输入 - ☐
.actor/input_schema.json针对@apify/json_schemas验证 - ☐
.actor/output_schema.json定义输出结构(如适用) - ☐
.actor/output_schema.json针对@apify/json_schemas验证 - ☐
Dockerfile存在并成功构建 - ☐
Actor.init()/Actor.exit()包装主代码(JS/TS) - ☐
async with Actor:包装主代码 - ☐ 输入通过
Actor.getInput()/Actor.get_input()读取 - ☐ 输出使用
Actor.pushData()或键值存储 - ☐
apify run使用测试输入成功执行 - ☐
generatedBy在actor.json meta部分设置
使用限制
- 仅在任务明确符合上述范围时使用此技能
- 不要将输出作为环境特定验证、测试或专家审查的替代品
- 如果缺少必需的输入、权限、安全边界或成功标准,请停止并寻求澄清