kuroco-webhook-processing

Kuroco Webhook・バッチ処理パターン

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "kuroco-webhook-processing" with this command: npx skills add diverta/kuroco-skills/diverta-kuroco-skills-kuroco-webhook-processing

Kuroco Webhook・バッチ処理パターン

Kuroco HeadlessCMSでのWebhook、バッチ処理、外部連携に関するベストプラクティス。

ドキュメント参照: /kuroco-docs スキルを使用してKuroco公式ドキュメントを検索・参照できます。

目次

  • バッチ処理

  • 内部API呼び出し

  • 外部API呼び出し

  • トリガー処理

  • 外部サービス連携 → 詳細は references/integrations.md

Smarty構文について: バッチ処理・トリガーはSmartyテンプレートで記述します。構文やプラグインの詳細は /kuroco-smarty-plugins スキルを参照してください。

バッチ処理

概要

バッチ処理は一定時間ごとに自動実行される処理。

実行頻度の選択肢:

頻度 用途

15分毎 頻繁な同期が必要な場合

30分毎 準リアルタイム処理

1時間毎 定期的な集計・更新

毎日(指定時刻) 日次レポート、バックアップ

ユースケース

  • 外部システムへのCSV生成・連携

  • 外部システムからのデータ取り込み

  • ログ集計・統計データ算出

  • 定期的なメール配信

  • GitHub Actions連携(デプロイトリガー)

バッチ処理の作成

管理画面: [オペレーション] → [バッチ処理] → [追加]

項目 説明 例

タイトル バッチの名前 CSV出力バッチ

識別子 ユニークな識別子(英数字) csv_export

実行頻度 実行間隔 毎日 03:00

実行内容 Smarty構文で記述 下記参照

内部API呼び出し

基本構文

{api_internal endpoint='/rcms-api/1/news' method='GET' member_id=1 queries=$queries var='response' }

コンテンツ一覧取得

{assign var="queries" value=$dataSet.emptyArray} {append var="queries" index="cnt" value=0} {append var="queries" index="filter" value="topics_flg = 1"}

{api_internal endpoint='/rcms-api/1/news' method='GET' member_id=1 queries=$queries var='news_list' }

{foreach from=$news_list.list item="news"} ID: {$news.topics_id}, タイトル: {$news.subject} {/foreach}

コンテンツ作成

{assign var="body" value=$dataSet.emptyArray} {append var="body" index="subject" value="タイトル"} {append var="body" index="contents" value="本文"} {append var="body" index="topics_flg" value=1}

{api_internal endpoint='/rcms-api/1/news/insert' method='POST' member_id=1 body=$body var='result' }

外部API呼び出し

基本構文

{api_request url='https://api.example.com/endpoint' method='GET' headers=$headers body=$body var='response' }

POSTリクエスト例

{assign var="headers" value=$dataSet.emptyArray} {append var="headers" index="Content-Type" value="application/json"} {append var="headers" index="Authorization" value="Bearer YOUR_API_KEY"}

{assign var="body" value=$dataSet.emptyArray} {append var="body" index="message" value="Hello"}

{api_request url='https://api.example.com/post' method='POST' headers=$headers body=$body|@json_encode var='response' }

トリガー処理

コンテンツ更新時のトリガー

管理画面: [コンテンツ定義] → [トリガー設定]

利用可能なイベント:

イベント タイミング

作成時 コンテンツ新規作成後

更新時 コンテンツ更新後

削除時 コンテンツ削除後

公開時 公開ステータス変更時

利用可能な変数:

{$topics.topics_id} {* コンテンツID } {$topics.subject} { タイトル } {$topics.contents} { 本文 } {$topics.ymd} { 公開日 } {$topics.ext_col_01} { 拡張項目 *}

フォーム送信時のトリガー

管理画面: [フォーム] → [トリガー設定]

{$inquiry.inquiry_id} {* 回答ID } {$inquiry.name} { 名前 } {$inquiry.email} { メールアドレス } {$inquiry.message} { メッセージ *}

外部サービス連携

詳細な連携パターン: references/integrations.md を参照

Slack通知

{assign var="message" value=$dataSet.emptyArray} {append var="message" index="text" value="通知メッセージ"}

{slack_send webhook_url="https://hooks.slack.com/services/xxx/yyy/zzz" body=$message|@json_encode }

メール通知

{send_mail to="recipient@example.com" subject="件名" body="本文" }

GitHub Actions連携

{assign var="headers" value=$dataSet.emptyArray} {append var="headers" index="Authorization" value="token YOUR_GITHUB_TOKEN"} {append var="headers" index="Accept" value="application/vnd.github.v3+json"}

{assign var="body" value=$dataSet.emptyArray} {append var="body" index="event_type" value="kuroco-update"}

{api_request url='https://api.github.com/repos/owner/repo/dispatches' method='POST' headers=$headers body=$body|@json_encode var='response' }

ベストプラクティス

負荷を考慮した実行時間

  • システム負荷の低い時間帯(深夜・早朝)に設定

  • 大量データ処理は1日1回に制限

  • ページネーションを使用して分割処理

エラーハンドリング

{api_internal endpoint='/rcms-api/1/news' method='GET' member_id=1 var='response' }

{if $response.errors} {slack_send webhook_url="..." text="エラー: {$response.errors|@json_encode}"} {log message="エラー: {$response.errors|@json_encode}"} {else} {log message="処理完了: {$response.pageInfo.totalCnt}件"} {/if}

タイムアウト対策

大量データは分割処理:

{assign var="page" value=1} {while true} {assign var="queries" value=$dataSet.emptyArray} {append var="queries" index="pageID" value=$page} {append var="queries" index="cnt" value=100}

{api_internal endpoint='/rcms-api/1/news' method='GET' member_id=1 queries=$queries var='response'}

{foreach from=$response.list item="item"} {* 処理 *} {/foreach}

{if $page >= $response.pageInfo.totalPageCnt}{break}{/if} {assign var="page" value=$page+1} {/while}

関連スキル

  • /kuroco-smarty-plugins

  • Smartyプラグイン・構文リファレンス(バッチ処理・トリガーで使用する構文の詳細)

  • /kuroco-content-management

  • コンテンツ管理

  • /kuroco-api-integration

  • API設計・実装

関連ドキュメント

  • docs/tutorials/how-to-use-batch.md

  • バッチ処理の使い方

  • docs/tutorials/auto-run-github-with-contents-update.md

  • GitHub Actions連携

  • docs/tutorials/send-slack-notification-after-a-form-has-been-submitted.md

  • Slack通知

  • docs/reference/trigger-variables.md

  • トリガー変数

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

General

kuroco-docs

No summary provided by upstream source.

Repository SourceNeeds Review
General

kuroco-frontend-integration

No summary provided by upstream source.

Repository SourceNeeds Review
General

kuroco-server-processing

No summary provided by upstream source.

Repository SourceNeeds Review
General

kuroco-api-integration

No summary provided by upstream source.

Repository SourceNeeds Review