AutomationFlowsWeb Scraping › Fish Audio

Fish Audio

40_420_FISH_AUDIO. Uses httpRequest. Webhook trigger; 7 nodes.

Webhook trigger★★★★☆ complexity7 nodesHTTP Request
Web Scraping Trigger: Webhook Nodes: 7 Complexity: ★★★★☆ Added:

The workflow JSON

Copy or download the full n8n JSON below. Paste it into a new n8n workflow, add your credentials, activate. Full import guide →

Download .json
{
  "name": "40_420_FISH_AUDIO",
  "nodes": [
    {
      "id": "wh-420",
      "name": "Webhook",
      "type": "n8n-nodes-base.webhook",
      "typeVersion": 2,
      "position": [
        0,
        0
      ],
      "parameters": {
        "path": "fish-audio",
        "httpMethod": "POST",
        "responseMode": "onReceived",
        "options": {}
      }
    },
    {
      "id": "prep-420",
      "name": "TTS vorbereiten",
      "type": "n8n-nodes-base.code",
      "typeVersion": 2,
      "position": [
        220,
        0
      ],
      "parameters": {
        "jsCode": "const raw = $input.first().json;\nconst d = raw.body ?? raw;  // typeVersion-2 webhook: body under .body\nconst text    = String(d.text_content || d.topic || 'Test').slice(0,4000);\nconst jobId   = d.pipeline_job_id || 'test';\nconst voiceId = d.voice_id || '';\nreturn [{json:{pipeline_job_id:jobId, text, voice_id:voiceId, speed:1.0, format:'mp3'}}];"
      }
    },
    {
      "id": "fish-420",
      "name": "Fish Audio TTS",
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.2,
      "position": [
        440,
        0
      ],
      "onError": "continueRegularOutput",
      "parameters": {
        "method": "POST",
        "url": "https://api.fish.audio/v1/tts",
        "sendHeaders": true,
        "headerParameters": {
          "parameters": [
            {
              "name": "Authorization",
              "value": "=Bearer {{ $env.FISH_AUDIO_API_KEY }}"
            },
            {
              "name": "Content-Type",
              "value": "application/json"
            }
          ]
        },
        "sendBody": true,
        "contentType": "json",
        "bodyParameters": {
          "parameters": [
            {
              "name": "text",
              "value": "={{ $json.text }}"
            },
            {
              "name": "reference_id",
              "value": "={{ $json.voice_id }}"
            },
            {
              "name": "format",
              "value": "mp3"
            },
            {
              "name": "mp3_bitrate",
              "value": "128"
            },
            {
              "name": "normalize",
              "value": "true"
            },
            {
              "name": "streaming",
              "value": "false"
            }
          ]
        },
        "options": {
          "response": {
            "response": {
              "responseFormat": "file"
            }
          },
          "timeout": 120000
        }
      }
    },
    {
      "id": "fname-420",
      "name": "Dateiname",
      "type": "n8n-nodes-base.code",
      "typeVersion": 2,
      "position": [
        660,
        0
      ],
      "parameters": {
        "jsCode": "const jobId = $('TTS vorbereiten').item.json.pipeline_job_id;\nconst ts = new Date().toISOString().replace(/[:.]/g,'-');\nconst fileName = `voice-${jobId}-${ts}.mp3`;\n// No persistent storage configured yet \u2014 audio_url placeholder\nreturn [{json:{pipeline_job_id:jobId, fileName, audio_url:'', mime_type:'audio/mpeg'}}];"
      }
    },
    {
      "id": "nocodb-420",
      "name": "NocoDB media_assets",
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.2,
      "position": [
        880,
        0
      ],
      "parameters": {
        "method": "POST",
        "url": "https://directus.automation-plus-ki.de/items/420_media_assets",
        "sendHeaders": true,
        "headerParameters": {
          "parameters": [
            {
              "name": "Authorization",
              "value": "Bearer ={{ $env.DIRECTUS_TOKEN }}"
            }
          ]
        },
        "sendBody": true,
        "contentType": "json",
        "bodyParameters": {
          "parameters": [
            {
              "name": "asset_id",
              "value": "={{ $randomString(12) }}"
            },
            {
              "name": "source_service",
              "value": "fish_audio"
            },
            {
              "name": "asset_type",
              "value": "audio"
            },
            {
              "name": "s3_url",
              "value": "={{ $json.audio_url || '' }}"
            },
            {
              "name": "file_name",
              "value": "={{ $json.fileName }}"
            },
            {
              "name": "mime_type",
              "value": "audio/mpeg"
            },
            {
              "name": "pipeline_job_id",
              "value": "={{ $json.pipeline_job_id }}"
            },
            {
              "name": "status",
              "value": "ready"
            },
            {
              "name": "created_at",
              "value": "={{ $now.toISO() }}"
            }
          ]
        },
        "options": {}
      }
    },
    {
      "id": "find-pipeline-420",
      "name": "Pipeline Job finden",
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.2,
      "position": [
        1100,
        0
      ],
      "onError": "continueRegularOutput",
      "parameters": {
        "method": "GET",
        "url": "https://directus.automation-plus-ki.de/items/400_content_pipeline?filter[job_id][_eq]=${$('Dateiname').item.json.pipeline_job_id}&limit=1",
        "sendHeaders": true,
        "headerParameters": {
          "parameters": [
            {
              "name": "Authorization",
              "value": "Bearer ={{ $env.DIRECTUS_TOKEN }}"
            }
          ]
        },
        "options": {}
      }
    },
    {
      "id": "patch-pipeline-420",
      "name": "Pipeline-Job updaten",
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.2,
      "position": [
        1320,
        0
      ],
      "onError": "continueRegularOutput",
      "parameters": {
        "method": "PATCH",
        "url": "https://directus.automation-plus-ki.de/items/400_content_pipeline",
        "sendHeaders": true,
        "headerParameters": {
          "parameters": [
            {
              "name": "Authorization",
              "value": "Bearer ={{ $env.DIRECTUS_TOKEN }}"
            }
          ]
        },
        "sendBody": true,
        "contentType": "json",
        "body": "={{ JSON.stringify([{Id:$json.data?.[0]?.Id,audio_url:$('Dateiname').item.json.audio_url||'',stage:'publish',status:'running'}]) }}",
        "options": {
          "response": {
            "response": {
              "neverError": true
            }
          }
        }
      }
    }
  ],
  "connections": {
    "Webhook": {
      "main": [
        [
          {
            "node": "TTS vorbereiten",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "TTS vorbereiten": {
      "main": [
        [
          {
            "node": "Fish Audio TTS",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Fish Audio TTS": {
      "main": [
        [
          {
            "node": "Dateiname",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Dateiname": {
      "main": [
        [
          {
            "node": "NocoDB media_assets",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "NocoDB media_assets": {
      "main": [
        [
          {
            "node": "Pipeline Job finden",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Pipeline Job finden": {
      "main": [
        [
          {
            "node": "Pipeline-Job updaten",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  },
  "settings": {
    "executionOrder": "v1"
  },
  "staticData": null
}
Pro

For the full experience including quality scoring and batch install features for each workflow upgrade to Pro

About this workflow

40_420_FISH_AUDIO. Uses httpRequest. Webhook trigger; 7 nodes.

Source: https://github.com/timo-goetz-ai/apki-core-platform/blob/main/automations/n8n-workflows/content-pipeline/40_420_FISH_AUDIO.json — original creator credit. Request a take-down →

More Web Scraping workflows → · Browse all categories →

Related workflows

Workflows that share integrations, category, or trigger type with this one. All free to copy and import.

Web Scraping

This n8n template provides enterprise-level version control for your workflows using GitHub integration. Stop losing hours to broken workflows and manual exports – get proper commit history, visual di

n8n, Execute Workflow Trigger, HTTP Request +1
Web Scraping

This flow creates dummy files for every item added in your *Arrs (Radarr/Sonarr) with the tag .

HTTP Request, Ssh
Web Scraping

eek-Go v2 (Batch-Then-Review). Uses httpRequest. Webhook trigger; 75 nodes.

HTTP Request
Web Scraping

This workflow receives webhook requests from a content calendar and uses the X API v2 to publish text posts, threads, image/video posts, and polls, as well as delete existing posts and run a credentia

HTTP Request
Web Scraping

This workflow acts as a central API gateway for all technical indicator agents in the Binance Spot Market Quant AI system. It listens for incoming webhook requests and dynamically routes them to the c

HTTP Request