メインコンテンツへスキップ
⚠️ このドキュメントはAIによって自動翻訳されています。不正確な部分がある場合は、英語版を参照してください。
このステップバイステップのチュートリアルでは、ゼロからマルチプラットフォームコンテンツジェネレーターを作成します。 基本的なLLM統合を超えて、強力なDifyノードを使用して、より速く、より簡単に洗練されたAIアプリケーションを構築する方法を発見します。 このチュートリアルの終わりまでに、あなたが投げかけるあらゆるコンテンツ(テキスト、ドキュメント、画像)を取り込み、好みの音声とトーンを追加し、選択した言語で洗練されたプラットフォーム固有のソーシャルメディア投稿を生成するワークフローを作成します。 完全なワークフローを以下に示します。構築中はいつでも参照して、軌道に乗っていることを確認し、すべてのノードがどのように連携するかを確認してください。
ワークフロー概要

始める前に

1

Dify Cloudにサインイン

Dify Cloudにアクセスして無料でサインアップします。Sandboxプランの新しいアカウントには、OpenAI、Anthropic、Geminiなどのプロバイダーからモデルを呼び出すための200メッセージクレジットが含まれています。
メッセージクレジットは1回限りの割り当てであり、毎月更新されません。
2

モデルプロバイダーの設定

設定 > モデルプロバイダーに移動し、OpenAIプラグインをインストールします。このチュートリアルではgpt-5.2を使用します。Sandboxクレジットを使用している場合、APIキーは不要です。プラグインはインストール後すぐに使用できます。独自のAPIキーを設定して使用することもできます。
3

デフォルトモデルの設定

  1. モデルプロバイダーページの右上隅で、システムモデル設定をクリックします。
  2. システム推論モデルgpt-5.2に設定します。これがワークフローのデフォルトモデルになります。

ステップ1:新しいワークフローの作成

  1. スタジオに移動し、空白から作成 > ワークフローを選択します。
  2. ワークフローにマルチプラットフォームコンテンツジェネレーターという名前を付けて、作成をクリックします。自動的にワークフローキャンバスに移動し、構築を開始します。
  3. ユーザー入力ノードを選択してワークフローを開始します。

ステップ2:オーケストレーションと設定

言及されていない設定はデフォルト値のままにしてください。
ノードと変数に明確で説明的な名前を付けて、識別と参照が簡単になるようにします。

1. ユーザー入力を収集:ユーザー入力ノード

まず、コンテンツジェネレーターを実行するためにユーザーから収集する情報を定義する必要があります。ドラフトテキスト、ターゲットプラットフォーム、希望のトーン、参考資料などです。ユーザー入力ノードは、これらを簡単に設定できる場所です。ここに追加する各入力フィールドは、すべての下流ノードが参照して使用できる変数になります。
ユーザー入力ノードをクリックして設定パネルを開き、次の入力フィールドを追加します。
  • フィールドタイプ:段落
  • 変数名:draft
  • ラベル名:ドラフト
  • 最大長:2048
  • 必須:はい
  • フィールドタイプ:ファイルリスト
  • 変数名:user_file
  • ラベル名:ファイルをアップロード (≤ 10)
  • サポートファイルタイプ:ドキュメント画像
  • アップロードファイルタイプ:両方
  • 最大アップロード数:10
  • 必須:いいえ
  • フィールドタイプ:段落
  • 変数名:voice_and_tone
  • ラベル名:ボイス&トーン
  • 最大長:2048
  • 必須:いいえ
  • フィールドタイプ:短いテキスト
  • 変数名:platform
  • ラベル名:ターゲットプラットフォーム (≤ 10)
  • 最大長:256
  • 必須:はい
  • フィールドタイプ:選択
  • 変数名:language
  • ラベル名:言語
  • オプション:
    • English
    • 日本語
    • 简体中文
  • 必須:はい
ユーザー入力

2. ターゲットプラットフォームの識別:パラメータ抽出器ノード

