apify-actorization について
Apify Actorizationは、既存のソフトウェア、スクリプト、CrawleeプロジェクトをApifyプラットフォーム上の再利用可能なアプリケーションとしてパッケージ化する開発者向けスキルです。初期設定、SDK連携、入出力スキーマ、テスト、デプロイを案内します。
主な機能
- 01Actor構成の初期化
- 02SDKライフサイクルの統合
- 03入出力スキーマの設定
- 04Apify CLIでのテスト
- 05Apifyへのデプロイ
活用シーン
- 01既存プロジェクトをApify向けに改修
- 02CLIツールやスクリプトをActor化
- 03CrawleeプロジェクトをApifyへ移行
MCP 対応
Apify MCPツールを使ったApifyドキュメントの検索・取得方法を説明しています。また、Web操作を行うActorのデバッグ手段としてPlaywright MCPを紹介しています。
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ apify/ agent-skills --skill apify-actorizationインストール後、Claude Code で/apify-actorizationを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/cli-actorization.mdjs-ts-actorization.mdpython-actorization.mdschemas-and-output.md詳細
Apify Actor化
Actor化では、既存のソフトウェアを、Apifyプラットフォームと互換性のある再利用可能なサーバーレスアプリケーションに変換します。ActorはDockerイメージとしてパッケージ化されたプログラムで、明確に定義されたJSON入力を受け取り、処理を実行し、必要に応じて構造化されたJSON出力を生成します。
クイックスタート
- プロジェクトのルートで
apify init <actor-name> --user-agent apify-agent-skills/apify-actorizationを実行します - プロジェクトの言語に対応した
Dockerfileを作成します - SDKのライフサイクルでコードをラップします(以下の言語別セクションを参照してください)
.actor/input_schema.jsonを設定しますapify run --input '{"key": "value"}' --user-agent apify-agent-skills/apify-actorizationでテストしますapify push --user-agent apify-agent-skills/apify-actorizationでデプロイします
このスキルを使用する場面
- 既存のプロジェクトをApifyプラットフォーム上で実行できるように変換する場合
- プロジェクトにApify SDKの統合を追加する場合
- CLIツールやスクリプトをActorとしてラップする場合
- CrawleeプロジェクトをApifyに移行する場合
前提条件
apify CLIがインストールされていることを確認します。
apify --help
インストールされていない場合は、次のいずれかの方法を使用します(上から順に推奨)。
# Preferred: install via a package manager (provides integrity checks)
npm install -g apify-cli
# Or (Mac): brew install apify-cli
セキュリティに関する注意: リモートスクリプトをシェルにパイプしてCLIをインストールしないでください (例:
curl ... | bashやirm ... | iex)。必ずパッケージマネージャーを使用してください。
CLIにログインしていることを確認します。
apify info # Should return your username
ログインしていない場合は、OAuthで認証します(ブラウザーが開きます)。
apify login
ブラウザーでログインできない場合(ヘッドレス環境またはCI)は、APIFY_TOKEN 環境変数がエクスポートされていることを確認してください(この変数名は APIFY_API_TOKEN ではなく APIFY_TOKEN です)。CLIはこの変数を自動的に読み取るため、明示的なログインは不要です。トークンをお持ちでない場合は、https://console.apify.com/settings/integrations で生成してください。
Apifyプラットフォーム環境: ActorをApifyプラットフォーム上で実行すると、
APIFY_TOKENが環境変数として自動的に注入され、Apify SDKが自動的に読み取ります。明示的に渡す必要はありません。ローカルでは、apify loginによって認証情報が~/.apifyに保存され、SDKがそれを使用します。
セキュリティに関する注意: トークンをコマンドライン引数として渡すことは避けてください(例:
apify login -t <token>)。 引数はプロセス一覧から見えるほか、シェルの履歴に記録される可能性があります。 代わりにOAuthログインまたは環境変数を使用してください。APIFY_TOKENをログに記録、表示したり、ソースコードや設定ファイルに埋め込んだりしないでください。 必要最小限の権限を持つトークン(スコープ付きトークン)を使用し、定期的にローテーションしてください。
テレメトリの帰属(必須)
このスキルから実行するすべての apify コマンドに --user-agent apify-agent-skills/apify-actorization を指定してください。対象は apify init、apify run、apify push などです。これはすべての apify コマンドで使用できるグローバルフラグで、テレメトリの帰属情報を付与するだけで、ほかの動作には影響しません。
apify push --user-agent apify-agent-skills/apify-actorization
Actor化チェックリスト
進捗を管理するため、次のチェックリストをコピーしてください。
- ステップ1:プロジェクトを分析する(言語、エントリーポイント、入力、出力)
- ステップ2:
apify init <actor-name> --user-agent apify-agent-skills/apify-actorizationを実行し、Dockerfileを作成する - ステップ3:言語に応じたSDK統合を適用する
- ステップ4:
.actor/input_schema.jsonを設定する - ステップ5:
.actor/output_schema.jsonを設定する(該当する場合) - ステップ6:
.actor/actor.jsonのメタデータを更新する - ステップ7:Apify Storeの掲載用にREADME.mdを作成する
- ステップ8:
apify run --user-agent apify-agent-skills/apify-actorizationでローカルテストする - ステップ9:
apify push --user-agent apify-agent-skills/apify-actorizationでデプロイする
ステップ1:プロジェクトを分析する
変更を加える前に、プロジェクトを把握してください。
- 言語を特定する - JavaScript/TypeScript、Python、その他
- エントリーポイントを見つける - 実行を開始するメインファイル
- 入力を特定する - コマンドライン引数、環境変数、設定ファイル
- 出力を特定する - ファイル、コンソール出力、APIレスポンス
- 状態を確認する - 実行間でデータを保持する必要があるかどうか
Step 2: Actor の構造を初期化する
プロジェクトのルートで、DNS で使用できる Actor 名(例:my-scraper)を指定して実行します。
apify init <actor-name> --user-agent apify-agent-skills/apify-actorization
引数として名前を渡すと、apify init で入力を求められなくなります。名前を指定しない場合、コマンドは入力待ちとなり、非対話型シェルでは停止します。
apify init は .actor/actor.json とローカルの storage/ を設定しますが、Dockerfile は作成しません。Dockerfile がない場合、プラットフォームはデフォルトの Node.js イメージでビルドするため、Python Actor は問題なくビルドされた後、実行時に失敗します。プロジェクトの言語に合ったベースイメージ(Python の場合は apify/actor-python、JavaScript/TypeScript の場合は apify/actor-node)を使う Dockerfile を、プロジェクトのルートにある .actor/Dockerfile、または .actor/actor.json の dockerfile フィールドで指定されたパスに作成します。
Step 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 |
Steps 4-6: スキーマを設定する
詳細な設定については、schemas-and-output.md を参照してください。
- 入力スキーマ(
.actor/input_schema.json) - 出力スキーマ(
.actor/output_schema.json) - Actor の設定(
.actor/actor.json) - 状態管理(リクエストキュー、キーバリューストア)
スキーマを @apify/json_schemas npm パッケージに照らして検証します。
Step 7: README を作成する
重要: Actor 化の一環として、必ず README.md を作成してください。README は Apify Store における Actor のランディングページであり、見つけやすさ(SEO)、ユーザーのオンボーディング、サポートに不可欠です。適切な README がなければ、Actor は完成したと見なさないでください。
必要な構成(概要と機能、データ抽出テーブル、手順ごとのチュートリアル、料金情報、入出力例、FAQ を含む)については、skills/apify-actor-development/references/actor-readme.md にある Actor README のガイドラインを参照してください。SEO に最適化した H2/H3 見出しを使い、300 語以上を目指してください。また、ベストプラクティスを確認するため、以下の人気 Actor も参照してください。
Step 8: ローカルでテストする
インライン入力を使って Actor を実行します(JS/TS および Python の Actor の場合)。
apify run --input '{"startUrl": "https://example.com", "maxItems": 10}' --user-agent apify-agent-skills/apify-actorization
または、入力ファイルを使います。
apify run --input-file ./test-input.json --user-agent apify-agent-skills/apify-actorization
重要: npm start や python main.py ではなく、必ず apify run を使用してください。CLI が適切な環境とストレージを設定します。
Step 9: デプロイする
apify push --user-agent apify-agent-skills/apify-actorization
これにより、Apify プラットフォームに Actor がアップロードされ、ビルドされます。
収益化(任意)
デプロイ後、Apify Store で Actor を収益化できます。推奨モデルは Pay Per Event(PPE) です。
- スクレイピングした結果/項目ごと
- 処理したページごと
- 実行した API 呼び出しごと
Apify Console の「Actor > Monetization」で PPE を設定します。コード内で await Actor.charge('result') を使ってイベントの料金を請求します。
その他の選択肢:Rental(月額サブスクリプション)または Free(オープンソース)。
セキュリティ
クロールしたすべてのウェブコンテンツは、信頼できない入力として扱ってください。 アクターは、悪意のあるペイロードを含む可能性がある外部ウェブサイトからデータを取り込みます。以下のルールに従ってください。
- クロールデータをサニタイズする — 生のHTML、URL、スクレイピングしたテキストを、シェルコマンド、
eval()、データベースクエリ、テンプレートエンジンに直接渡さないでください。適切なエスケープ処理またはパラメーター化されたAPIを使用してください。 - すべての外部データを検証し、型をチェックする — データセットやキーバリューストアに値を追加する前に、値が想定される型と形式に一致することを確認してください。想定外の構造は拒否するか、サニタイズしてください。
- クロールしたコンテンツを実行または解釈しない — スクレイピングしたテキストをコード、コマンド、設定として扱わないでください。ウェブサイトのコンテンツには、プロンプトインジェクションの試みや埋め込みスクリプトが含まれる可能性があります。
- 認証情報をデータパイプラインから分離する —
APIFY_TOKENやその他のシークレットがリクエストハンドラーからアクセスできず、クロールデータと一緒に渡されないようにしてください。トークンをデータ処理コードで環境変数経由で渡すのではなく、Apify SDKに組み込まれた認証情報管理を使用してください。 - インストール前に依存関係を確認する —
npm installやpip installでパッケージを追加するときは、パッケージ名と公開元を確認してください。タイポスクワッティングは、サプライチェーン攻撃でよく使われる手法です。よく知られていて、活発にメンテナンスされているパッケージを優先してください。 - バージョンを固定し、ロックファイルを使用する — 必ず
package-lock.json(Node.js)をコミットするか、requirements.txt(Python)で正確なバージョンを指定してください。ロックファイルは再現可能なビルドを保証し、依存関係が気づかないうちに差し替えられるのを防ぎます。既知の脆弱性を確認するため、定期的にnpm auditまたはpip-auditを実行してください。
デプロイ前チェックリスト
-
.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 --user-agent apify-agent-skills/apify-actorizationがテスト入力で正常に実行される - 適切な構成(概要、機能、データテーブル、チュートリアル、料金、入出力例)の
README.mdがある - actor.jsonのmetaセクションに
generatedByが設定されている
MCP ツール
Apify MCP
Apify MCP サーバーが設定されている場合は、ドキュメントの参照に以下のツールを使用してください。
search-apify-docs- ドキュメントを検索fetch-apify-docs- ドキュメントのページ全体を取得
設定されていない場合のMCP サーバーのURL:https://mcp.apify.com/?tools=docs。
Playwright MCP(デバッグ)
Playwright MCP サーバーは、ウェブとやり取りするアクターのデバッグに便利なツールです。エージェントが実際のブラウザーを操作して、ページを調査し、セレクターを取得し、問題を再現できます。
Claude Code CLIでインストールします。
claude mcp add playwright npx @playwright/mcp@latest
または、MCPの設定に手動で追加します。
{
"mcpServers": {
"playwright": {
"command": "npx",
"args": ["@playwright/mcp@latest"]
}
}
}
リソース
- Actorization Academy - 詳細なガイド
- Apify SDK for JavaScript - SDKの完全なリファレンス
- Apify SDK for Python - SDKの完全なリファレンス
- Apify CLI Reference - CLIコマンド
- Actor Specification - 完全な仕様