Why is my work not writable?

{
“nodes”: [
{
“parameters”: {
“options”: {}
},
“type”: “n8n-nodes-base.splitInBatches”,
“typeVersion”: 3,
“position”: [
768,
144
],
“name”: “Loop Over Items”,
“id”: “038cb313-5e42-449f-bdd0-cc3547196ac3”
},
{
“parameters”: {
“resource”: “speech”,
“voice”: {
“_rl": true,
“value”: “7lu3ze7orhWaNeSPowWx”,
“mode”: “id”
},
“text”: “={{ $json.content }}”,
“additionalOptions”: {
“outputFormat”: “mp3_44100_128”,
“voiceSettings”: “{\n "stability": 0.5,\n "similarity_boost": 0.75,\n "style": 0,\n "use_speaker_boost": true,\n "speed": 1.1\n}”
},
“requestOptions”: {}
},
“type”: “@elevenlabs/n8n-nodes-elevenlabs.elevenLabs”,
“typeVersion”: 1,
“position”: [
1008,
144
],
“name”: “Generate Audio”,
“id”: “da068333-a1a2-49cd-8f59-0ce527dccf65”,
“alwaysOutputData”: false,
“notesInFlow”: false,
“credentials”: {
“elevenLabsApi”: {
“id”: “9cnPNS9Egm9Q1lmb”,
“name”: “ElevenLabs account”
}
}
},
{
“parameters”: {
“path”: “db0c9de5-c9ab-4482-b80a-a0d076c3f6e1”,
“formTitle”: “Form”,
“formDescription”: " ",
“formFields”: {
“values”: [
{
“fieldLabel”: “text”
},
{
“fieldLabel”: “image”,
“fieldType”: “file”
}
]
},
“options”: {}
},
“type”: “n8n-nodes-base.formTrigger”,
“typeVersion”: 2,
“position”: [
-64,
144
],
“name”: “Text submission with divisions nNUMBER”,
“id”: “c1b87efa-74e8-4c87-8487-6dc7be4fedf0”,
“webhookId”: “db0c9de5-c9ab-4482-b80a-a0d076c3f6e1”
},
{
“parameters”: {
“jsCode”: “// Gets the text from the form\nconst rawText = $input.first().json.text;\n\nconst regex = /(n\d+)(.*?)(?=n\d+|$)/gs;\n\nconst blocks = [];\nlet match;\n\nwhile ((match = regex.exec(rawText)) !== null) {\n blocks.push({\n number: match[1],\n content: match[2].trim()\n });\n}\n\nreturn blocks.map(block => ({ json: block }));”
},
“type”: “n8n-nodes-base.code”,
“typeVersion”: 2,
“position”: [
320,
144
],
“name”: “Text separation into blocks”,
“id”: “22277a9b-a462-4a15-9004-eafbc0bb34f5”
},
{
“parameters”: {
“jsCode”: “const items = $input.all();\n\nreturn items.map(item => {\n const text = item.json.content;\n\n const cleaned = text.replace(/[\/\\]/g, ‘’);\n\n item.json.content = cleaned;\n\n return item;\n});”
},
“type”: “n8n-nodes-base.code”,
“typeVersion”: 2,
“position”: [
480,
144
],
“id”: “c2ff9fae-3727-42e2-948c-055d3c04fc39”,
“name”: “Code in JavaScript”
},
{
“parameters”: {
“fileName”: "=/files/youtube/audio_english
{{$item(0).$node["Text separation into blocks"].json["number"]}}.mp3”,
“options”: {}
},
“id”: “fade28f9-9db0-4161-b795-31b8a40f06a1”,
“name”: “Save image1”,
“type”: “n8n-nodes-base.writeBinaryFile”,
“typeVersion”: 1,
“position”: [
1280,
144
]
}
],
“connections”: {
“Loop Over Items”: {
“main”: [
,
[
{
“node”: “Generate Audio”,
“type”: “main”,
“index”: 0
}
]
]
},
“Generate Audio”: {
“main”: [
[
{
“node”: “Save image1”,
“type”: “main”,
“index”: 0
}
]
]
},
“Text submission with divisions nNUMBER”: {
“main”: [
[
{
“node”: “Text separation into blocks”,
“type”: “main”,
“index”: 0
}
]
]
},
“Text separation into blocks”: {
“main”: [
[
{
“node”: “Code in JavaScript”,
“type”: “main”,
“index”: 0
}
]
]
},
“Code in JavaScript”: {
“main”: [
[
{
“node”: “Loop Over Items”,
“type”: “main”,
“index”: 0
}
]
]
},
“Save image1”: {
“main”: [

]
}
},
“pinData”: {},
“meta”: {
“templateCredsSetupCompleted”: true,
“instanceId”: “842620cf479449a2cd5aeaaaceb0f67e5512a70acd309b0df108bddc73a12684”
}
}

Describe the problem/error/question

What is the error message (if any)?

Please share your workflow

(Select the nodes on your canvas and use the keyboard shortcuts CMD+C/CTRL+C and CMD+V/CTRL+V to copy and paste the workflow.)

Share the output returned by the last node

Information on your n8n setup

  • n8n version:
  • Database (default: SQLite):
  • n8n EXECUTIONS_PROCESS setting (default: own, main):
  • Running n8n via (Docker, npm, n8n cloud, desktop app):
  • Operating system:

Can you please paste your code in a prefomatted text format ?

Your docker-compose.yml needs a permission in the enviroment, and when you add the “- N8N_RESTRICT_FILE_ACCESS_TO=/files/youtube” it should work well now.

1.Make sure the volume is mounted correctly (Docker):

In your docker-compose.yml, mount a local directory to /files inside the container:

volumes:
- ./local-files:/files
environment:
- N8N_RESTRICT_FILE_ACCESS_TO=/files

2. Fix directory ownership:

Ensure the mounted directory is owned by UID 1000 (the node user inside the container):

chown -R 1000:1000 ./local-files
chmod 755 ./local-files

3. Restart your containers after making changes:

docker compose down && docker compose up -d