@@ -42,21 +46,21 @@ Choisissez votre méthode de saisie dans le menu déroulant :
- Langage naturel : les utilisateurs tapent des questions ou des demandes
- - Conversationnel : idéal pour les workflows alimentés par l'IA
+ - Conversationnel : idéal pour les flux de travail alimentés par l'IA
-
Discutez avec votre workflow et accédez au texte saisi, à l'ID de conversation et aux fichiers téléchargés pour des réponses contextuelles.
+
Discutez avec votre flux de travail et accédez au texte saisi, à l'identifiant de conversation et aux fichiers téléchargés pour des réponses contextuelles.
## Utilisation des variables de chat
-En mode Chat, accédez aux entrées utilisateur et au contexte de la conversation grâce à des variables spéciales :
+En mode Chat, accédez aux entrées utilisateur et au contexte de conversation via des variables spéciales :
- **`
`** - Contient le texte du message de l'utilisateur
- **``** - Identifiant unique pour le fil de conversation
diff --git a/apps/docs/content/docs/ja/blocks/workflow.mdx b/apps/docs/content/docs/ja/blocks/workflow.mdx
index afc013defc..5ca1c3dcd1 100644
--- a/apps/docs/content/docs/ja/blocks/workflow.mdx
+++ b/apps/docs/content/docs/ja/blocks/workflow.mdx
@@ -1,168 +1,40 @@
---
-title: ワークフロー
+title: ワークフローブロック
+description: 現在のフロー内で別のワークフローを実行する
---
import { Callout } from 'fumadocs-ui/components/callout'
-import { Step, Steps } from 'fumadocs-ui/components/steps'
-import { Tab, Tabs } from 'fumadocs-ui/components/tabs'
import { Image } from '@/components/ui/image'
-ワークフローブロックを使用すると、現在のワークフロー内で他のワークフローを再利用可能なコンポーネントとして実行できます。これにより、モジュール式の設計、コードの再利用、そして小規模で焦点を絞ったワークフローから構成される複雑なネストされたワークフローの作成が可能になります。
+## 機能
-
+
-
- ワークフローブロックは、小規模で再利用可能なコンポーネントから複雑なワークフローを構成できるようにすることで、モジュール式の設計を可能にします。
+より大きなフローの一部として子ワークフローを呼び出したい場合は、ワークフローブロックをドロップします。このブロックは、そのワークフローの最新デプロイバージョンを実行し、完了するまで待機してから、親ワークフローを続行します。
+
+## 設定方法
+
+1. **ワークフローを選択** ドロップダウンから選びます(ループを防ぐため自己参照はブロックされています)。
+2. **入力のマッピング**: 子ワークフローに入力フォームトリガーがある場合、各フィールドが表示され、親変数を接続できます。マッピングされた値が子ワークフローが受け取る内容になります。
+3. **出力**: 子ワークフローが完了すると、ブロックは以下を公開します:
+ - `result` – 子ワークフローの最終応答
+ - `success` – エラーなく実行されたかどうか
+ - `error` – 実行が失敗した場合のメッセージ
+
+## 実行に関する注意点
+
+- 子ワークフローは同じワークスペースコンテキストで実行されるため、環境変数とツールは引き継がれます。
+- このブロックはデプロイメントバージョニングを使用します:API、スケジュール、Webhook、手動、またはチャット実行はデプロイされたスナップショットを呼び出します。子ワークフローを変更した場合は再デプロイしてください。
+- 子ワークフローが失敗すると、下流で処理しない限り、ブロックはエラーを発生させます。
+
+
+子ワークフローは焦点を絞ったものにしましょう。小さく再利用可能なフローにすることで、深いネストを作らずに組み合わせやすくなります。
-
-## 概要
-
-ワークフローブロックはワークフロー間の橋渡しとして機能し、以下のことを可能にします:
-
-
-
- 既存のワークフローを再利用する:以前に作成したワークフローを新しいワークフロー内のコンポーネントとして実行する
-
-
- モジュール式の設計を作成する:複雑なプロセスを小さく管理しやすいワークフローに分解する
-
-
- 関心の分離を維持する:異なるビジネスロジックを別々のワークフローに分離して保持する
-
-
- チームコラボレーションを可能にする:異なるプロジェクトやチームメンバー間でワークフローを共有し再利用する
-
-
-
-## 動作の仕組み
-
-ワークフローブロックは:
-
-1. ワークスペース内の別のワークフローへの参照を取得します
-2. 現在のワークフローから子ワークフローに入力データを渡します(start.inputを通じて利用可能)
-3. 子ワークフローを分離されたコンテキストで実行します
-4. 結果を親ワークフローに返して、さらに処理を行います
-
-## 設定オプション
-
-### ワークフローの選択
-
-ワークスペースで利用可能なワークフローのドロップダウンリストから実行するワークフローを選択します。リストには以下が含まれます:
-
-- 現在のワークスペースでアクセスできるすべてのワークフロー
-- チームの他のメンバーから共有されたワークフロー
-- 有効および無効の両方のワークフロー(ただし実行できるのは有効なワークフローのみ)
-
-### 実行コンテキスト
-
-子ワークフローは以下の条件で実行されます:
-
-- 独自の分離された実行コンテキスト
-- 同じワークスペースリソース(APIキー、環境変数)へのアクセス
-- 適切なワークスペースメンバーシップと権限チェック
-- 実行ログ内のネストされたトレーススパン
-
-
- **循環検出**: システムは自動的にワークフロー間の循環依存関係を検出し、無限ループを防止します。
-
-
-## 入力と出力
-
-
-
-
- -
- ワークフロー選択: 実行するワークフローを選択
-
- -
- 入力データ: 子ワークフローに渡す変数またはブロック参照
-
- -
- 実行コンテキスト: ワークスペースリソースを持つ分離環境
-
-
-
-
-
- -
- workflow.success: 完了ステータスを示すブール値
-
- -
- workflow.childWorkflowName: 実行された子ワークフローの名前
-
- -
- workflow.result: 子ワークフローから返された結果
-
- -
- workflow.error: ワークフローが失敗した場合のエラー詳細
-
-
-
-
-
- -
- ワークフローレスポンス: 子ワークフローからの主要な出力
-
- -
- 実行ステータス: 成功ステータスとエラー情報
-
- -
- アクセス: ワークフロー後のブロックで利用可能
-
-
-
-
-
-## 使用例
-
-### モジュール式顧客オンボーディング
-
-
-
シナリオ: 複雑なオンボーディングを再利用可能なコンポーネントに分解
-
- - メインワークフローが顧客データを受信
- - ワークフローブロックが検証ワークフローを実行
- - ワークフローブロックがアカウント設定ワークフローを実行
- - ワークフローブロックが歓迎メールワークフローを実行
-
-
-
-### マイクロサービスアーキテクチャ
-
-
-
シナリオ: 独立したサービスワークフローを作成
-
- - 決済処理ワークフローがトランザクションを処理
- - 在庫管理ワークフローが在庫を更新
- - 通知ワークフローが確認を送信
- - メインワークフローがすべてのサービスを調整
-
-
-
-### 条件付き処理
-
-
-
シナリオ:条件に基づいて異なるワークフローを実行する
-
- - 条件ブロックがユーザータイプを評価
- - エンタープライズユーザー → 複雑な承認ワークフロー
- - 標準ユーザー → シンプルな承認ワークフロー
- - 無料ユーザー → 基本的な処理ワークフロー
-
-
-
-## ベストプラクティス
-
-- **ワークフローを集中させる**:子ワークフローは明確な入力と出力を持つ特定の、明確に定義されたタスクを処理するように設計する
-- **ネストの深さを最小限に抑える**:保守性とパフォーマンスを向上させるため、深くネストされたワークフロー階層を避ける
-- **エラーを適切に処理する**:子ワークフローの失敗に対する適切なエラー処理を実装し、フォールバックメカニズムを提供する
-- **独立してテストする**:子ワークフローが親ワークフローから独立してテストおよび検証できることを確認する
-- **セマンティックな命名を使用する**:ワークフローには目的と機能を明確に示す説明的な名前を付ける
diff --git a/apps/docs/content/docs/ja/execution/index.mdx b/apps/docs/content/docs/ja/execution/index.mdx
index 7dfe135b93..61fe15b948 100644
--- a/apps/docs/content/docs/ja/execution/index.mdx
+++ b/apps/docs/content/docs/ja/execution/index.mdx
@@ -4,6 +4,7 @@ title: 実行
import { Callout } from 'fumadocs-ui/components/callout'
import { Card, Cards } from 'fumadocs-ui/components/card'
+import { Image } from '@/components/ui/image'
Simの実行エンジンは、ブロックを正しい順序で処理し、データフローを管理し、エラーを適切に処理することで、ワークフローに命を吹き込みます。これにより、Simでワークフローがどのように実行されるかを正確に理解することができます。
@@ -88,9 +89,25 @@ curl -X POST https://sim.ai/api/workflows/your-workflow-id/execute \
各デプロイメント方法はデータをワークフローのスターターブロックに渡し、実行フローを開始します。
+## デプロイメントスナップショット
+
+すべての公開エントリーポイント(API、チャット、スケジュール、Webhook、手動実行)は、ワークフローのアクティブなデプロイメントスナップショットを実行します。キャンバスを変更するたびに新しいデプロイメントを公開することで、すべてのトリガーが更新されたバージョンを使用するようになります。
+
+
+
+
+
+デプロイモーダルは完全なバージョン履歴を保持しています。任意のスナップショットを検査し、ドラフトと比較して、必要に応じてワンクリックで昇格またはロールバックし、以前のリリースを復元することができます。
+
## プログラムによる実行
-公式SDKを使用してアプリケーションからワークフローを実行します:
+公式SDKを使用してアプリケーションからワークフローを実行できます:
```bash
# TypeScript/JavaScript
@@ -118,18 +135,18 @@ const result = await client.executeWorkflow('workflow-id', {
### 信頼性を考慮した設計
- 適切なフォールバックパスでエラーを適切に処理する
- 機密データには環境変数を使用する
-- デバッグ用に関数ブロックにログを追加する
+- デバッグ用にFunction(関数)ブロックにログ記録を追加する
### パフォーマンスの最適化
- 可能な限り外部APIコールを最小限に抑える
- 独立した操作には並列実行を使用する
-- 適切な場合はメモリブロックで結果をキャッシュする
+- 適切な場合はMemory(メモリー)ブロックで結果をキャッシュする
### 実行の監視
- パフォーマンスパターンを理解するために定期的にログを確認する
- AIモデル使用のコストを追跡する
- 問題をデバッグするためにワークフロースナップショットを使用する
-## 次のステップは?
+## 次のステップ
-[実行の基本](/execution/basics)からスタートしてワークフローの実行方法を理解し、次に[ログ記録](/execution/logging)で実行状況を監視し、[コスト計算](/execution/costs)で支出を最適化する方法を探りましょう。
+[実行の基本](/execution/basics)からスタートしてワークフローの実行方法を理解し、[ログ記録](/execution/logging)で実行を監視し、[コスト計算](/execution/costs)で支出を最適化する方法を探りましょう。
diff --git a/apps/docs/content/docs/ja/triggers/api.mdx b/apps/docs/content/docs/ja/triggers/api.mdx
new file mode 100644
index 0000000000..7355039e67
--- /dev/null
+++ b/apps/docs/content/docs/ja/triggers/api.mdx
@@ -0,0 +1,60 @@
+---
+title: API トリガー
+description: 認証済みHTTPリクエストからワークフローを開始する
+---
+
+import { Callout } from 'fumadocs-ui/components/callout'
+import { Image } from '@/components/ui/image'
+
+## 概要
+
+APIトリガーは、ワークフローを安全なHTTPエンドポイントとして公開します。JSONデータをエンドポイントに送信すると、ワークフローがすぐにそれを処理します。API呼び出しは常に最新のデプロイメントに対して実行されます。
+
+## 入力フォーマットの設定
+
+
+
+
+
+各パラメータに**入力フォーマット**フィールドを追加します。実行時の出力キーはスキーマを反映し、``でも利用できます。
+
+```yaml
+- type: string
+ name: userId
+ value: demo-user # optional manual test value
+- type: number
+ name: maxTokens
+```
+
+エディタでの手動実行では、リクエストを送信せずにテストできるように`value`列を使用します。実行中、リゾルバは``と``の両方に値を設定します。
+
+## リクエスト例
+
+```bash
+curl -X POST \
+ https://sim.ai/api/workflows/WORKFLOW_ID/execute \
+ -H 'Content-Type: application/json' \
+ -H 'X-API-Key: YOUR_KEY' \
+ -d '{"userId":"demo-user","maxTokens":1024}'
+```
+
+成功したレスポンスはエグゼキュータからのシリアル化された実行結果を返します。エラーは検証、認証、またはワークフローの失敗を表示します。
+
+## 出力リファレンス
+
+| リファレンス | 説明 |
+|-----------|-------------|
+| `` | 入力フォーマットで定義されたフィールド |
+| `` | 構造化されたリクエスト本文全体 |
+
+入力フォーマットが定義されていない場合、エグゼキュータは生のJSONを``でのみ公開します。
+
+
+ワークフローには1つのAPIトリガーしか含めることができません。変更後は新しいデプロイメントを公開して、エンドポイントを最新の状態に保ってください。
+
diff --git a/apps/docs/content/docs/ja/triggers/chat.mdx b/apps/docs/content/docs/ja/triggers/chat.mdx
new file mode 100644
index 0000000000..8c9b6a4e45
--- /dev/null
+++ b/apps/docs/content/docs/ja/triggers/chat.mdx
@@ -0,0 +1,43 @@
+---
+title: チャットトリガー
+description: チャットデプロイメントからワークフローを開始する
+---
+
+import { Callout } from 'fumadocs-ui/components/callout'
+import { Image } from '@/components/ui/image'
+
+## 概要
+
+チャットトリガーはワークフロー用の会話インターフェースを作成します。ワークフローをチャットとしてデプロイすると、ユーザーは共有可能なURLを通じてそれと対話できます。各メッセージは最新のデプロイメントを使用して新しいワークフロー実行を開始します。
+
+## ランタイム出力
+
+
+
+
+
+このトリガーは、下流のブロックが参照できる3つのフィールドを書き込みます:
+
+| 参照 | 説明 |
+|-----------|-------------|
+| `` | 最新のユーザーメッセージ |
+| `` | 会話スレッドID |
+| `` | オプションのアップロードファイル |
+
+ファイルには `name`、`mimeType`、および署名付きダウンロード `url` が含まれます。
+
+## 使用上の注意
+
+1. ワークフローごとにチャットトリガーブロックを1つ追加します。
+2. ワークフローをチャットモードでデプロイします。
+3. デプロイメントリンクを共有します—各返信は同じ会話IDを再利用するため、ワークフローはコンテキストを保持できます。
+
+
+ビルダーは同じワークフロー内の複数のチャットトリガーブロックをブロックします。
+
diff --git a/apps/docs/content/docs/ja/triggers/index.mdx b/apps/docs/content/docs/ja/triggers/index.mdx
new file mode 100644
index 0000000000..d0704e06b8
--- /dev/null
+++ b/apps/docs/content/docs/ja/triggers/index.mdx
@@ -0,0 +1,52 @@
+---
+title: トリガー
+description: Simワークフローを開始する主要な方法
+---
+
+import { Card, Cards } from 'fumadocs-ui/components/card'
+
+## 主要なトリガー
+
+ワークフローごとに1つのトリガーを選択して、開始方法を定義します:
+
+
+
+ JSONボディをワークフロー入力にマッピングするHTTPエンドポイント
+
+
+ ストリーミングレスポンスを備えたデプロイ済みチャットインターフェース
+
+
+ エディタ実行と子ワークフローで使用される型付き手動入力
+
+
+ 追加データなしのオンデマンド実行
+
+
+ Cronまたは間隔ベースの実行
+
+
+ 外部のWebhookペイロードを受信
+
+
+
+## クイック比較
+
+| トリガー | 開始条件 |
+|---------|-----------------|
+| **API** | 認証されたHTTP POST |
+| **チャット** | チャットデプロイメントメッセージ |
+| **入力フォーム** | エディタまたは親ワークフローでの手動送信時 |
+| **手動** | エディタの実行ボタン |
+| **スケジュール** | スケジュールモーダルで管理されるタイマー |
+| **Webhook** | 受信HTTPリクエスト時 |
+
+## トリガーの使用方法
+
+1. トリガーブロックを開始スロットにドロップします。
+2. 必要なスキーマや認証を設定します。
+3. ブロックをワークフローの残りの部分に接続します。
+
+> デプロイメントはすべてのトリガーを動作させます。ワークフローを更新し、再デプロイすると、すべてのトリガーエントリーポイントが新しいスナップショットを取得します。詳細は[実行 → デプロイメントスナップショット](/execution)をご覧ください。
+
+既存のフロー用にレガシースタータブロックは残っていますが、新しいビルドには表示されなくなりました。
diff --git a/apps/docs/content/docs/ja/triggers/input-form.mdx b/apps/docs/content/docs/ja/triggers/input-form.mdx
new file mode 100644
index 0000000000..019e9b1c51
--- /dev/null
+++ b/apps/docs/content/docs/ja/triggers/input-form.mdx
@@ -0,0 +1,52 @@
+---
+title: 入力フォームトリガー
+description: 構造化された入力スキーマを持つ手動トリガー
+---
+
+import { Callout } from 'fumadocs-ui/components/callout'
+import { Image } from '@/components/ui/image'
+
+## 概要
+
+ワークフローがエディターから型付きフィールドで開始される必要がある場合は、入力フォームトリガーを使用します。実行パネルには定義したフィールドが正確に表示されるため、ワークフローは常にクリーンなデータを受け取ります。
+
+## 定義するもの
+
+入力フォーマットビルダーにフィールド(テキスト、数値、ブール値、JSONなど)を追加します。各フィールドについて:
+
+- 値はワークフロー内で `` として表示されます。
+- 完全なペイロードは便宜上 `` にミラーリングされます。
+
+フォームを空のままにすると、トリガーは出力を持ちません。
+
+## 手動実行
+
+
+
+
+
+エディターで実行ボタンを押すと、パネルにフォームがレンダリングされます。送信された値はトリガー出力に直接送られるため、下流のブロックは追加の解析なしにそれらを参照できます。数値は数値型に変換され、ブール値はtrue/falseになり、JSONフィールドはワークフローが処理する前に解析されます。
+
+## 子ワークフロー
+
+
+
+
+
+入力フォームトリガーはワークフローブロックも強化します。子ワークフローを埋め込むと、マッピングステップで子フォームフィールドが表示され、親から変数を接続できます。マッピングしたものは子ワークフローの入力フォーム送信になります。
+
+
+フィールドのない簡単な実行ボタンが必要ですか?手動トリガーを使用してください。検証と予測可能な構造が必要な場合は、入力フォームを選択してください。
+
diff --git a/apps/docs/content/docs/ja/triggers/manual.mdx b/apps/docs/content/docs/ja/triggers/manual.mdx
new file mode 100644
index 0000000000..04053a1548
--- /dev/null
+++ b/apps/docs/content/docs/ja/triggers/manual.mdx
@@ -0,0 +1,41 @@
+---
+title: 手動トリガー
+description: 入力なしでオンデマンドでワークフローを実行する
+---
+
+import { Callout } from 'fumadocs-ui/components/callout'
+import { Image } from '@/components/ui/image'
+
+## 概要
+
+手動トリガーはワークフローの上部に単純な実行ボタンを追加します。追加データを収集せずにワークフローをすぐに実行したい場合に使用します。
+
+## 仕組み
+
+
+
+
+
+- アクティブなデプロイメントスナップショットを使用してワークフローを起動します
+- ペイロードを送信しません—下流のブロックは既に設定されているものだけを参照します
+- 簡単な動作確認、スモークテスト、または内部変数のみに依存するフローに最適です
+
+## 使用するタイミング
+
+- 新しいデプロイメントを公開した後、すべてがまだ正常に動作することを確認するためにワークフローを開始する
+- 外部入力を必要としないメンテナンスジョブを実行する
+- 状態や環境変数のみを読み取る子ワークフローをトリガーする
+
+## 入力フォームとの比較
+
+実行時に構造化された値や型の検証が必要ですか?代わりに入力フォームトリガーに切り替えると、実行パネルはワークフローが開始する前にそれらのフィールドを収集します。
+
+
+手動トリガーの実行はデプロイメント履歴を上書きしません。キャンバスの変更を反映させるには、更新して再デプロイしてください。
+
diff --git a/apps/docs/content/docs/ja/triggers/starter.mdx b/apps/docs/content/docs/ja/triggers/starter.mdx
index 71a08ba62d..fb9c703a06 100644
--- a/apps/docs/content/docs/ja/triggers/starter.mdx
+++ b/apps/docs/content/docs/ja/triggers/starter.mdx
@@ -1,5 +1,5 @@
---
-title: スターター
+title: スターター(非推奨)
---
import { Callout } from 'fumadocs-ui/components/callout'
@@ -7,7 +7,11 @@ import { Tab, Tabs } from 'fumadocs-ui/components/tabs'
import { Image } from '@/components/ui/image'
import { Video } from '@/components/ui/video'
-スターターブロックを使用すると、入力パラメータを使用してワークフローの実行を手動で開始できます。構造化されたパラメータまたは会話型チャットという2つの入力モードを提供しています。
+
+スターターブロックは非推奨となり、より専門的なコアトリガーに置き換えられました。新しいAPI、チャット、入力フォーム、手動、スケジュール、Webhookトリガーについては[コアトリガーのドキュメント](/triggers)をご覧ください。
+
+
+スターターブロックでは、入力パラメータを使用してワークフローの実行を手動で開始することができ、構造化されたパラメータまたは会話型チャットという2つの入力モードを提供しています。
+
- - API対応の構造化された入力:特定のパラメータ(テキスト、数値、ブール値、JSON、ファイル、日付)を定義
+ - API対応の構造化入力:特定のパラメータ(テキスト、数値、ブール値、JSON、ファイル、日付)を定義
- ワークフロー構築中のテスト:ワークフローのデバッグ中に素早く反復
@@ -49,7 +53,7 @@ import { Video } from '@/components/ui/video'
- ワークフローとチャットし、入力テキスト、会話ID、アップロードされたファイルにアクセスして、コンテキストを考慮した応答を得られます。
+ ワークフローとチャットし、入力テキスト、会話ID、アップロードされたファイルにアクセスして、文脈を考慮した応答を得られます。
@@ -60,4 +64,4 @@ import { Video } from '@/components/ui/video'
- **``** - ユーザーのメッセージテキストが含まれます
- **``** - 会話スレッドの一意の識別子
-- **``** - ユーザーがアップロードしたファイルの配列(存在する場合)
\ No newline at end of file
+- **``** - ユーザーがアップロードしたファイルの配列(ある場合)
\ No newline at end of file
diff --git a/apps/docs/content/docs/zh/blocks/workflow.mdx b/apps/docs/content/docs/zh/blocks/workflow.mdx
index 8f1a78a5c7..44bbf3b94e 100644
--- a/apps/docs/content/docs/zh/blocks/workflow.mdx
+++ b/apps/docs/content/docs/zh/blocks/workflow.mdx
@@ -1,168 +1,40 @@
---
-title: 工作流
+title: 工作流模块
+description: 在当前流程中运行另一个工作流
---
import { Callout } from 'fumadocs-ui/components/callout'
-import { Step, Steps } from 'fumadocs-ui/components/steps'
-import { Tab, Tabs } from 'fumadocs-ui/components/tabs'
import { Image } from '@/components/ui/image'
-工作流模块允许您在当前工作流中将其他工作流作为可重用组件执行。这使得模块化设计、代码复用以及由更小、更专注的工作流组成的复杂嵌套工作流的创建成为可能。
+## 功能简介
-
+
-
- 工作流模块通过允许您使用更小的可重用组件来组成复杂的工作流,从而实现模块化设计。
+当您希望在更大的流程中调用子工作流时,可以使用工作流模块。该模块运行该工作流的最新部署版本,等待其完成后,再继续执行父流程。
+
+## 配置方法
+
+1. **选择一个工作流**:从下拉菜单中选择(为了防止循环,禁止自引用)。
+2. **映射输入**:如果子工作流有输入表单触发器,您将看到每个字段,并可以连接父变量。映射的值是子工作流接收到的值。
+3. **输出**:子工作流完成后,该模块会提供以下输出:
+ - `result` – 子工作流的最终响应
+ - `success` – 是否运行无错误
+ - `error` – 运行失败时的消息
+
+## 执行注意事项
+
+- 子工作流在相同的工作区上下文中运行,因此环境变量和工具会被继承。
+- 该模块使用部署版本控制:任何 API、计划任务、Webhook、手动或聊天执行都会调用已部署的快照。当您更改子工作流时,需要重新部署。
+- 如果子工作流失败,该模块会引发错误,除非您在下游处理了该错误。
+
+
+保持子工作流的专注性。小型、可复用的流程更容易组合使用,而不会导致深层嵌套。
-
-## 概述
-
-工作流模块充当工作流之间的桥梁,使您能够:
-
-
-
- 复用现有工作流:在新工作流中将之前创建的工作流作为组件执行
-
-
- 创建模块化设计:将复杂的流程分解为更小、更易管理的工作流
-
-
- 保持关注点分离:将不同的业务逻辑隔离在独立的工作流中
-
-
- 支持团队协作:在不同项目和团队成员之间共享和复用工作流
-
-
-
-## 工作原理
-
-工作流模块:
-
-1. 引用工作区中的另一个工作流
-2. 将当前工作流的输入数据传递给子工作流(通过 start.input 提供)
-3. 在隔离的上下文中执行子工作流
-4. 将结果返回给父工作流以进行进一步处理
-
-## 配置选项
-
-### 工作流选择
-
-从工作区中可用工作流的下拉列表中选择要执行的工作流。列表包括:
-
-- 您在当前工作区中有权限访问的所有工作流
-- 其他团队成员与您共享的工作流
-- 启用和禁用的工作流(但只有启用的工作流可以执行)
-
-### 执行上下文
-
-子工作流的执行包括:
-
-- 独立的执行上下文
-- 访问相同的工作区资源(API 密钥、环境变量)
-- 正确的工作区成员资格和权限检查
-- 在执行日志中嵌套的追踪跨度
-
-
- **循环检测**:系统会自动检测并防止工作流之间的循环依赖,以避免无限循环。
-
-
-## 输入和输出
-
-
-
-
- -
- 工作流选择:选择要执行的工作流
-
- -
- 输入数据:传递给子工作流的变量或块引用
-
- -
- 执行上下文:带有工作区资源的独立环境
-
-
-
-
-
- -
- workflow.success:布尔值,指示完成状态
-
- -
- workflow.childWorkflowName:已执行的子工作流名称
-
- -
- workflow.result:子工作流返回的结果
-
- -
- workflow.error:如果工作流失败,提供错误详情
-
-
-
-
-
- -
- 工作流响应:子工作流的主要输出
-
- -
- 执行状态:成功状态和错误信息
-
- -
- 访问:在工作流之后的块中可用
-
-
-
-
-
-## 示例用例
-
-### 模块化客户入职
-
-
-
场景:将复杂的入职流程分解为可重用的组件
-
- - 主工作流接收客户数据
- - 工作流块执行验证工作流
- - 工作流块执行账户设置工作流
- - 工作流块执行欢迎邮件工作流
-
-
-
-### 微服务架构
-
-
-
场景:创建独立的服务工作流
-
- - 支付处理工作流处理交易
- - 库存管理工作流更新库存
- - 通知工作流发送确认信息
- - 主工作流协调所有服务
-
-
-
-### 条件处理
-
-
-
场景:根据条件执行不同的工作流
-
- - 条件块评估用户类型
- - 企业用户 → 复杂的审批工作流
- - 标准用户 → 简单的审批工作流
- - 免费用户 → 基础的处理工作流
-
-
-
-## 最佳实践
-
-- **保持工作流专注**:设计子工作流以处理特定的、定义明确的任务,并具有清晰的输入和输出
-- **最小化嵌套深度**:避免深度嵌套的工作流层级,以提高可维护性和性能
-- **优雅地处理错误**:为子工作流失败实施适当的错误处理,并提供备用机制
-- **独立测试**:确保子工作流可以独立于父工作流进行测试和验证
-- **使用语义化命名**:为工作流赋予描述性名称,清楚地表明其目的和功能
diff --git a/apps/docs/content/docs/zh/execution/index.mdx b/apps/docs/content/docs/zh/execution/index.mdx
index f1cc678337..37bbe2c4eb 100644
--- a/apps/docs/content/docs/zh/execution/index.mdx
+++ b/apps/docs/content/docs/zh/execution/index.mdx
@@ -4,6 +4,7 @@ title: 执行
import { Callout } from 'fumadocs-ui/components/callout'
import { Card, Cards } from 'fumadocs-ui/components/card'
+import { Image } from '@/components/ui/image'
Sim 的执行引擎通过按正确的顺序处理模块、管理数据流并优雅地处理错误,使您的工作流栩栩如生,从而让您能够准确了解工作流在 Sim 中的执行方式。
@@ -88,6 +89,22 @@ curl -X POST https://sim.ai/api/workflows/your-workflow-id/execute \
每种部署方法都会将数据传递到工作流的起始块,从而开始执行流程。
+## 部署快照
+
+所有公共入口点——API、Chat、Schedule、Webhook 和手动运行——都会执行工作流的活动部署快照。每次更改画布时发布一个新的部署,以便每个触发器都使用更新的版本。
+
+
+
+
+
+部署模式会保留完整的版本历史记录——可以检查任何快照,将其与草稿进行比较,并在需要恢复之前的版本时一键提升或回滚。
+
## 编程执行
使用我们的官方 SDK 从您的应用程序中执行工作流:
@@ -115,21 +132,21 @@ const result = await client.executeWorkflow('workflow-id', {
## 最佳实践
-### 设计可靠性
+### 可靠性设计
- 使用适当的回退路径优雅地处理错误
- 对敏感数据使用环境变量
-- 在功能块中添加日志以便调试
+- 在函数模块中添加日志以便调试
-### 优化性能
+### 性能优化
- 尽量减少外部 API 调用
- 对独立操作使用并行执行
-- 在适当情况下使用内存块缓存结果
+- 在适当情况下使用内存模块缓存结果
-### 监控执行
+### 执行监控
- 定期查看日志以了解性能模式
- 跟踪 AI 模型使用的成本
- 使用工作流快照调试问题
-## 接下来是什么?
+## 接下来做什么?
从 [执行基础](/execution/basics) 开始,了解工作流如何运行,然后探索 [日志记录](/execution/logging) 以监控您的执行情况,以及 [成本计算](/execution/costs) 以优化您的支出。
diff --git a/apps/docs/content/docs/zh/triggers/api.mdx b/apps/docs/content/docs/zh/triggers/api.mdx
new file mode 100644
index 0000000000..060b3db90e
--- /dev/null
+++ b/apps/docs/content/docs/zh/triggers/api.mdx
@@ -0,0 +1,60 @@
+---
+title: API 触发器
+description: 通过经过身份验证的 HTTP 请求启动工作流
+---
+
+import { Callout } from 'fumadocs-ui/components/callout'
+import { Image } from '@/components/ui/image'
+
+## 概述
+
+API 触发器将您的工作流公开为一个安全的 HTTP 端点。将 JSON 数据发送到该端点,您的工作流会立即处理它。API 调用始终针对您的最新部署执行。
+
+## 配置输入格式
+
+
+
+
+
+为每个参数添加一个 **输入格式** 字段。运行时输出键会镜像该模式,并且也可以在 `` 下使用。
+
+```yaml
+- type: string
+ name: userId
+ value: demo-user # optional manual test value
+- type: number
+ name: maxTokens
+```
+
+编辑器中的手动运行使用 `value` 列,因此您可以在不发送请求的情况下进行测试。在执行期间,解析器会填充 `` 和 ``。
+
+## 请求示例
+
+```bash
+curl -X POST \
+ https://sim.ai/api/workflows/WORKFLOW_ID/execute \
+ -H 'Content-Type: application/json' \
+ -H 'X-API-Key: YOUR_KEY' \
+ -d '{"userId":"demo-user","maxTokens":1024}'
+```
+
+成功的响应会返回来自执行器的序列化执行结果。错误会显示验证、身份验证或工作流失败的原因。
+
+## 输出参考
+
+| 参考 | 描述 |
+|-----------|-------------|
+| `` | 在输入格式中定义的字段 |
+| `` | 整个结构化请求体 |
+
+如果未定义输入格式,执行器仅在 `` 处公开原始 JSON。
+
+
+一个工作流只能包含一个 API 触发器。更改后请发布新的部署,以确保端点保持最新。
+
diff --git a/apps/docs/content/docs/zh/triggers/chat.mdx b/apps/docs/content/docs/zh/triggers/chat.mdx
new file mode 100644
index 0000000000..d48b75b97d
--- /dev/null
+++ b/apps/docs/content/docs/zh/triggers/chat.mdx
@@ -0,0 +1,43 @@
+---
+title: 聊天触发器
+description: 从聊天部署中启动工作流
+---
+
+import { Callout } from 'fumadocs-ui/components/callout'
+import { Image } from '@/components/ui/image'
+
+## 概述
+
+聊天触发器为您的工作流创建了一个对话界面。将您的工作流部署为聊天,用户可以通过一个可分享的 URL 与其交互。每条消息都会使用您最新的部署启动一个新的工作流执行。
+
+## 运行时输出
+
+
+
+
+
+触发器会写入三个字段,供下游模块引用:
+
+| 引用 | 描述 |
+|-----------|-------------|
+| `` | 最新的用户消息 |
+| `` | 对话线程 ID |
+| `` | 可选的上传文件 |
+
+文件包括 `name`、`mimeType`,以及一个带签名的下载链接 `url`。
+
+## 使用说明
+
+1. 每个工作流添加一个聊天触发器模块。
+2. 以聊天模式部署工作流。
+3. 分享部署链接——每次回复都会重用对话 ID,以便工作流保持上下文。
+
+
+构建器会阻止在同一工作流中添加多个聊天触发器模块。
+
diff --git a/apps/docs/content/docs/zh/triggers/index.mdx b/apps/docs/content/docs/zh/triggers/index.mdx
new file mode 100644
index 0000000000..7af1902b0f
--- /dev/null
+++ b/apps/docs/content/docs/zh/triggers/index.mdx
@@ -0,0 +1,52 @@
+---
+title: 触发器
+description: 启动 Sim 工作流的核心方式
+---
+
+import { Card, Cards } from 'fumadocs-ui/components/card'
+
+## 核心触发器
+
+为每个工作流选择一个触发器以定义其启动方式:
+
+
+
+ 将 JSON 数据映射到工作流输入的 HTTP 端点
+
+
+ 部署的聊天界面,支持流式响应
+
+
+ 在编辑器运行和子工作流中使用的手动输入
+
+
+ 无需额外数据的按需运行
+
+
+ 基于 Cron 或间隔的执行
+
+
+ 接收外部 Webhook 负载
+
+
+
+## 快速对比
+
+| 触发器 | 启动条件 |
+|---------|-----------------|
+| **API** | 经过身份验证的 HTTP POST |
+| **Chat** | 聊天部署消息 |
+| **Input Form** | 在编辑器或父工作流中手动提交 |
+| **Manual** | 编辑器中的运行按钮 |
+| **Schedule** | 在计划模式中管理的计时器 |
+| **Webhook** | 入站 HTTP 请求 |
+
+## 使用触发器
+
+1. 将触发器模块放入启动槽中。
+2. 配置任何所需的模式或认证。
+3. 将模块连接到工作流的其余部分。
+
+> 部署为每个触发器提供支持。更新工作流,重新部署,所有触发器入口点将获取新的快照。了解更多信息,请参阅[执行 → 部署快照](/execution)。
+
+旧版启动模块仍适用于现有流程,但不再出现在新构建中。
diff --git a/apps/docs/content/docs/zh/triggers/input-form.mdx b/apps/docs/content/docs/zh/triggers/input-form.mdx
new file mode 100644
index 0000000000..4dd7b97e6c
--- /dev/null
+++ b/apps/docs/content/docs/zh/triggers/input-form.mdx
@@ -0,0 +1,52 @@
+---
+title: 输入表单触发器
+description: 具有结构化输入模式的手动触发器
+---
+
+import { Callout } from 'fumadocs-ui/components/callout'
+import { Image } from '@/components/ui/image'
+
+## 概述
+
+当工作流需要从编辑器中以类型化字段开始时,请使用输入表单触发器。运行面板会准确显示您定义的字段,因此工作流始终接收干净的数据。
+
+## 您需要定义的内容
+
+在输入格式构建器中添加字段(文本、数字、布尔值、JSON 等)。对于每个字段:
+
+- 该值会作为 `` 出现在工作流中。
+- 为方便起见,完整的有效负载会镜像在 ``。
+
+如果您将表单留空,触发器将没有输出。
+
+## 手动运行
+
+
+
+
+
+当您在编辑器中按下运行按钮时,面板会渲染表单。提交的值会直接输入到触发器输出中,因此下游模块可以直接引用它们而无需额外解析。数字会被转换为数字,布尔值会变为 true/false,JSON 字段在工作流看到它们之前会被解析。
+
+## 子工作流
+
+
+
+
+
+输入表单触发器还支持工作流模块。当您嵌入子工作流时,映射步骤会显示子表单字段,以便您可以将变量从父级连接到子级。您映射的内容将成为子工作流的输入表单提交。
+
+
+需要一个没有字段的快速运行按钮?使用手动触发器。当您需要验证和可预测的结构时,请选择输入表单。
+
diff --git a/apps/docs/content/docs/zh/triggers/manual.mdx b/apps/docs/content/docs/zh/triggers/manual.mdx
new file mode 100644
index 0000000000..10aaa94ab8
--- /dev/null
+++ b/apps/docs/content/docs/zh/triggers/manual.mdx
@@ -0,0 +1,41 @@
+---
+title: 手动触发器
+description: 无需输入即可按需运行工作流
+---
+
+import { Callout } from 'fumadocs-ui/components/callout'
+import { Image } from '@/components/ui/image'
+
+## 概述
+
+手动触发器会在工作流顶部添加一个简单的运行按钮。当您希望立即执行工作流而无需收集额外数据时,可以使用它。
+
+## 工作原理
+
+
+
+
+
+- 使用活动的部署快照启动工作流
+- 不发送任何有效负载——下游模块仅看到它们已配置的内容
+- 非常适合快速检查、冒烟测试或仅依赖内部变量的流程
+
+## 使用场景
+
+- 在发布新部署后启动工作流,以确认一切仍然正常运行
+- 运行不需要外部输入的维护任务
+- 触发仅读取状态或环境变量的子工作流
+
+## 与输入表单的比较
+
+需要在运行时提供结构化值或类型验证?改用输入表单触发器——运行面板将在工作流开始前收集这些字段。
+
+
+手动触发器运行不会覆盖您的部署历史记录。每当需要上线画布更改时,请更新并重新部署。
+
diff --git a/apps/docs/content/docs/zh/triggers/starter.mdx b/apps/docs/content/docs/zh/triggers/starter.mdx
index a9c0d82d60..9506055ffc 100644
--- a/apps/docs/content/docs/zh/triggers/starter.mdx
+++ b/apps/docs/content/docs/zh/triggers/starter.mdx
@@ -1,5 +1,5 @@
---
-title: 入门
+title: Starter(已弃用)
---
import { Callout } from 'fumadocs-ui/components/callout'
@@ -7,12 +7,16 @@ import { Tab, Tabs } from 'fumadocs-ui/components/tabs'
import { Image } from '@/components/ui/image'
import { Video } from '@/components/ui/video'
-入门模块允许您通过输入参数手动启动工作流执行,提供两种输入模式:结构化参数或对话式聊天。
+
+Starter 模块已被弃用,并由更专业的核心触发器取代。请参阅[核心触发器文档](/triggers),了解新的 API、聊天、输入表单、手动、计划和 Webhook 触发器。
+
+
+Starter 模块允许您通过输入参数手动启动工作流执行,提供两种输入模式:结构化参数或对话式聊天。
- API 友好的结构化输入:定义特定参数(文本、数字、布尔值、JSON、文件、日期)
- - 在构建工作流时进行测试:调试工作流时快速迭代
+ - 构建工作流时的测试:调试工作流时快速迭代
@@ -49,14 +53,14 @@ import { Video } from '@/components/ui/video'
-
与您的工作流进行聊天,并访问输入文本、会话 ID 和上传的文件以实现上下文感知的响应。
+
与您的工作流对话,并访问输入文本、会话 ID 和上传的文件,以实现上下文感知的响应。
## 使用聊天变量
-在聊天模式下,通过特殊变量访问用户输入和会话上下文:
+在聊天模式下,可以通过特殊变量访问用户输入和会话上下文:
- **``** - 包含用户的消息文本
- **``** - 会话线程的唯一标识符
diff --git a/apps/docs/i18n.lock b/apps/docs/i18n.lock
index c17dece0d8..8dbc54ee68 100644
--- a/apps/docs/i18n.lock
+++ b/apps/docs/i18n.lock
@@ -200,16 +200,17 @@ checksums:
content/32: 8e0e9217f80809b36efdd4f06c8b3407
content/33: 1bccc5c7c9c3faa39621204141b12194
7867ffa0477110b9224b5900cd88af64:
- meta/title: d57ceb9ca36fb941537a29beddee5026
+ meta/title: 5a2605bd1afd6ccfab7ab6bd25d25487
content/0: c0a142478cc5c515f87d368fa72da818
- content/1: 216126f06a18fe0345391a41cbf69d96
- content/2: 223436341e6581e88678f72dcb5ea8cd
- content/3: f2c54965c634f66b5fa5f3406f28f863
- content/4: c8f62e98c3b901b6ddeaee9e97405a6f
- content/5: 3515ae8970077219b243cc353d330fe9
- content/6: c693032e2e6c2d8baf72c1e9fe670597
- content/7: c6b79caea92149650904838f89939f40
- content/8: cbca5d806da167603e38e7dc90344e57
+ content/1: 89a68227f96e1e2c0db0fdccf75f309c
+ content/2: 216126f06a18fe0345391a41cbf69d96
+ content/3: 223436341e6581e88678f72dcb5ea8cd
+ content/4: f2c54965c634f66b5fa5f3406f28f863
+ content/5: c8f62e98c3b901b6ddeaee9e97405a6f
+ content/6: 3515ae8970077219b243cc353d330fe9
+ content/7: c693032e2e6c2d8baf72c1e9fe670597
+ content/8: c6b79caea92149650904838f89939f40
+ content/9: cbca5d806da167603e38e7dc90344e57
fb53ce2c1fc28db4c6c09f5296ff59c6:
meta/title: a75428cb811bc50150cecde090a3a0d5
content/0: c0a142478cc5c515f87d368fa72da818
@@ -2647,7 +2648,7 @@ checksums:
content/32: ebdbef07196127ef2c7ba23491f62578
0334b7b88d5f6e736984d25a5913ce74:
meta/title: cbac4a3c721123cbc6a883560bf29800
- content/0: 4b92e97b7a206361bbc925f3ab1d7b19
+ content/0: c2b41859d63a751682f0d9aec488e581
content/1: 029b6eaedb318e283ec616271b1c1f31
content/2: cd32f3f914c0d61277663080f084a6c5
content/3: d0884f6f30103599303dbc34ab978afb
@@ -2668,16 +2669,20 @@ checksums:
content/18: bce1e4e161b456fb087eced7989396da
content/19: 5b3d24c353563247b9211822a871fef4
content/20: 1caf64b236828bfeebe960fc20a5ab73
- content/21: c80365afbb4bb97e47afb8046aca0e4d
- content/22: bcd28da9c1dce1b1fcac124a44c6e3af
- content/23: 6bc2fe9d10757bef1c729e6c2a8f641b
- content/24: 4a83f87901c49d45be4db1acc8798fcf
- content/25: b2a4a0c279f47d58a2456f25a1e1c6f9
- content/26: e268aec41ffc038e8a4c0c0f32df6ab7
- content/27: 3481ccd057c4b953509346ee2cc5b48e
- content/28: 770a4b0d73650cffbaa78c819d6ab4d0
- content/29: d2f430ae2dc112f90bc63225b63e93dd
- content/30: 03d809b3d2d99b8d5f18610859b64f01
+ content/21: 7b6c8964f393e9314c294c602f25d408
+ content/22: 4aea1808e27ec653c759cc117eea48d3
+ content/23: 8f40b40057951bc518970c6693ac430a
+ content/24: f04172446018c863976118c67315433a
+ content/25: c80365afbb4bb97e47afb8046aca0e4d
+ content/26: bcd28da9c1dce1b1fcac124a44c6e3af
+ content/27: 6bc2fe9d10757bef1c729e6c2a8f641b
+ content/28: 4a83f87901c49d45be4db1acc8798fcf
+ content/29: b2a4a0c279f47d58a2456f25a1e1c6f9
+ content/30: e268aec41ffc038e8a4c0c0f32df6ab7
+ content/31: 3481ccd057c4b953509346ee2cc5b48e
+ content/32: 770a4b0d73650cffbaa78c819d6ab4d0
+ content/33: d2f430ae2dc112f90bc63225b63e93dd
+ content/34: 03d809b3d2d99b8d5f18610859b64f01
93a12caff7a5c8e23c8945748341fb3a:
meta/title: ce4f627ba9e60c4718e2441ce884f560
content/0: bdace12b4c85213012e88653277c2ebb
@@ -2949,36 +2954,17 @@ checksums:
content/8: ee7755c785324eed7080a9efb5937ba9
content/9: 4e37faf476573f26ccb9bc7f224662b1
e99baf6ea410c047444ec8592d7d54f3:
- meta/title: 0240772c838117f1c837f4913fce9384
- content/0: d091aba168f368dcc4e9073c000f47af
- content/1: d535b3ffe5440af56ae10210f6b2e637
- content/2: 0e302f592b5d0416346f35b7dbc30853
- content/3: 0b640cd2c679bdf3bc24885290042dce
- content/4: 5e26527ccf8fddebe14c951e6c950b48
- content/5: aa55ef9b2a15c211fa509aa1d31534f4
- content/6: 3b1e4e2059ba01fc63a4bf4a6853d5c0
- content/7: ad8638a3473c909dbcb1e1d9f4f26381
- content/8: 7e519b11665ca706936276803d28ca9c
- content/9: e513312f3c26e7b7011b3f1e5b15652f
- content/10: b2e603592f9c01f26bd7bd067f52ccd5
- content/11: c85151df4d0c1de9189c7aae92963973
- content/12: 8662c5fb212a0392f9d81adb91e9ad4e
- content/13: 39ff6f3fdd0c86fa68ef5b85e6011f63
- content/14: f78afc1b4d533d9fd57f39903387af2d
- content/15: 7f6e1ef1a2fe004852ebf910f62a98e7
- content/16: 4b9041966542eebbf55ea4cfe082af5f
- content/17: 045080b64ddf3d6c56d9023f49faab90
- content/18: d72903dda50a36b12ec050a06ef23a1b
- content/19: 78eb14b27953674512e2957b7dbd68b6
- content/20: 9c2f91f89a914bf4661512275e461104
- content/21: 2c8be53af05636013555b8775bc0db15
- content/22: c03744f1e653869a773692d8334fd6b2
- content/23: 67f75b67ff5bb1e8a84393bfc5ab00b6
- content/24: 1469dec342ba22a92d5faf20b266936f
- content/25: 754efe9696132b408f9b828967fa587c
- content/26: 75f7c86d00c3b746e2e44e235a2f38b6
- content/27: b2a4a0c279f47d58a2456f25a1e1c6f9
- content/28: d2cfaf10c9d2909a6e83a67067c7e1dc
+ meta/title: 314cb19eb4fc168e662c3ac7e308f8c1
+ meta/description: 064420321c795472e120795dd3866b6b
+ content/0: eb0ed7078f192304703144f4cac3442f
+ content/1: 4a2b79d74390a7f15a0493a5b9811aa6
+ content/2: 51409378febc14a254bfd47909a470e4
+ content/3: c470cddccf8e05421006bb87a1934a76
+ content/4: c712a7c1712d32c3d539a42949437e74
+ content/5: bbc6fc8324371b3f35d4b2482750627d
+ content/6: b5679e78347c7b56291bf29c07ea4894
+ content/7: ad6e9b3e5268ebdc1aacbbe68f1d47d0
+ content/8: 3d7cbdfdd9717209049859e503965ad0
2370c896de59e5d3a8abcb5a44e245f9:
meta/title: c14965d732abc6e402c866dd7272a37f
content/0: 1852345497a5d49c4c869b368b5d1612
@@ -3905,3 +3891,79 @@ checksums:
content/46: f383a8845c0fe57f4eb82c1c69009925
content/47: b3f310d5ef115bea5a8b75bf25d7ea9a
content/48: 5e1c856b28d30016198e90cda5b05e57
+ 5d496ee293efcfeeabc8ba9cb5bea389:
+ meta/title: 48133ce7ab3a049b7627329f80a182fb
+ meta/description: 65f24f2782c9bb82cc5d40ff66d052b6
+ content/0: eb0ed7078f192304703144f4cac3442f
+ content/1: 5e26527ccf8fddebe14c951e6c950b48
+ content/2: 0d81ea82151104adc39c846ac8337431
+ content/3: ad8638a3473c909dbcb1e1d9f4f26381
+ content/4: 8c1a52f7cec852a5c7ff47c0e2930a73
+ content/5: b4a8e39e816091b3964a92ae3bde42ff
+ content/6: 69140f7129fbf1c47dc5f3e11ed204e3
+ content/7: 6457e9e8ad810111a17400e900884c93
+ content/8: ef7204714a75ed639120dd4a6ba18090
+ content/9: 749a5aa6304dae75fcb691ec5dd62020
+ content/10: 6ae1fe8e296a5924538ba0468c4d1a6c
+ 4f4fc92cad5b98200e961f8c7e63b114:
+ meta/title: e3121231039423710489dc40385552ac
+ meta/description: b48763f2062aa535d0acd84e5a377b8a
+ content/0: eb0ed7078f192304703144f4cac3442f
+ content/1: 5e26527ccf8fddebe14c951e6c950b48
+ content/2: c060b0c739bcb1b0e362e35913e6a021
+ content/3: aaddc2922e87ac1a91a1c375d3873ef7
+ content/4: 0caf16c2939919e4c7bcb65acaba4556
+ content/5: fb1f31982f28c530d1f4a54225f8d69e
+ content/6: b46d3306465322aa484be51de951ecf0
+ content/7: c7bac9990b48e0da1b2a14b047e2fed3
+ content/8: 7f9f3edbc0dfa08d8215523b6dee3759
+ content/9: 6942b610f6873ccc980ecb6e1317fe6b
+ content/10: 08e432baa1ebfbce144be785980c9ea3
+ content/11: a7be0ff0273a72ba92fe57352fff9818
+ content/12: fa99328ac89f35c19a8833b4a67aed2f
+ content/13: bcc75d48639b6962a931d0bd9b1964fd
+ 988d7dce2c886500665fbd2457d4cc4d:
+ meta/title: 66488f38662a4199fb8a18967239c992
+ meta/description: 96d5e61577085aa1c1a6f1609ae5ebb4
+ content/0: 0d82f8784f312f9ac51da136fd47e94a
+ content/1: da2b445db16c149f56558a4ea876a5f0
+ content/2: 34fecbe521c3ea53e9f288437c36b9c3
+ content/3: 3e192851df5121e4ee83754ce34be18d
+ content/4: 4c3a5708af82c1ee42a12d14fd34e950
+ content/5: 196439ec46589bfee391896e4792f046
+ content/6: cffe5b901d78ebf2000d07dc7579533e
+ content/7: 7627b5948da98a1c939540dcdbdac0d3
+ content/8: 05aed1f03c5717f3bcb10de2935332e8
+ content/9: 0093cc341f8b972ae8f69eec3452a501
+ 0bf172ef4ee9a2c94a2967d7d320b81b:
+ meta/title: 330265974a03ee22a09f42fa4ece25f6
+ meta/description: e3d54cbedf551315cf9e8749228c2d1c
+ content/0: eb0ed7078f192304703144f4cac3442f
+ content/1: 5e26527ccf8fddebe14c951e6c950b48
+ content/2: 2ffa2ee71720895e73353a5e4034a46f
+ content/3: 78cfe3bc9c911dd9aa75f053f768707d
+ content/4: d5c510cc37588bf8f3d9a91543544721
+ content/5: a09e8940e139c0b84886fa7f16f3e690
+ content/6: 33f032ae58bee4c0e244491b110a22fe
+ content/7: ef92830705e75d566cb1c6bbc18a2c82
+ content/8: 8f06e4f0147241cadfbae88fb2fc2057
+ content/9: c2d4cc3ecf06ac3c07f57c83095e461b
+ content/10: 3d8114d48bbc82967b2e7c881f571dc0
+ c1571f6a328a5083bc542ae1ffc98fac:
+ meta/title: 41fc753f4232b5628873660d94faba90
+ meta/description: b108bba63132a8a2ddbff6b5264ef993
+ content/0: eb0ed7078f192304703144f4cac3442f
+ content/1: 5e26527ccf8fddebe14c951e6c950b48
+ content/2: 3c7457d4671bdca75eb8847e77b3d09a
+ content/3: b3c762557a1a308f3531ef1f19701807
+ content/4: bf29da79344f37eeadd4c176aa19b8ff
+ content/5: ae52879ebefa5664a6b7bf8ce5dd57ab
+ content/6: 5e1cbe37c5714b16c908c7e0fe0b23e3
+ content/7: ce487c9bc7a730e7d9da4a87b8eaa0a6
+ content/8: e73f4b831f5b77c71d7d86c83abcbf11
+ content/9: 07e064793f3e0bbcb02c4dc6083b6daa
+ content/10: a702b191c3f94458bee880d33853e0cb
+ content/11: ce110ab5da3ff96f8cbf96ce3376fc51
+ content/12: 83f9b3ab46b0501c8eb3989bec3f4f1b
+ content/13: e00be80effb71b0acb014f9aa53dfbe1
+ content/14: 847a381137856ded9faa5994fbc489fb