{ "name": "Wouldliker — AI product video music recommendation", "active": false, "versionId": "wouldliker-v1.3.2", "nodes": [ { "parameters": { "content": "## How it works\nThis workflow turns a product or short-form clip description into a Wouldliker sound pack.\n\n1. A webhook receives the clip or product description.\n2. The input is normalized into Wouldliker API fields.\n3. `/api/recommend` returns a recommended sound, TikTok sound URL, music ID, proof, and sound direction.\n4. `/api/brief` returns a video brief, captions, hashtags, and boundary copy.\n5. The final node shapes a flat object for downstream tools.", "height": 360, "width": 460 }, "id": "note-how-it-works", "name": "How it works", "type": "n8n-nodes-base.stickyNote", "typeVersion": 1, "position": [220, -220] }, { "parameters": { "content": "## Set up steps\nSetup time: about 5 minutes.\n\n1. Import this template.\n2. Execute the workflow once to enable the test webhook.\n3. Send a POST request to the webhook with `description`, `platform`, `content_type`, `language`, and `is_aigc`.\n4. Connect the final output to your own publisher, CMS, Slack, Notion, Airtable, Shopify, or content queue.\n\nNo credentials or API keys are required.", "height": 320, "width": 460 }, "id": "note-setup", "name": "Set up steps", "type": "n8n-nodes-base.stickyNote", "typeVersion": 1, "position": [700, -220] }, { "parameters": { "content": "## Boundaries\nWouldliker returns recommendation data only.\n\n- No TikTok auto-posting.\n- No MP3 or audio file redistribution.\n- No guaranteed views.\n- The publisher attaches the returned `tiktok_sound_url` or `tiktok_music_id` in their own upload step.\n- If `is_aigc` is true, the publisher is responsible for platform disclosure and labeling.", "height": 300, "width": 460 }, "id": "note-boundaries", "name": "Boundaries", "type": "n8n-nodes-base.stickyNote", "typeVersion": 1, "position": [1180, -220] }, { "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, "contentType": "json", "specifyBody": "keypair", "bodyParameters": { "parameters": [ { "name": "description", "value": "={{ $json.description }}" }, { "name": "platform", "value": "={{ $json.platform }}" }, { "name": "content_type", "value": "={{ $json.content_type }}" }, { "name": "duration_seconds", "value": 22 }, { "name": "language", "value": "={{ $json.language }}" }, { "name": "is_aigc", "value": "={{ $json.is_aigc }}" } ] }, "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, "contentType": "json", "specifyBody": "keypair", "bodyParameters": { "parameters": [ { "name": "sound_slug", "value": "={{ $json.primary_sound.sound_slug }}" }, { "name": "description", "value": "={{ $node['Normalize input'].json.description }}" }, { "name": "platform", "value": "={{ $node['Normalize input'].json.platform }}" }, { "name": "duration_seconds", "value": 22 }, { "name": "language", "value": "={{ $node['Normalize input'].json.language }}" }, { "name": "is_aigc", "value": "={{ $node['Normalize input'].json.is_aigc }}" } ] }, "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": "tiktok_music_id", "value": "={{ $json.sound.tiktok_music_id }}" }, { "name": "sound_direction", "value": "={{ $node['Wouldliker: recommend sound'].json.sound_direction ? $node['Wouldliker: recommend sound'].json.sound_direction.sonic_family : '' }}" }, { "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.3.2", "description": "Webhook → recommend → brief → shaped output. Drop into any AI-video pipeline. Hand the returned tiktok_sound_url and tiktok_music_id 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" }, { "name": "sound-direction" } ] }