プラットフォームフィールドは自由形式のテキスト入力を受け入れるため、ユーザーは様々な方法で入力する可能性があります:x and linkedInpost on Twitter and LinkedIn、さらにはTwitter + LinkedIn pleaseなど。しかし、下流ノードが確実に動作できる["Twitter", "LinkedIn"]のようなクリーンで構造化されたリストが必要です。これはパラメータ抽出器ノードの完璧な仕事です。今回のケースでは、gpt-5.2モデルを使用してユーザーの自然言語を分析し、これらすべてのバリエーションを認識し、標準化された配列を出力します。
ユーザー入力ノードの後に、パラメータ抽出器ノードを追加して設定します:
  1. 入力変数フィールドで、User Input/platformを選択します。
  2. 抽出パラメータを追加します:
    • 名前:platform
    • タイプ:Array[String]
    • 説明:The platform(s) for which the user wants to create tailored content.
    • 必須:はい
  3. 指示フィールドに、LLMのパラメータ抽出をガイドする以下を貼り付けます:
    INSTRUCTION
    # TASK DESCRIPTION
    Parse platform names from input and output as a JSON array.
    
    ## PROCESSING RULES
    - Support multiple delimiters: commas, semicolons, spaces, line breaks, "and", "&", "|", etc.
    - Standardize common platform name variants (twitter/X→Twitter, insta→Instagram, etc.)
    - Remove duplicates and invalid entries
    - Preserve unknown but reasonable platform names
    - Preserve the original language of platform names
    
    ## OUTPUT REQUIREMENTS
    - Success: ["Platform1", "Platform2"]
    - No platforms found: [No platforms identified. Please enter a valid platform name.]
    
    ## EXAMPLES
    - Input: "twitter, linkedin" → ["Twitter", "LinkedIn"]
    - Input: "x and insta" → ["Twitter", "Instagram"]
    - Input: "invalid content" → [No platforms identified. Please enter a valid platform name.]
    
    無効な入力に対して特定のエラーメッセージを出力するようLLMに指示したことに注意してください。これは次のステップでワークフローの終了トリガーとして機能します。
パラメータ抽出器

3. プラットフォーム抽出結果の検証:IF/ELSEノード

ユーザーがohhhhhhBookFaceのような無効なプラットフォーム名を入力した場合はどうなるでしょうか?無駄なコンテンツを生成するために時間とトークンを無駄にしたくありません。そのような場合、IF/ELSEノードを使用してワークフローを早期に停止する分岐を作成できます。パラメータ抽出器ノードからのエラーメッセージをチェックする条件を設定し、そのメッセージが検出された場合、ワークフローは直接出力ノードにルーティングされます。
IFブランチ
  1. パラメータ抽出器ノードの後に、IF/ELSEノードを追加します。
  2. IF/ELSEノードのパネルで、IF条件を定義します: IF Parameter Extractor/platform 含む No platforms identified. Please enter a valid platform name.
  3. IF/ELSEノードの後、IFブランチに出力ノードを追加します。
  4. 出力ノードのパネルで、Parameter Extractor/platformを出力変数として設定します。

4. アップロードされたファイルをタイプ別に分離:リスト演算子ノード

ユーザーは参考資料として画像とドキュメントの両方をアップロードできますが、gpt-5.2ではこの2つのタイプは異なる処理が必要です:画像はビジョン機能を通じて直接解釈できますが、ドキュメントはモデルが処理できるようにまずテキストに変換する必要があります。これを管理するために、2つのリスト演算子ノードを使用して、アップロードされたファイルをフィルタリングし、別々のブランチに分割します—1つは画像用、1つはドキュメント用です。
リスト演算子
  1. IF/ELSEノードの後、ELSEブランチに2つの並列リスト演算子ノードを追加します。
  2. 1つのノードを画像、もう1つをドキュメントに名前を変更します。
  3. 画像ノードを設定します:
    1. User Input/user_fileを入力変数として設定します。
    2. フィルタ条件を有効にします:{x}type Image
  4. ドキュメントノードを設定します:
    1. User Input/user_fileを入力変数として設定します。
    2. フィルタ条件を有効にします:{x}type Doc

