rpa-bot-generation について
ServiceNow RPA Hubの利用者向けスキルです。自然言語の業務説明からボット定義やアクションを作成し、トリガー、認証情報、実行状況の監視も扱います。APIのないシステムや反復作業の自動化に対応します。
主な機能
- 01業務説明からボット定義を作成
- 02UI自動化とデータ処理アクションの設定
- 03フロー、スケジュール、イベントのトリガー設定
- 04認証情報とロボットグループの管理
- 05実行記録の検索と障害追跡
活用シーン
- 01デスクトップアプリ間のデータ入力を自動化
- 02APIのないレガシーシステムと連携
- 03ServiceNowのフローやスケジュールからボットを起動
- 04ボットの実行状況と失敗を監視
MCP 対応
例ではMCPツールを使い、ServiceNowのRPAプロセス、ボット、アクション、トリガー、認証情報を作成し、実行記録や分析データを検索します。
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ happy-technologies-llc/ happy-platform-skills --skill rpa-bot-generationインストール後、Claude Code で/rpa-bot-generationを入力して読み込まれたか確認します。
詳細
RPA ボットの生成
概要
このスキルは、自然言語によるプロセスの説明から、ServiceNow RPA Hub でロボティック・プロセス・オートメーション(RPA)ボットを生成します。以下を扱います。
- ビジネスプロセスの説明を構造化されたボット定義に変換する
- UI オートメーション、データ抽出、システム連携のためのボットアクションを作成する
- ServiceNow のワークフロー、スケジュール、イベントからボットを起動するトリガーを設定する
- 再試行ロジック、例外の捕捉、フォールバック経路を備えたエラー処理戦略を実装する
- ボットが対象アプリケーションにアクセスするための認証情報を安全に管理する
- ワークロード分散と高可用性のために、ボットをロボットグループにまとめる
- パフォーマンス分析と失敗の追跡によって、ボットの実行を監視する
使用する場面:
- プロセスマイニングで特定された反復的な手作業を自動化する場合
- API を持たないレガシーシステムをつなぐボットを構築する場合
- 対象アプリケーションで ServiceNow Integration Hub のスポークを利用できない場合
- デスクトップアプリケーション間のデータ入力、抽出、検証を自動化する場合
- エージェントが支援する自動化のシナリオ向けに有人ボットを作成する場合
前提条件
- ロール:
sn_rpa.admin、sn_rpa.designer、sn_rpa.operator、またはadmin - プラグイン:
com.sn_rpa(RPA Hub)、com.sn_rpa.designer(RPA Desktop Design Studio) - アクセス権: sn_rpa_bot、sn_rpa_action、sn_rpa_process テーブルへの読み取り/書き込みアクセス
- 知識: RPA の概念(有人ボットと無人ボット、セレクター、記録)、対象アプリケーションの UI 構造、組織の自動化ガバナンスフレームワークに関する理解
- インフラストラクチャ: ServiceNow RPA agent をインストールした RPA ロボットマシンがプロビジョニングされていること
主な RPA テーブル
| テーブル | 目的 | 主なフィールド |
|---|---|---|
sn_rpa_bot | ボット定義 | name、description、state、bot_type、process、version、owner、robot_group |
sn_rpa_action | 個々のボットアクション/ステップ | bot、action_type、order、name、target_application、selector、input_data、output_variable、error_handling |
sn_rpa_process | ビジネスプロセス定義 | name、description、category、owner、state、estimated_savings、complexity |
sn_rpa_credential | 認証情報ボルトのエントリー | name、application、credential_type、username、vault_id、rotation_policy |
sn_rpa_trigger | ボット実行トリガー | bot、trigger_type、schedule、flow、event、condition |
sn_rpa_execution | ボット実行ログ | bot、state、start_time、end_time、duration、status、error_message、robot、transactions_processed |
sn_rpa_robot_group | ロボットのグループ | name、description、robots、max_concurrent、priority |
手順
ステップ 1:プロセスの説明を分析する
ユーザーのプロセス説明を解析し、以下を特定します。
- プロセスの範囲: ボットが最初から最後まで自動化する内容
- 対象アプリケーション: ボットが連携するシステム
- 入力データ: ボットの開始に必要なデータ(スプレッドシート、レコード、キュー)
- アクション: 順番に実行するステップ(クリック、入力、読み取り、移動、抽出、検証)
- 出力: ボットが生成するもの(更新されたレコード、レポート、確認)
- 例外: 既知のエラーシナリオと想定される処理
ステップ 2:プロセス定義を作成する
RPA Hub にビジネスプロセスを登録します。
MCP を使用する場合(Claude Code/Desktop):
Tool: SN-Create-Record
Parameters:
table_name: sn_rpa_process
fields:
name: "Invoice Data Entry Automation"
description: "Automates entry of approved invoice data from ServiceNow into the legacy ERP system. Process handles single invoice entry including vendor lookup, line item entry, and approval submission."
category: finance
owner: [process_owner_sys_id]
state: design
estimated_savings: 2400
complexity: medium
manual_steps: 15
avg_manual_time_minutes: 12
volume_per_month: 200
REST API を使用する場合:
POST /api/now/table/sn_rpa_process
Content-Type: application/json
{
"name": "Invoice Data Entry Automation",
"description": "Automates entry of approved invoice data from ServiceNow into the legacy ERP system.",
"category": "finance",
"owner": "[process_owner_sys_id]",
"state": "design",
"estimated_savings": "2400",
"complexity": "medium"
}
ステップ 3:ボット定義を作成する
プロセスに関連付けられたボットを定義します。
MCP を使用する場合:
Tool: SN-Create-Record
Parameters:
table_name: sn_rpa_bot
fields:
name: "Invoice Entry Bot"
description: "Unattended bot that enters approved invoices into the legacy ERP system"
state: draft
bot_type: unattended
process: [process_sys_id]
version: "1.0"
owner: [bot_owner_sys_id]
robot_group: [robot_group_sys_id]
max_retries: 3
timeout_minutes: 30
REST API を使用する場合:
POST /api/now/table/sn_rpa_bot
Content-Type: application/json
{
"name": "Invoice Entry Bot",
"description": "Unattended bot for legacy ERP invoice entry",
"state": "draft",
"bot_type": "unattended",
"process": "[process_sys_id]",
"version": "1.0",
"max_retries": "3",
"timeout_minutes": "30"
}
ステップ 4:ボットアクションを定義する
ボットのワークフローを構成する、順次実行されるアクションを作成します。
アクション 1:対象アプリケーションを開く:
Tool: SN-Create-Record
Parameters:
table_name: sn_rpa_action
fields:
bot: [bot_sys_id]
action_type: open_application
order: 100
name: "Launch ERP Application"
target_application: "SAP GUI"
input_data: '{"executable_path": "C:\\Program Files\\SAP\\SAPgui\\saplogon.exe", "connection": "PRD"}'
timeout_seconds: 30
error_handling: retry
retry_count: 2
アクション 2:管理された認証情報でログインする:
Tool: SN-Create-Record
Parameters:
table_name: sn_rpa_action
fields:
bot: [bot_sys_id]
action_type: credential_login
order: 200
name: "Login to ERP"
credential: [credential_sys_id]
selector: '{"username_field": "#txtUser", "password_field": "#txtPassword", "login_button": "#btnLogin"}'
timeout_seconds: 15
error_handling: fail
error_message: "ERP login failed - check credentials in vault"
アクション 3:移動してデータを入力する:
Tool: SN-Create-Record
Parameters:
table_name: sn_rpa_action
fields:
bot: [bot_sys_id]
action_type: data_entry
order: 300
name: "Enter Invoice Header"
target_application: "SAP GUI"
input_data: |
{
"transaction": "FB60",
"fields": {
"vendor": "{invoice.vendor_number}",
"invoice_date": "{invoice.invoice_date}",
"posting_date": "{invoice.posting_date}",
"amount": "{invoice.total_amount}",
"currency": "{invoice.currency}",
"reference": "{invoice.sn_number}"
}
}
timeout_seconds: 20
error_handling: screenshot_and_fail
アクション 4:検証して送信する:
Tool: SN-Create-Record
Parameters:
table_name: sn_rpa_action
fields:
bot: [bot_sys_id]
action_type: validation
order: 400
name: "Validate Entry and Submit"
input_data: |
{
"validation_checks": [
{"field": "status_bar", "expected": "Document posted", "selector": "#statusBar"},
{"field": "document_number", "not_empty": true, "selector": "#docNumber"}
],
"on_success": "capture_document_number",
"on_failure": "screenshot_and_rollback"
}
output_variable: erp_document_number
timeout_seconds: 15
アクション 5:ServiceNow レコードを更新する:
Tool: SN-Create-Record
Parameters:
table_name: sn_rpa_action
fields:
bot: [bot_sys_id]
action_type: servicenow_update
order: 500
name: "Update Invoice Record in ServiceNow"
input_data: |
{
"table": "ap_invoice",
"sys_id": "{invoice.sys_id}",
"fields": {
"erp_reference": "{erp_document_number}",
"state": "posted",
"work_notes": "Bot: Invoice posted to ERP. Document: {erp_document_number}"
}
}
ステップ 5:認証情報の管理を設定する
ボット認証用の認証情報を安全に保存するよう設定します。
MCP を使用する場合:
Tool: SN-Create-Record
Parameters:
table_name: sn_rpa_credential
fields:
name: "ERP Service Account - Invoice Bot"
application: "SAP ERP"
credential_type: username_password
username: svc_rpa_invoice
vault_id: [credential_vault_id]
rotation_policy: 90_days
owner: [security_team_sys_id]
ステップ 6:ボットのトリガーを設定する
ボットを実行するタイミングと方法を設定します。
MCP を使用する場合:
Tool: SN-Create-Record
Parameters:
table_name: sn_rpa_trigger
fields:
bot: [bot_sys_id]
trigger_type: flow
flow: [flow_sys_id]
condition: "invoice.state == 'approved' && invoice.erp_reference == ''"
description: "Trigger bot when invoice is approved and not yet posted to ERP"
active: true
priority: normal
スケジュールベースのトリガー:
Tool: SN-Create-Record
Parameters:
table_name: sn_rpa_trigger
fields:
bot: [bot_sys_id]
trigger_type: schedule
schedule: "0 */2 * * 1-5"
description: "Run every 2 hours on weekdays to process queued invoices"
active: true
max_batch_size: 50
ステップ 7:ボットの実行を監視する
パフォーマンスとエラーの追跡のために、実行ログを照会します。
MCP を使用する場合:
Tool: SN-Query-Table
Parameters:
table_name: sn_rpa_execution
query: bot=[bot_sys_id]^ORDERBYDESCstart_time
fields: sys_id,bot,state,start_time,end_time,duration,status,error_message,robot,transactions_processed
limit: 50
実行分析を生成する:
Tool: SN-Execute-Background-Script
Parameters:
script: |
var analytics = {
period: 'Last 30 days',
total_executions: 0,
successful: 0,
failed: 0,
avg_duration_seconds: 0,
total_transactions: 0,
success_rate: 0,
common_errors: {},
time_saved_hours: 0
};
var ga = new GlideAggregate('sn_rpa_execution');
ga.addQuery('start_time', '>=', gs.daysAgo(30));
ga.addAggregate('COUNT');
ga.addAggregate('AVG', 'duration');
ga.addAggregate('SUM', 'transactions_processed');
ga.query();
if (ga.next()) {
analytics.total_executions = parseInt(ga.getAggregate('COUNT'));
analytics.avg_duration_seconds = Math.round(parseFloat(ga.getAggregate('AVG', 'duration')) || 0);
analytics.total_transactions = parseInt(ga.getAggregate('SUM', 'transactions_processed')) || 0;
}
var success = new GlideAggregate('sn_rpa_execution');
success.addQuery('start_time', '>=', gs.daysAgo(30));
success.addQuery('status', 'success');
success.addAggregate('COUNT');
success.query();
if (success.next()) {
analytics.successful = parseInt(success.getAggregate('COUNT'));
if (analytics.total_executions > 0)
analytics.success_rate = Math.round((analytics.successful / analytics.total_executions) * 100);
}
analytics.failed = analytics.total_executions - analytics.successful;
// Estimate time saved (12 min manual per transaction)
analytics.time_saved_hours = Math.round((analytics.total_transactions * 12) / 60);
gs.info('RPA EXECUTION ANALYTICS:\n' + JSON.stringify(analytics, null, 2));
description: "RPA: Generate bot execution analytics for last 30 days"
ツールの使用
| 操作 | MCP ツール | REST エンドポイント |
|---|---|---|
| プロセスの作成 | SN-Create-Record | POST /api/now/table/sn_rpa_process |
| ボットの作成 | SN-Create-Record | POST /api/now/table/sn_rpa_bot |
| アクションの作成 | SN-Create-Record | POST /api/now/table/sn_rpa_action |
| トリガーの作成 | SN-Create-Record | POST /api/now/table/sn_rpa_trigger |
| 実行の照会 | SN-Query-Table | GET /api/now/table/sn_rpa_execution |
| 認証情報の管理 | SN-Create-Record | POST /api/now/table/sn_rpa_credential |
| 分析 | SN-Execute-Background-Script | POST /api/now/table/sys_trigger |
ベストプラクティス
- プロセスを最初に: ボットを構築する前に、必ず手動プロセスを完全に文書化してください。プロセスへの理解不足は、ボットが失敗する最大の原因です
- アクションのモジュール化: ボットを小さく再利用可能なアクションに分割してください。100 以上のステップを含む巨大なボットは作成しないでください
- エラー時のスクリーンショット: デバッグに役立つよう、重要なアクションすべてで失敗時にスクリーンショットを撮影する設定にしてください
- 認証情報のローテーション: 自動ローテーションを備えた認証情報ボルトを使用してください。ボット定義にパスワードをハードコードしないでください
- 冪等性: ボットを安全に再実行できるよう設計してください。処理の前に、作業がすでに完了しているか確認してください
- スロットリング: 対象アプリケーションへの負荷を避けるため、アクション間に遅延を加えてください。レート制限を守ってください
- ロボットグループ: 大量のプロセスでは、複数のロボットに作業負荷を分散してください
- 監視アラート: 特にビジネスクリティカルなプロセスでは、ボットの失敗時に通知されるよう設定してください
- バージョン管理: 変更のたびにボットのバージョンを更新し、ロールバックできる状態を維持してください
- 人間による確認: リスクの高いプロセス(財務、コンプライアンス)では、最終送信の前に人間による承認ステップを追加してください
トラブルシューティング
ボットが対象アプリケーションを起動できない
症状: 最初のアクションが「application not found」または「timeout」で失敗する 原因: ロボットのマシンに対象アプリケーションがインストールされていないか、パスが間違っています 解決策: ロボットのマシンで実行可能ファイルのパスを確認してください。RPA エージェントサービスが実行中であることを確認してください。ロボットユーザーにアプリケーションの起動権限があることを確認してください。
セレクターが見つからないエラー
症状: ボットが対象アプリケーション内の UI 要素を見つけられない 原因: アプリケーションの UI が変更されています(アップデート、パッチ、動的な要素 ID) 解決策: RPA Desktop Design Studio を使用してセレクターを再記録してください。動的なセレクター(実行時 ID)よりも、安定したセレクター(name、automationId)を使用してください。要素を操作する前に待機条件を追加してください。
認証情報ボルトへのアクセスが拒否される
症状: ボットがボルトから認証情報を取得できない
原因: ロボットのサービスアカウントにボルトへのアクセス権がないか、認証情報レコードが無効です
解決策: ロボットのサービスアカウントに sn_rpa.credential_user ロールがあることを確認してください。認証情報レコードの状態が有効で、正しいロボットグループに割り当てられていることを確認してください。
ボット実行キューの滞留
症状: ボットの実行がキューに入るものの、開始されない
原因: グループ内のすべてのロボットがビジー状態、オフライン、または同時実行数の上限に達しています
解決策: sn_rpa_robot_group でロボットの稼働状況を確認してください。リソースに余裕があれば max_concurrent を増やしてください。水平スケーリングのため、グループにロボットを追加してください。
例
例 1:従業員のオンボーディングボット
シナリオ: 3 つのシステムにわたる新入社員アカウントの作成を自動化する
プロセス定義:
- 入力:ServiceNow から承認済みの人事オンボーディング申請
- ステップ 1:Active Directory アカウントを作成する
- ステップ 2:Exchange にメールボックスを作成する
- ステップ 3:レガシー人事システムでアクセス権を付与する
- ステップ 4:ServiceNow のオンボーディングタスクを完了として更新する
例 2:レポート生成ボット
シナリオ: レガシーシステムから週次コンプライアンスレポートを生成して配信します
Tool: SN-Create-Record
Parameters:
table_name: sn_rpa_bot
fields:
name: "Weekly Compliance Report Bot"
description: "Logs into compliance portal, generates report, downloads PDF, attaches to ServiceNow task"
bot_type: unattended
state: draft
version: "1.0"
トリガー: 毎週月曜日の午前 6:00 にスケジュールされています
関連スキル
genai/flow-generation- RPA をほかの自動化と連携させるための Flow Designergenai/playbook-generation- ボットをトリガーする Process Automation のプレイブックgenai/spoke-generation- RPA に代わる API ファーストの選択肢としての Integration Hub スポークadmin/workflow-creation- RPA トリガーとのワークフロー連携development/scheduled-jobs- ボット実行のスケジュール設定