AutomationFlowsAI & RAG › Save Workflow Results as Markdown Notes in Obsidian via Google Drive

Save Workflow Results as Markdown Notes in Obsidian via Google Drive

Original n8n title: Workflow Results to Markdown Notes in Your Obsidian Vault, via Google Drive (google Drive)

Workflow Results to Markdown Notes in Your Obsidian Vault, via Google Drive. Uses googleDrive, executeWorkflowTrigger, agent, outputParserStructured. Event-driven trigger; 15 nodes.

Event trigger★★★★☆ complexityAI-powered15 nodesGoogle DriveExecute Workflow TriggerAgentOutput Parser StructuredOpenAI Chat
AI & RAG Trigger: Event Nodes: 15 Complexity: ★★★★☆ AI nodes: yes Added:

This workflow follows the Agent → Execute Workflow Trigger recipe pattern — see all workflows that pair these two integrations.

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
{
  "id": "3wbxkdT6hilhq0Na",
  "name": "Workflow Results to Markdown Notes in Your Obsidian Vault, via Google Drive",
  "tags": [],
  "nodes": [
    {
      "id": "be787ece-4118-4063-98b0-41672dd570c0",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        560,
        -480
      ],
      "parameters": {
        "width": 440,
        "height": 680,
        "content": "## Obsidian Vault\uc5d0 \ud3f4\ub354 \uc5f0\uacb0  \n**\uc124\uc815 \uc9c0\uce68:**  \n- Google Drive\uc5d0 \ub370\uc2a4\ud06c\ud1b1\uacfc \ub3d9\uae30\ud654\ub418\ub294 \ud3f4\ub354\ub97c \uc0dd\uc131\ud558\uc138\uc694.  \n- Google Drive \ub178\ub4dc\ub97c \ub2e4\uc74c\uacfc \uac19\uc774 \uad6c\uc131\ud558\uc138\uc694:  \n   - \uc0c8\ub85c \uc0dd\uc131\ub41c \ud3f4\ub354\ub97c \uc0c1\uc704 \ud3f4\ub354\ub85c \uc9c0\uc815\ud558\uc138\uc694.  \n   - \ud30c\uc77c \uc774\ub984\uc744 \uc9c0\uc815\ud558\uc138\uc694, .md\ub97c \ucd94\uac00\ud558\uc5ec (\uc608: `{{ $json.title }}.md`).  \n   - File Content \ud544\ub4dc\uc5d0 Markdown \ub0b4\uc6a9\uc744 \ucd94\uac00\ud558\uc138\uc694, \uc120\ud0dd\uc801\uc778 YAML Frontmatter\ub97c \ud3ec\ud568\ud558\uc5ec.  \n- Google Drive \ud3f4\ub354\uc640 Obsidian Vault\uc758 \uc0c8 \ud3f4\ub354 \uc0ac\uc774\uc5d0 \uc2ec\ub9c1\ud06c\ub97c \uc124\uc815\ud558\uc138\uc694."
      },
      "typeVersion": 1
    },
    {
      "id": "a30f3fdc-95a1-44ff-844a-58353dc7e177",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -800,
        -480
      ],
      "parameters": {
        "width": 440,
        "height": 680,
        "content": "## \uc6cc\ud06c\ud50c\ub85c \uacb0\uacfc Obsidian \ubcf4\uad00\ud568\uc73c\ub85c  \n\uc774 \ud15c\ud50c\ub9bf\uc740 n8n \uc6cc\ud06c\ud50c\ub85c \uacb0\uacfc\uc5d0\uc11c \uc2e4\uc2dc\uac04\uc73c\ub85c Obsidian \ubcf4\uad00\ud568\uc5d0 \ub178\ud2b8\ub97c \uc790\ub3d9\uc73c\ub85c \uc0dd\uc131\ud558\uace0 \uc5c5\ub370\uc774\ud2b8\ud569\ub2c8\ub2e4. Google Drive\uc5d0 \uc800\uc7a5\ub41c Markdown \ud30c\uc77c\uacfc \ucca8\ubd80 \ud30c\uc77c\uc774 \uc989\uc2dc Obsidian \ubcf4\uad00\ud568\uc5d0 \ub098\ud0c0\ub0a9\ub2c8\ub2e4.  \n\n**\ubaa8\ub4e0 \uc6cc\ud06c\ud50c\ub85c\uc758 \ucd9c\ub825\uc744 Execute Workflow Trigger beow\ub85c \ubcf4\ub0b4\uc138\uc694**  \n\n### \ucd9c\ub825"
      },
      "typeVersion": 1
    },
    {
      "id": "d9527913-dad1-4abc-8c86-8c76f53dd513",
      "name": "Save Markdown file",
      "type": "n8n-nodes-base.googleDrive",
      "position": [
        740,
        0
      ],
      "parameters": {
        "name": "={{ $json.title }}.md",
        "content": "=---\n{{ $json.frontmatter }}\n---\n{{ $json.content }}",
        "driveId": {
          "__rl": true,
          "mode": "list",
          "value": "My Drive",
          "cachedResultUrl": "https://drive.google.com/drive/my-drive",
          "cachedResultName": "My Drive"
        },
        "options": {},
        "folderId": {
          "__rl": true,
          "mode": "list",
          "value": "15dvUtfSjaCCXmnOVeIUfeyRd_raI3PnQ",
          "cachedResultUrl": "https://drive.google.com/drive/folders/15dvUtfSjaCCXmnOVeIUfeyRd_raI3PnQ",
          "cachedResultName": "clippings-attachments"
        },
        "operation": "createFromText"
      },
      "credentials": {
        "googleDriveOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 3
    },
    {
      "id": "6484937e-17fd-444c-916b-1527382927d4",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1020,
        -380
      ],
      "parameters": {
        "color": 3,
        "width": 460,
        "height": 540,
        "content": "## \uc2ec\ubcfc\ub9ad \ub9c1\ud06c \uc0dd\uc131\nGoogle Drive \ub370\uc2a4\ud06c\ud1b1 \ud3f4\ub354\ub97c Obsidian Vault\uc640 \ud1b5\ud569\ud558\uae30 \uc704\ud574 \uc2ec\ubcfc\ub9ad \ub9c1\ud06c\ub97c \uc0dd\uc131\ud558\uc138\uc694. \uc774\ub807\uac8c \ud558\uba74 Google Drive\uc5d0 \uc800\uc7a5\ub41c \uc6cc\ud06c\ud50c\ub85c\uc6b0 \uc0dd\uc131 \ub178\ud2b8\uac00 Obsidian\uc5d0\uc11c \uc989\uc2dc \ub098\ud0c0\ub098\uace0 \uc5c5\ub370\uc774\ud2b8\ub429\ub2c8\ub2e4.\n\n- **\uad00\ub9ac\uc790 \uba85\ub839 \ud504\ub86c\ud504\ud2b8 \uc5f4\uae30:** `Win + S`\ub97c \ub204\ub978 \ud6c4, `cmd`\ub97c \uc785\ub825\ud558\uace0, \uba85\ub839 \ud504\ub86c\ud504\ud2b8\uc5d0\uc11c \uc624\ub978\ucabd \ud074\ub9ad\ud55c \ud6c4 `\uad00\ub9ac\uc790 \uad8c\ud55c\uc73c\ub85c \uc2e4\ud589`\uc744 \uc120\ud0dd\ud558\uc138\uc694.\n\n- **\ud3f4\ub354 \uacbd\ub85c \uac00\uc838\uc624\uae30:** \uc18c\uc2a4 \uacbd\ub85c\ub97c \uc2dd\ubcc4\ud558\uc138\uc694: \uc774\uac83\uc740 \uc5f0\uacb0\ud558\uace0 \uc2f6\uc740 \uae30\uc874 Google Drive \ud3f4\ub354\uc785\ub2c8\ub2e4. \ub300\uc0c1 \uacbd\ub85c\ub97c \uacb0\uc815\ud558\uc138\uc694: \uc774\uac83\uc740 \uc2ec\ubcfc\ub9ad \ub9c1\ud06c\uac00 \uc0dd\uc131\ub420 Obsidian Vault\uc758 \ud3f4\ub354\uc785\ub2c8\ub2e4. \ub300\uc0c1 \uacbd\ub85c\uac00 \uc774\ubbf8 \uc874\uc7ac\ud558\uc9c0 \uc54a\ub3c4\ub85d \ud558\uc138\uc694.\n\n- **mklink \uba85\ub839 \uc2e4\ud589:** \ub514\ub809\ud1a0\ub9ac \uc2ec\ubcfc\ub9ad \ub9c1\ud06c\ub97c \uc0dd\uc131\ud558\uae30 \uc704\ud574 \ub2e4\uc74c \uad6c\ubb38\uc744 \uc0ac\uc6a9\ud558\uc138\uc694: `mklink /D \"Target Path\" \"Source Path\"` \ub300\uc0c1 \uacbd\ub85c\ub294 Vault\uc5d0\uc11c \uc2ec\ubcfc\ub9ad \ub9c1\ud06c\uac00 \uc0dd\uc131\ub420 \uc704\uce58\uc785\ub2c8\ub2e4. \uc18c\uc2a4 \uacbd\ub85c\ub294 Google Drive \ud3f4\ub354\uc785\ub2c8\ub2e4.\n\n- **\uc608\uc81c \uba85\ub839:** `mklink /D \"C:\\Users\\YourName\\Vault\\OtherFolder\" \"C:\\Users\\YourName\\Google Drive\\MyFolder\"`"
      },
      "typeVersion": 1
    },
    {
      "id": "fe21a7c2-e8db-46be-87e7-63888bf6e9e7",
      "name": "Receive results from any workflow",
      "type": "n8n-nodes-base.executeWorkflowTrigger",
      "position": [
        -660,
        0
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "8f2399ba-0bda-4a2e-b773-7e28df16e7c2",
      "name": "If the input has binary attachment",
      "type": "n8n-nodes-base.if",
      "position": [
        20,
        -160
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "9f56b367-2313-4a92-9572-b2d2687aba71",
              "operator": {
                "type": "string",
                "operation": "exists",
                "singleValue": true
              },
              "leftValue": "={{$json[\"binary\"]}}",
              "rightValue": ""
            }
          ]
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "d7cae1d6-5bfe-4e69-8257-0f7947b51c96",
      "name": "Write Zettlekasten note from input1",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        -280,
        240
      ],
      "parameters": {
        "text": "={{ JSON.stringify($json) }}",
        "options": {
          "systemMessage": "You are an expert knowledge management assistant creating a Zettlekasten note from raw input data. Follow these precise steps:\n\n1. Extract key insights and meaningful connections from the provided JSON input.\n\n2. Structure the note using these Zettlekasten principles:\n- Create a clear, atomic central idea\n- Use precise, concise language\n- Link potential connections to other knowledge domains\n- Ensure the note can stand alone as a meaningful knowledge unit\n\n3. Note format:\n- Unique ID: Generate a unique identifier \n- Title: Concise, descriptive headline capturing core insight\n- Content: Synthesized information with clear reasoning\n- Tags: Relevant conceptual tags for future retrieval\n- References: Source of original data (optional)\n\n4. Prioritize intellectual clarity, semantic depth, and potential for future knowledge expansion.\n\nRespond ONLY with the completed Zettlekasten note in JSON format. Do not include any additional commentary or explanation."
        },
        "promptType": "define",
        "hasOutputParser": true
      },
      "typeVersion": 1.7
    },
    {
      "id": "303d6633-8e98-4fbc-8ee1-9f1075bcaa3e",
      "name": "Structured Output Parser",
      "type": "@n8n/n8n-nodes-langchain.outputParserStructured",
      "position": [
        -100,
        420
      ],
      "parameters": {
        "schemaType": "manual",
        "inputSchema": "{\n  \"title\": \"Concise, Descriptive Title\",\n  \"content\": \"Synthesized insights and key information\"\n}"
      },
      "typeVersion": 1.2
    },
    {
      "id": "62800f09-8659-47b8-9a85-7d3d2c07ec1a",
      "name": "OpenAI Chat Model",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        -300,
        420
      ],
      "parameters": {
        "options": {}
      },
      "credentials": {
        "openAiApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "df11dfcb-fb38-4796-9b28-eb1876f68261",
      "name": "Restructure JSON",
      "type": "n8n-nodes-base.set",
      "position": [
        400,
        240
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "c9061623-d0d0-4b63-a166-4766d88992aa",
              "name": "title",
              "type": "string",
              "value": "={{ $('Write Zettlekasten note from input1').item.json.output.title }}"
            },
            {
              "id": "9f870307-3cbf-41b3-ba69-309610b2d020",
              "name": "content",
              "type": "string",
              "value": "={{ $('Write Zettlekasten note from input1').item.json.output.content }}"
            },
            {
              "id": "1f40b120-00e4-479f-85b0-3fd903e629cb",
              "name": "frontmatter",
              "type": "string",
              "value": "={{ $json.output.frontmatter }}"
            },
            {
              "id": "5b845683-5a25-486b-92b0-98990fcbf7af",
              "name": "references",
              "type": "string",
              "value": "={{ $('Write Zettlekasten note from input1').item.json.output.references }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "2a701cf8-e59d-47ae-83c6-9ac7148bd2c8",
      "name": "Structured Output Parser1",
      "type": "@n8n/n8n-nodes-langchain.outputParserStructured",
      "position": [
        240,
        420
      ],
      "parameters": {
        "jsonSchemaExample": "{\n\t\"frontmatter\": \"frontmatter here\"\n}"
      },
      "typeVersion": 1.2
    },
    {
      "id": "1e4da42e-e945-4be8-88ac-2579857ff3fa",
      "name": "OpenAI Chat Model1",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        60,
        420
      ],
      "parameters": {
        "options": {}
      },
      "credentials": {
        "openAiApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "af5494d8-a53f-48b1-b939-210c882485be",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -340,
        100
      ],
      "parameters": {
        "color": 4,
        "width": 880,
        "height": 460,
        "content": "## \uc120\ud0dd \uc0ac\ud56d - AI \uc5d0\uc774\uc804\ud2b8\ub85c \ub178\ud2b8 \uad6c\uc131 \uc0ac\uc6a9\n\ub178\ud2b8\uc758 \uc81c\ubaa9, YAML \ud504\ub860\ud2b8\ub9e4\ud130, \uadf8\ub9ac\uace0 \ucf58\ud150\uce20\uc5d0 \ub300\ud55c JSON \ud30c\ub77c\ubbf8\ud130\ub97c \uc9c1\uc811 \uc0ac\uc6a9\ud558\ub294 \ub300\uc2e0, AI \uc5d0\uc774\uc804\ud2b8\ub97c \uc774\uc6a9\ud558\uc5ec \uc774\ub7ec\ud55c \uc694\uc18c\ub97c \uad6c\uc131\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc774 \uc811\uadfc \ubc29\uc2dd\uc740 \uc6f9\ud6c5\uacfc Google Drive \ub178\ud2b8 \uc0ac\uc774\uc5d0 AI \uc9c0\uc6d0 \uc6cc\ud06c\ud50c\ub85c\ub97c \uc0bd\uc785\ud558\ub294 \uac83\uc744 \ud3ec\ud568\ud558\uba70, \uc9c1\uc811 \uc5f0\uacb0 \ub300\uc2e0\uc785\ub2c8\ub2e4."
      },
      "typeVersion": 1
    },
    {
      "id": "5d184ea4-88d0-4658-ab94-55246f3507fc",
      "name": "Write YAML Frontmatter",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        60,
        240
      ],
      "parameters": {
        "text": "={{ $json.output.content }}",
        "options": {
          "systemMessage": "=Generate comprehensive YAML frontmatter for an Obsidian note, focusing on metadata extraction and organization.\n\nOutput Format:\n```yaml\ntitle: \"{Extract a clear, concise title from input data}\"\ndate: {{ $now.toFormat('yyyy-MM-dd') }}\n\ntags:\n - {Derive 3-4 most relevant conceptual tags}\naliases:\n - {Alternative titles or key phrases}\nstatus: \"draft\"\nsource: \"{Infer original data source if possible}\""
        },
        "promptType": "define",
        "hasOutputParser": true
      },
      "typeVersion": 1.7
    },
    {
      "id": "d2b291be-97af-4bcb-8cc6-b21439bdcfb9",
      "name": "Save attachment",
      "type": "n8n-nodes-base.googleDrive",
      "position": [
        740,
        -180
      ],
      "parameters": {
        "name": "=",
        "driveId": {
          "__rl": true,
          "mode": "list",
          "value": "My Drive",
          "cachedResultUrl": "https://drive.google.com/drive/my-drive",
          "cachedResultName": "My Drive"
        },
        "options": {},
        "folderId": {
          "__rl": true,
          "mode": "list",
          "value": "15dvUtfSjaCCXmnOVeIUfeyRd_raI3PnQ",
          "cachedResultUrl": "https://drive.google.com/drive/folders/15dvUtfSjaCCXmnOVeIUfeyRd_raI3PnQ",
          "cachedResultName": "clippings-attachments"
        },
        "inputDataFieldName": "=data"
      },
      "credentials": {
        "googleDriveOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 3
    }
  ],
  "active": false,
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "c87bbecc-453d-4b8c-8b86-dcf7e1d6907b",
  "connections": {
    "Restructure JSON": {
      "main": [
        []
      ]
    },
    "OpenAI Chat Model": {
      "ai_languageModel": [
        [
          {
            "node": "Write Zettlekasten note from input1",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "OpenAI Chat Model1": {
      "ai_languageModel": [
        [
          {
            "node": "Write YAML Frontmatter",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Save Markdown file": {
      "main": [
        []
      ]
    },
    "Write YAML Frontmatter": {
      "main": [
        [
          {
            "node": "Restructure JSON",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Structured Output Parser": {
      "ai_outputParser": [
        [
          {
            "node": "Write Zettlekasten note from input1",
            "type": "ai_outputParser",
            "index": 0
          }
        ]
      ]
    },
    "Structured Output Parser1": {
      "ai_outputParser": [
        [
          {
            "node": "Write YAML Frontmatter",
            "type": "ai_outputParser",
            "index": 0
          }
        ]
      ]
    },
    "Receive results from any workflow": {
      "main": [
        [
          {
            "node": "If the input has binary attachment",
            "type": "main",
            "index": 0
          },
          {
            "node": "Save Markdown file",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "If the input has binary attachment": {
      "main": [
        [
          {
            "node": "Save attachment",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Write Zettlekasten note from input1": {
      "main": [
        [
          {
            "node": "Write YAML Frontmatter",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}

Credentials you'll need

Each integration node will prompt for credentials when you import. We strip credential IDs before publishing — you'll add your own.

Pro

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

About this workflow

Workflow Results to Markdown Notes in Your Obsidian Vault, via Google Drive. Uses googleDrive, executeWorkflowTrigger, agent, outputParserStructured. Event-driven trigger; 15 nodes.

Source: https://github.com/n8nKOR/n8n-shared-workflow/blob/62a671327e906c22a40d290b339ff6d2373f8d75/workflows/n8n-workflows-by-Zie619/google/3wbxkdT6hilhq0Na_Workflow_Results_to_Markdown_Notes_in_Your_Obsidian_Vault,_via_Google_Drive.json — original creator credit. Request a take-down →

More AI & RAG workflows → · Browse all categories →

Related workflows

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

AI & RAG

The best content automation template in the market is now even better—with “deep research” on time-sensitive topics\! Unlike most n8n content automation templates that are mainly for “demo purposes,”

OpenAI, HTTP Request, XML +11
AI & RAG

This workflow contains community nodes that are only compatible with the self-hosted version of n8n.

Output Parser Structured, Telegram, N8N Nodes Tesseractjs +14
AI & RAG

Actioning Your Meeting Next Steps Using Transcripts And Ai. Uses lmChatOpenAi, httpRequest, googleDrive, manualTrigger. Event-driven trigger; 28 nodes.

OpenAI Chat, HTTP Request, Google Drive +5
AI & RAG

Splitout Googlecalendar. Uses lmChatOpenAi, httpRequest, googleDrive, manualTrigger. Event-driven trigger; 28 nodes.

OpenAI Chat, HTTP Request, Google Drive +5
AI & RAG

This n8n workflow demonstrates how you can summarise and automate post-meeting actions from video transcripts fed into an AI Agent.

OpenAI Chat, HTTP Request, Google Drive +5