5. ドキュメントからテキストを抽出:ドキュメント抽出器ノード

gpt-5.2はPDFやDOCXなどのアップロードされたドキュメントを直接読むことはできないため、まずプレーンテキストに変換する必要があります。これがまさにドキュメント抽出器ノードが行うことです。ドキュメントファイルを入力として受け取り、次のステップのためにクリーンで使用可能なテキストを出力します。
ドキュメント抽出器
  1. ドキュメントノードの後に、ドキュメント抽出器ノードを追加します。
  2. ドキュメント抽出器ノードのパネルで、Document/resultを入力変数として設定します。

6. すべての参考資料を統合:LLMノード

ユーザーが複数の参考タイプ—ドラフトテキスト、ドキュメント、画像—を同時に提供する場合、それらを一つのまとまった要約に統合する必要があります。LLMノードは、すべての散在する部分を分析してこのタスクを処理し、後続のコンテンツ生成をガイドする包括的なコンテキストを作成します。
情報統合
  1. ドキュメント抽出器ノードの後に、LLMノードを追加します。
  2. 画像ノードもこのLLMノードに接続します。
  3. LLMノードをクリックして設定します:
    1. 情報統合に名前を変更します。
    2. VISIONを有効にし、Image/resultをビジョン変数として設定します。
    3. システム指示フィールドに、以下を貼り付けます:
      # ROLE & TASK
      You are a content strategist. Analyze the provided draft and reference materials (if any), then create a comprehensive content foundation for multi-platform social media optimization.
      
      # ANALYSIS PRINCIPLES
      - Work exclusively with provided information—no external assumptions
      - Focus on extraction, synthesis, and strategic interpretation
      - Identify compelling and actionable elements
      - Prepare insights adaptable across different platforms
      
      # REQUIRED ANALYSIS
      Deliver structured analysis with:
      
      ## 1. CORE MESSAGE
      - Central theme, purpose, objective
      - Key value or benefit being communicated
      
      ## 2. ESSENTIAL CONTENT ELEMENTS
      - Primary topics, facts, statistics, data points
      - Notable quotes, testimonials, key statements
      - Features, benefits, characteristics mentioned
      - Dates, locations, contextual details
      
      ## 3. STRATEGIC INSIGHTS
      - What makes content compelling/unique
      - Emotional/rational appeals present
      - Credibility factors, proof points
      - Competitive advantages highlighted
      
      ## 4. ENGAGEMENT OPPORTUNITIES
      - Discussion points, questions emerging
      - Calls-to-action, next steps suggested
      - Interactive/participation opportunities
      - Trending themes touched upon
      
      ## 5. PLATFORM OPTIMIZATION FOUNDATION
      - High-impact: Quick, shareable formats
      - Professional: Business-focused discussions
      - Community: Interaction and sharing
      - Visual: Enhanced with strong visuals
      
      ## 6. SUPPORTING DETAILS
      - Metrics, numbers, quantifiable results
      - Direct quotes, testimonials
      - Technical details, specifications
      - Background context available
      
    4. メッセージを追加をクリックしてユーザーメッセージを追加し、以下を貼り付けます。{または/を入力して、Doc Extractor/textUser Input/draftをリスト内の対応する変数に置き換えます。
      USER
      Draft: User Input/draft
      Reference material: Doc Extractor/text
      
      ユーザーメッセージ

7. 各プラットフォーム向けにカスタマイズされたコンテンツを作成:イテレーションノード

統合された参照とターゲットプラットフォームの準備ができたので、イテレーションノードを使用して各プラットフォーム向けにカスタマイズされた投稿を生成しましょう。このノードはプラットフォームのリストをループし、各プラットフォーム用のサブワークフローを実行します:まず特定のプラットフォームのスタイルガイドラインとベストプラクティスを分析し、次に利用可能なすべての情報に基づいて最適化されたコンテンツを生成します。
イテレーションノード
  1. 情報統合ノードの後に、イテレーションノードを追加します。
  2. イテレーションノード内に、LLMノードを追加して設定します:
    1. スタイル識別に名前を変更します。
    2. システム指示フィールドに、以下を貼り付けます:
      # ROLE & TASK
      You are a social media expert. Analyze the platform and provide content creation guidelines.
      
      # ANALYSIS REQUIRED
      For the given platform, provide:
      
      ## 1. PLATFORM PROFILE
      - Platform type and category
      - Target audience characteristics
      
      ## 2. CONTENT GUIDELINES
      - Optimal content length (characters/words)
      - Recommended tone (professional/casual/conversational)
      - Formatting best practices (line breaks, emojis, etc.)
      
      ## 3. ENGAGEMENT STRATEGY
      - Hashtag recommendations (quantity and style)
      - Call-to-action best practices
      - Algorithm optimization tips
      
      ## 4. TECHNICAL SPECS
      - Character/word limits
      - Visual content requirements
      - Special formatting needs
      
      ## 5. PLATFORM-SPECIFIC NOTES
      - Unique features or recent changes
      - Industry-specific considerations
      - Community engagement approaches
      
      # OUTPUT REQUIREMENTS
      - For recognized platforms: Provide specific guidelines
      - For unknown platforms: Base recommendations on similar platforms
      - Focus on actionable, practical advice
      - Be concise but comprehensive
      
    3. メッセージを追加をクリックしてユーザーメッセージを追加し、以下を貼り付けます。{または/を入力して、Current Iteration/itemをリスト内の対応する変数に置き換えます。
      USER
      Platform: Current Iteration/item
      
  3. スタイル識別ノードの後に、別のLLMノードを追加して設定します:
    1. コンテンツ作成に名前を変更します。
    2. システム指示フィールドに、以下を貼り付けます:
      # ROLE & TASK
      You are an expert social media content creator. Generate publication-ready content that matches platform guidelines, incorporates source information, and follows specified voice/tone and language requirements.
      
      # LANGUAGE REQUIREMENT
      - Generate ALL content exclusively in the target language specified in the user message. You MUST write the entire post in that language, regardless of the language of any source materials.
      - No mixing of languages whatsoever
      - Adapt platform terminology to the target language
      
      # CONTENT REQUIREMENTS
      - Follow platform guidelines exactly (format, length, tone, hashtags)
      - Integrate source information effectively (key messages, data, value props)
      - Apply voice & tone consistently (if provided)
      - Optimize for platform-specific engagement
      - Ensure cultural appropriateness for the specified language
      
      # OUTPUT FORMAT
      - Generate ONLY the final social media post content. No explanations or meta-commentary. Content must be immediately copy-paste ready.
      - Maximum heading level: ## (H2) - never use # (H1)
      - No horizontal dividers: avoid ---
      
      # QUALITY CHECKLIST
      ✅ Platform guidelines followed
      ✅ Source information integrated
      ✅ Voice/tone consistent (when provided)
      ✅ Language consistency maintained
      ✅ Engagement optimized
      ✅ Publication ready
      
    3. メッセージを追加をクリックしてユーザーメッセージを追加し、以下を貼り付けます。{または/を入力して、すべての入力をリスト内の対応する変数に置き換えます。
      USER
      Platform Name: Current Iteration/item
      Target Language: User Input/language
      Platform Guidelines: Identify Style/text
      Source Information: Integrate Info/text
      Voice & Tone: User Input/voice_and_tone
      
    4. 構造化出力を有効にします。
      これにより、LLMの応答から特定の情報をより信頼性の高い方法で抽出できます。これは次のステップで最終出力をフォーマットする際に重要です。
      構造化出力
      1. 出力変数の横で、構造化をオンに切り替えます。structured_output変数が下に表示されます。設定をクリックします。
      2. ポップアップスキーマエディタで、右上隅のJSONからインポートをクリックし、以下を貼り付けます:
        {
          "platform_name": "string",
          "post_content": "string"
        }
        
        JSONからインポート
  4. イテレーションノードをクリックして設定します:
    1. Parameter Extractor/platformを入力変数として設定します。
    2. Create Content/structured_outputを出力変数として設定します。
    3. 並列モードを有効にし、最大並列数を10に設定します。
      これが、ユーザー入力ノードのターゲットプラットフォームフィールドのラベル名に(≤10)を含めた理由です。
    イテレーション設定

8. 最終出力をフォーマット:テンプレートノード

イテレーションノードは各プラットフォーム用の投稿を生成しますが、その出力は生のデータ配列(例:[{"platform_name": "Twitter", "post_content": "..."}])であり、あまり読みやすくありません。結果をより明確な形式で提示する必要があります。ここでテンプレートノードが登場します—Jinja2テンプレートを使用してこの生データを整理されたテキストにフォーマットでき、最終出力がユーザーフレンドリーで読みやすいことを保証します。
テンプレートノード
  1. イテレーションノードの後に、テンプレートノードを追加します。
  2. テンプレートノードのパネルで、Iteration/outputを入力変数として設定し、outputと名前を付けます。
  3. 以下のJinja2コードを貼り付けます:
    {% for item in output %}
    # 📱 {{ item.platform_name }}
    {{ item.post_content }}
    
    {% endfor %}
    
    • {% for item in output %} / {% endfor %}:入力配列の各プラットフォーム-コンテンツペアをループします。
    • {{ item.platform_name }}:電話絵文字付きのH1見出しとしてプラットフォーム名を表示します。
    • {{ item.post_content }}:そのプラットフォーム用に生成されたコンテンツを表示します。
    • {{ item.post_content }}{% endfor %}の間の空行は、最終出力でプラットフォーム間にスペースを追加します。
LLMも出力フォーマットを処理できますが、その出力は一貫性がなく予測不可能な場合があります。推論を必要としないルールベースのフォーマットについては、テンプレートノードがゼロトークンコストでより安定した信頼性の高い方法で処理します。LLMは非常に強力ですが、適切なツールを使用するタイミングを知ることが、より信頼性が高くコスト効果の高いAIアプリケーションを構築する鍵です。

9. 結果をユーザーに返す:出力ノード

  1. テンプレートノードの後に、出力ノードを追加します。
  2. 出力ノードのパネルで、Template/outputを出力変数として設定します。

ステップ3:テスト

ワークフローが完成しました!テストしてみましょう。
  1. チェックリストがクリアされていることを確認します。
    チェックリストを確認
  2. 最初に提供された参照図と照らし合わせてワークフローを確認し、すべてのノードと接続が一致していることを確認します。
  3. 右上隅のテスト実行をクリックし、入力フィールドを入力して、実行開始をクリックします。 何を入力すればよいか分からない場合は、以下のサンプル入力を試してみてください:
    • ドラフトWe just launched a new AI writing assistant that helps teams create content 10x faster.
    • ファイルをアップロード:空のまま
    • ボイス&トーンFriendly and enthusiastic, but professional
    • ターゲットプラットフォームTwitter and LinkedIn
    • 言語English
成功した実行では、各プラットフォームに個別の投稿を含むフォーマットされた出力が生成されます:
テスト出力
使用するモデルによって結果が異なる場合があります。より高い能力を持つモデルは、一般的により高品質な出力を生成します。
前のノードからの異なる入力に対するノードの反応をテストするには、ワークフロー全体を再実行する必要はありません。キャンバスの下部にあるキャッシュされた変数を表示をクリックし、リストから変更したい変数を見つけて、その値を編集するだけです。
エラーが発生した場合は、対応するノードの最後の実行ログをチェックして、問題の正確な原因を特定します。

ステップ4:公開と共有

ワークフローが期待通りに実行され、結果に満足したら、公開 > 更新を公開をクリックして、ライブで共有可能にします。
後で変更を加えた場合は、更新が有効になるように必ず再度公開することを忘れないでください。