{
  "meta": {
    "templateCredsSetupCompleted": true
  },
  "nodes": [
    {
      "id": "0ad754e7-e05a-4935-a792-f3178248099a",
      "name": "OpenAI Chat Model",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        -1024,
        160
      ],
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-4.1-mini"
        },
        "options": {}
      },
      "credentials": {
        "openAiApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "7f83e0b2-5561-480f-b3c6-9bba76158752",
      "name": "Structured Output Parser",
      "type": "@n8n/n8n-nodes-langchain.outputParserStructured",
      "position": [
        -832,
        128
      ],
      "parameters": {
        "jsonSchemaExample": "{\n\t\"description\": \"description\"\n}"
      },
      "typeVersion": 1.3
    },
    {
      "id": "d88108ee-e1a0-43d2-948a-37bd706a33b5",
      "name": "Update row in sheet",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        -672,
        -336
      ],
      "parameters": {
        "columns": {
          "value": {
            "topic": "={{ $('Row added - Google Sheet').item.json.topic }}",
            "description": "={{ $json.output.description }}"
          },
          "schema": [
            {
              "id": "topic",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "topic",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "description",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "description",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "row_number",
              "type": "number",
              "display": true,
              "removed": true,
              "readOnly": true,
              "required": false,
              "displayName": "row_number",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [
            "topic"
          ],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "update",
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": "gid=0",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1d8O_Iwg5UtDjHM22zWHMegORatYzaQUYmzrcYnG5OSs/edit#gid=0",
          "cachedResultName": "data"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "1d8O_Iwg5UtDjHM22zWHMegORatYzaQUYmzrcYnG5OSs",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1d8O_Iwg5UtDjHM22zWHMegORatYzaQUYmzrcYnG5OSs/edit?usp=drivesdk",
          "cachedResultName": "Sheets Triggers"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.7
    },
    {
      "id": "bfa0fde3-6ddb-4e69-a1d5-b6d86ef89672",
      "name": "Append row in sheet",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        -656,
        -32
      ],
      "parameters": {
        "columns": {
          "value": {
            "Update": "={{ $('Row added - Google Sheet').item.json.topic }} was added"
          },
          "schema": [
            {
              "id": "Update",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Update",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [
            "topic"
          ],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "append",
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": 196803262,
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1d8O_Iwg5UtDjHM22zWHMegORatYzaQUYmzrcYnG5OSs/edit#gid=196803262",
          "cachedResultName": "actions"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "1d8O_Iwg5UtDjHM22zWHMegORatYzaQUYmzrcYnG5OSs",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1d8O_Iwg5UtDjHM22zWHMegORatYzaQUYmzrcYnG5OSs/edit?usp=drivesdk",
          "cachedResultName": "Sheets Triggers"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.7
    },
    {
      "id": "ae9c19db-71eb-4b38-adba-ca5d7468bdc2",
      "name": "Sticky Note16",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -2432,
        -656
      ],
      "parameters": {
        "width": 2016,
        "content": "## \ud83d\udcec Need Help or Want to Customize This?\n\ud83d\udce7 [robert@ynteractive.com](mailto:robert@ynteractive.com)  \n\ud83d\udd17 [LinkedIn](https://www.linkedin.com/in/robert-breen-29429625/)"
      },
      "typeVersion": 1
    },
    {
      "id": "6196c4fc-679c-4b5e-bbcc-685917d4fa5a",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -2432,
        -480
      ],
      "parameters": {
        "color": 5,
        "width": 904,
        "height": 860,
        "content": "### Step 1: Set Up Your Google Sheets\n\n**Option 1: Use Our Pre-Made Template (Recommended)**\n1. Copy our template: [AI Description Generator Template](https://docs.google.com/spreadsheets/d/1d8O_Iwg5UtDjHM22zWHMegORatYzaQUYmzrcYnG5OSs/edit?usp=sharing)\n2. Click \"File\" \u2192 \"Make a copy\" to create your own version\n3. Rename it as desired (e.g., \"My AI Content Generator\")\n4. Note your new sheet's URL - you'll need this for the workflow\n\n**Option 2: Create From Scratch**\n1. Go to [Google Sheets](https://sheets.google.com/)\n2. Create a new spreadsheet\n3. **Set up the main \"data\" tab:**\n   - Rename \"Sheet1\" to \"data\"\n   - Set up column headers in row 1:\n     - A1: `topic`\n     - B1: `description`\n4. **Create an \"actions\" tab:**\n   - Add a new sheet and name it \"actions\"\n   - Set up column headers:\n     - A1: `Update`\n5. Copy your sheet's URL\n\n### Step 2: Configure Google API Access\n\n1. **Enable Google Sheets API**\n   - Go to [Google Cloud Console](https://console.cloud.google.com/)\n   - Create a new project or select existing one\n   - Enable \"Google Sheets API\"\n   - Enable \"Google Drive API\"\n\n"
      },
      "typeVersion": 1
    },
    {
      "id": "ab630ed2-52a0-42ac-9e3d-3d9826ceb7e4",
      "name": "Row added - Google Sheet",
      "type": "n8n-nodes-base.googleSheetsTrigger",
      "position": [
        -1376,
        96
      ],
      "parameters": {
        "event": "rowAdded",
        "options": {},
        "pollTimes": {
          "item": [
            {
              "mode": "everyMinute"
            }
          ]
        },
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": "gid=0",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1d8O_Iwg5UtDjHM22zWHMegORatYzaQUYmzrcYnG5OSs/edit#gid=0",
          "cachedResultName": "data"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "1d8O_Iwg5UtDjHM22zWHMegORatYzaQUYmzrcYnG5OSs",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1d8O_Iwg5UtDjHM22zWHMegORatYzaQUYmzrcYnG5OSs/edit?usp=drivesdk",
          "cachedResultName": "Sheets Triggers"
        }
      },
      "credentials": {
        "googleSheetsTriggerOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "5b4d1f11-89c8-4b38-89f1-2e353eaa9b40",
      "name": "Description Writer",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        -992,
        -112
      ],
      "parameters": {
        "text": "={{ $json.topic }}",
        "options": {
          "systemMessage": "write a description of the topic. \n\noutput like this. \n\n{\n\t\"description\": \"description\"\n}"
        },
        "promptType": "define",
        "hasOutputParser": true
      },
      "typeVersion": 2.2
    },
    {
      "id": "8150251e-63e2-43a0-8952-85b86c796df0",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1504,
        -480
      ],
      "parameters": {
        "color": 4,
        "width": 1096,
        "height": 860,
        "content": "\n### Step 4: Import and Configure the N8N Workflow\n\n1. **Import the Workflow**\n   - Copy the workflow JSON from the template\n   - In your N8N instance, go to Workflows \u2192 Import from JSON\n   - Paste the JSON and import\n\n2. **Configure OpenAI Credentials**\n   - Click on the \"OpenAI Chat Model\" node\n   - Set up credentials using your OpenAI API key\n   - Test the connection to ensure it works\n\n3. **Configure Google Sheets Integration**\n   \n   **For the Trigger Node:**\n   - Click on \"Row added - Google Sheet\" node\n   - Set up Google Sheets Trigger OAuth2 credentials\n   - Select your spreadsheet from the dropdown\n   - Choose the \"data\" sheet\n   - Set polling to \"Every Minute\" (already configured)\n\n"
      },
      "typeVersion": 1
    }
  ],
  "connections": {
    "OpenAI Chat Model": {
      "ai_languageModel": [
        [
          {
            "node": "Description Writer",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Description Writer": {
      "main": [
        [
          {
            "node": "Update row in sheet",
            "type": "main",
            "index": 0
          },
          {
            "node": "Append row in sheet",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Row added - Google Sheet": {
      "main": [
        [
          {
            "node": "Description Writer",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Structured Output Parser": {
      "ai_outputParser": [
        [
          {
            "node": "Description Writer",
            "type": "ai_outputParser",
            "index": 0
          }
        ]
      ]
    }
  }
}