{
  "name": "Wouldliker — AI product video music recommendation",
  "nodes": [
    {
      "parameters": {
        "httpMethod": "POST",
        "path": "wouldliker-product-video",
        "responseMode": "lastNode",
        "options": {}
      },
      "id": "trigger",
      "name": "Webhook: product brief in",
      "type": "n8n-nodes-base.webhook",
      "typeVersion": 1,
      "position": [240, 320],
      "webhookId": "wouldliker-product-video"
    },
    {
      "parameters": {
        "values": {
          "string": [
            { "name": "description",   "value": "={{$json.body.description || $json.body.product_description}}" },
            { "name": "platform",      "value": "={{$json.body.platform     || 'tiktok'}}" },
            { "name": "content_type",  "value": "={{$json.body.content_type || 'product_reveal'}}" },
            { "name": "language",      "value": "={{$json.body.language     || 'en'}}" }
          ],
          "boolean": [
            { "name": "is_aigc",       "value": "={{$json.body.is_aigc === true || $json.body.is_aigc === 'true'}}" }
          ]
        },
        "options": {}
      },
      "id": "normalize",
      "name": "Normalize input",
      "type": "n8n-nodes-base.set",
      "typeVersion": 2,
      "position": [460, 320]
    },
    {
      "parameters": {
        "method": "POST",
        "url": "https://wouldliker.com/api/recommend",
        "sendHeaders": true,
        "headerParameters": {
          "parameters": [{ "name": "content-type", "value": "application/json" }]
        },
        "sendBody": true,
        "bodyContentType": "json",
        "jsonBody": "={{ JSON.stringify({\n  description:      $json.description,\n  platform:         $json.platform,\n  content_type:     $json.content_type,\n  duration_seconds: 22,\n  language:         $json.language,\n  is_aigc:          $json.is_aigc\n}) }}",
        "options": {}
      },
      "id": "recommend",
      "name": "Wouldliker: recommend sound",
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.2,
      "position": [700, 320]
    },
    {
      "parameters": {
        "method": "POST",
        "url": "https://wouldliker.com/api/brief",
        "sendHeaders": true,
        "headerParameters": {
          "parameters": [{ "name": "content-type", "value": "application/json" }]
        },
        "sendBody": true,
        "bodyContentType": "json",
        "jsonBody": "={{ JSON.stringify({\n  sound_slug:       $json.primary_sound.sound_slug,\n  description:      $node['Normalize input'].json.description,\n  platform:         $node['Normalize input'].json.platform,\n  duration_seconds: 22,\n  language:         $node['Normalize input'].json.language,\n  is_aigc:          $node['Normalize input'].json.is_aigc\n}) }}",
        "options": {}
      },
      "id": "brief",
      "name": "Wouldliker: generate brief + caption",
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.2,
      "position": [940, 320]
    },
    {
      "parameters": {
        "values": {
          "string": [
            { "name": "sound_name",       "value": "={{ $json.sound.name }}" },
            { "name": "sound_slug",       "value": "={{ $json.sound.sound_slug }}" },
            { "name": "tiktok_sound_url", "value": "={{ $json.sound.tiktok_sound_url }}" },
            { "name": "clip_brief",       "value": "={{ $json.clip_brief }}" },
            { "name": "caption_short",    "value": "={{ $json.caption_pack.short }}" },
            { "name": "caption_mid",      "value": "={{ $json.caption_pack.mid }}" },
            { "name": "caption_full",     "value": "={{ $json.caption_pack.with_hashtags }}" },
            { "name": "hashtag_pack",     "value": "={{ ($json.hashtag_pack || []).join(' ') }}" },
            { "name": "aigc_disclosure",  "value": "={{ $json.aigc_disclosure_block || '' }}" },
            { "name": "copy_boundary",    "value": "={{ $json.copy_boundary }}" }
          ]
        },
        "options": {}
      },
      "id": "shape",
      "name": "Shape final output",
      "type": "n8n-nodes-base.set",
      "typeVersion": 2,
      "position": [1180, 320]
    }
  ],
  "connections": {
    "Webhook: product brief in": {
      "main": [[{ "node": "Normalize input", "type": "main", "index": 0 }]]
    },
    "Normalize input": {
      "main": [[{ "node": "Wouldliker: recommend sound", "type": "main", "index": 0 }]]
    },
    "Wouldliker: recommend sound": {
      "main": [[{ "node": "Wouldliker: generate brief + caption", "type": "main", "index": 0 }]]
    },
    "Wouldliker: generate brief + caption": {
      "main": [[{ "node": "Shape final output", "type": "main", "index": 0 }]]
    }
  },
  "settings": { "executionOrder": "v1" },
  "meta": {
    "templateCredsSetupCompleted": true,
    "wouldliker_template_version": "1.2.0",
    "description": "Webhook → recommend → brief → shaped output. Drop into any AI-video pipeline. Hand the returned tiktok_sound_url to your downstream uploader. Public proof is evidence of fit and momentum, not a guarantee of views."
  },
  "tags": [
    { "name": "wouldliker" },
    { "name": "tiktok" },
    { "name": "ai-video" },
    { "name": "product-video" }
  ]
}
