[{"updatedAt":"2026-05-14T21:36:33.279Z","createdAt":"2026-05-14T21:36:33.279Z","id":"Ori3Bu5u5ODtxxyD","name":"Obsidian URL to Note","description":null,"active":true,"isArchived":false,"nodes":[{"parameters":{"httpMethod":"POST","path":"obsidian-url-to-note","responseMode":"responseNode","options":{}},"id":"70c67af3-3642-404e-bca9-8024f1ae2c4f","name":"Webhook - URL to Note","type":"n8n-nodes-base.webhook","typeVersion":2,"position":[0,0],"webhookId":"obsidian-url-to-note"},{"parameters":{"jsCode":"\nconst input = $json.body ?? $json;\nconst url = String(input.url || input.link || '').trim();\nif (!/^https?:\\/\\//i.test(url)) throw new Error('POST JSON must include url starting with http:// or https://');\nreturn [{json:{url, folder: input.folder || 'Resources/Web Clips', tags: Array.isArray(input.tags)?input.tags:[], notes: input.notes || input.note || ''}}];\n"},"id":"9de66ad1-e538-455d-890a-be9b75a769d1","name":"Validate URL","type":"n8n-nodes-base.code","typeVersion":2,"position":[240,0]},{"parameters":{"method":"POST","url":"http://172.19.0.1:18812/extract","sendBody":true,"specifyBody":"json","jsonBody":"={{JSON.stringify({url:$json.url})}}","options":{"timeout":120000}},"id":"78ac965f-38c0-4821-b0ac-9a22a3b4d034","name":"Extract Content","type":"n8n-nodes-base.httpRequest","typeVersion":4.2,"position":[500,0]},{"parameters":{"jsCode":"\nconst original = $('Validate URL').first().json;\nconst ex = $json;\nconst title = ex.title || ex.metadata?.title || original.url;\nconst text = String(ex.markdown || ex.content || ex.text || ex.article || JSON.stringify(ex)).slice(0,60000);\nreturn [{json:{...original, extractedTitle:title, extractedText:text}}];\n"},"id":"51b95641-61c9-4d5e-8d1c-1b166f0a7dc0","name":"Prepare LLM Input","type":"n8n-nodes-base.code","typeVersion":2,"position":[760,0]},{"parameters":{"method":"POST","url":"http://172.19.0.1:18806/v1/chat/completions","sendBody":true,"specifyBody":"json","jsonBody":"={JSON.stringify({model:\"gemma-4-26B-A4B-it-UD-IQ2_M.gguf\", temperature:0.2, max_tokens:2048, messages:[{role:'system', content:'Convert extracted web content into concise Obsidian resource notes. Return only valid JSON with keys: title, summary, key_points, tags, note.'}, {role:'user', content:'URL: '+$json.url+'\\nTitle: '+$json.extractedTitle+'\\n\\nContent:\\n'+$json.extractedText}]})}","options":{"timeout":240000}},"id":"57f10533-1217-4486-bc79-33343782f54c","name":"Summarize with Local LLM","type":"n8n-nodes-base.httpRequest","typeVersion":4.2,"position":[1020,0],"continueOnFail":true},{"parameters":{"jsCode":"\nconst original = $('Prepare LLM Input').first().json;\nlet content = $json.choices?.[0]?.message?.content || '';\ncontent = String(content).replace(/^```json\\s*/i,'').replace(/^```\\s*/i,'').replace(/```$/,'').trim();\nlet parsed; try { parsed = JSON.parse(content); } catch(e) { parsed = {title: original.extractedTitle, summary: content || 'Summary unavailable.', key_points: [], note: original.extractedText.slice(0,8000), tags: []}; }\nfunction clean(s){ return String(s||'Untitled Resource').replace(/[\\\\/:*?\"<>|#\\[\\]]/g,'').replace(/\\s+/g,' ').trim().slice(0,120) || 'Untitled Resource'; }\nconst now = new Date(); const iso = now.toISOString(); const date = iso.slice(0,10);\nconst title = clean(parsed.title || original.extractedTitle);\nconst tags = Array.from(new Set(['automation/n8n','resource','web-clip',...(original.tags||[]),...(parsed.tags||[])]));\nconst points = Array.isArray(parsed.key_points) ? parsed.key_points.map(p=>`- ${p}`).join('\\n') : String(parsed.key_points||'');\nconst body = `---\ntitle: ${JSON.stringify(title)}\ntype: resource\nsource: ${JSON.stringify(original.url)}\ncreated: ${JSON.stringify(iso)}\ntags: ${JSON.stringify(tags)}\n---\n\n# ${title}\n\nSource: ${original.url}\n\n## Summary\n\n${parsed.summary || '_No summary generated._'}\n\n## Key points\n\n${points || '_No key points generated._'}\n\n## Notes\n\n${original.notes || ''}\n\n## Extracted note\n\n${parsed.note || ''}\n`;\nreturn [{json:{path:`${original.folder}/${date} - ${title}.md`, body, title, url: original.url}}];\n"},"id":"0e9af8e2-5ab0-4eac-9bd1-5578f946814f","name":"Build Resource Note","type":"n8n-nodes-base.code","typeVersion":2,"position":[1280,0]},{"parameters":{"method":"PUT","url":"={{'http://172.19.0.1:27123/vault/' + encodeURIComponent($json.path).replace(/%2F/g, '/')}}","sendHeaders":true,"headerParameters":{"parameters":[{"name":"Content-Type","value":"text/markdown"}]},"sendBody":true,"contentType":"raw","rawContentType":"text/markdown","body":"={{$json.body}}","options":{"timeout":30000},"authentication":"genericCredentialType","genericAuthType":"httpHeaderAuth"},"id":"725068d4-175e-462b-9050-fd42b229f8df","name":"Write Resource Note","type":"n8n-nodes-base.httpRequest","typeVersion":4.2,"position":[1540,0],"credentials":{"httpHeaderAuth":{"id":"465Swz2b71O2KRAK","name":"Obsidian Local REST API"}}},{"parameters":{"respondWith":"json","responseBody":"={{JSON.stringify({ok:true,path:$('Build Resource Note').first().json.path,title:$('Build Resource Note').first().json.title,url:$('Build Resource Note').first().json.url})}}","options":{}},"id":"d07a2d9e-b9e3-455a-bcdf-2604ab6db3a9","name":"Respond","type":"n8n-nodes-base.respondToWebhook","typeVersion":1.1,"position":[1800,0]}],"connections":{"Webhook - URL to Note":{"main":[[{"node":"Validate URL","type":"main","index":0}]]},"Validate URL":{"main":[[{"node":"Extract Content","type":"main","index":0}]]},"Extract Content":{"main":[[{"node":"Prepare LLM Input","type":"main","index":0}]]},"Prepare LLM Input":{"main":[[{"node":"Summarize with Local LLM","type":"main","index":0}]]},"Summarize with Local LLM":{"main":[[{"node":"Build Resource Note","type":"main","index":0}]]},"Build Resource Note":{"main":[[{"node":"Write Resource Note","type":"main","index":0}]]},"Write Resource Note":{"main":[[{"node":"Respond","type":"main","index":0}]]}},"settings":{"executionOrder":"v1","callerPolicy":"workflowsFromSameOwner","availableInMCP":false},"staticData":null,"meta":null,"pinData":null,"versionId":"70bd9e5f-b04f-4ba1-b6d1-82cfece2bc2f","activeVersionId":"70bd9e5f-b04f-4ba1-b6d1-82cfece2bc2f","versionCounter":3,"triggerCount":1,"tags":[],"shared":[{"updatedAt":"2026-05-14T21:36:33.285Z","createdAt":"2026-05-14T21:36:33.285Z","role":"workflow:owner","workflowId":"Ori3Bu5u5ODtxxyD","projectId":"WGdp8QunI1tHpjXa","project":{"updatedAt":"2026-03-11T21:08:10.005Z","createdAt":"2026-03-11T21:05:11.541Z","id":"WGdp8QunI1tHpjXa","name":"will will ","type":"personal","icon":null,"description":null,"creatorId":"5ad50ead-6e6a-4d12-ab5b-e5db15835bb5"}}],"versionMetadata":{"name":null,"description":null}}]