{
    "name": "[AI Tools 101] AI web scraping with Google Sheets",
    "flow": [
        {
            "id": 1,
            "module": "http:ActionSendData",
            "version": 3,
            "parameters": {
                "handleErrors": false,
                "useNewZLibDeCompress": true
            },
            "mapper": {
                "ca": "",
                "qs": [],
                "gzip": true,
                "headers": [],
                "timeout": "",
                "useMtls": false,
                "authPass": "",
                "authUser": "",
                "bodyType": "",
                "serializeUrl": false,
                "shareCookies": false,
                "parseResponse": false,
                "followRedirect": true,
                "useQuerystring": false,
                "followAllRedirects": false,
                "rejectUnauthorized": true
            },
            "metadata": {
                "designer": {
                    "x": 0,
                    "y": 0,
                    "name": "Get Website with Legal Posts"
                },
                "restore": {
                    "expect": {
                        "qs": {
                            "mode": "chose"
                        },
                        "method": {
                            "mode": "chose",
                            "label": "GET"
                        },
                        "headers": {
                            "mode": "chose"
                        },
                        "bodyType": {
                            "label": "Empty"
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "handleErrors",
                        "type": "boolean",
                        "label": "Evaluate all states as errors (except for 2xx and 3xx )"
                    },
                    {
                        "name": "useNewZLibDeCompress",
                        "type": "hidden"
                    }
                ],
                "expect": [
                    {
                        "name": "url",
                        "type": "url",
                        "label": "URL",
                        "required": true
                    },
                    {
                        "name": "serializeUrl",
                        "type": "boolean",
                        "label": "Serialize URL",
                        "required": true
                    },
                    {
                        "name": "method",
                        "type": "select",
                        "label": "Method",
                        "required": true,
                        "validate": {
                            "enum": [
                                "get",
                                "head",
                                "post",
                                "put",
                                "patch",
                                "delete",
                                "options"
                            ]
                        }
                    },
                    {
                        "name": "headers",
                        "spec": [
                            {
                                "name": "name",
                                "type": "text",
                                "label": "Name",
                                "required": true
                            },
                            {
                                "name": "value",
                                "type": "text",
                                "label": "Value"
                            }
                        ],
                        "type": "array",
                        "label": "Headers"
                    },
                    {
                        "name": "qs",
                        "spec": [
                            {
                                "name": "name",
                                "type": "text",
                                "label": "Name",
                                "required": true
                            },
                            {
                                "name": "value",
                                "type": "text",
                                "label": "Value"
                            }
                        ],
                        "type": "array",
                        "label": "Query String"
                    },
                    {
                        "name": "bodyType",
                        "type": "select",
                        "label": "Body type",
                        "validate": {
                            "enum": [
                                "raw",
                                "x_www_form_urlencoded",
                                "multipart_form_data"
                            ]
                        }
                    },
                    {
                        "name": "parseResponse",
                        "type": "boolean",
                        "label": "Parse response",
                        "required": true
                    },
                    {
                        "name": "authUser",
                        "type": "text",
                        "label": "User name"
                    },
                    {
                        "name": "authPass",
                        "type": "password",
                        "label": "Password"
                    },
                    {
                        "name": "timeout",
                        "type": "uinteger",
                        "label": "Timeout",
                        "validate": {
                            "max": 300,
                            "min": 1
                        }
                    },
                    {
                        "name": "shareCookies",
                        "type": "boolean",
                        "label": "Share cookies with other HTTP modules",
                        "required": true
                    },
                    {
                        "name": "ca",
                        "type": "cert",
                        "label": "Self-signed certificate"
                    },
                    {
                        "name": "rejectUnauthorized",
                        "type": "boolean",
                        "label": "Reject connections that are using unverified (self-signed) certificates",
                        "required": true
                    },
                    {
                        "name": "followRedirect",
                        "type": "boolean",
                        "label": "Follow redirect",
                        "required": true
                    },
                    {
                        "name": "useQuerystring",
                        "type": "boolean",
                        "label": "Disable serialization of multiple same query string keys as arrays",
                        "required": true
                    },
                    {
                        "name": "gzip",
                        "type": "boolean",
                        "label": "Request compressed content",
                        "required": true
                    },
                    {
                        "name": "useMtls",
                        "type": "boolean",
                        "label": "Use Mutual TLS",
                        "required": true
                    },
                    {
                        "name": "followAllRedirects",
                        "type": "boolean",
                        "label": "Follow all redirect",
                        "required": true
                    }
                ]
            }
        },
        {
            "id": 2,
            "module": "regexp:HTMLToText",
            "version": 1,
            "parameters": {},
            "mapper": {
                "newline": "lf",
                "uppercaseHeadings": true
            },
            "metadata": {
                "designer": {
                    "x": 300,
                    "y": 0,
                    "name": "Extract Website"
                },
                "restore": {
                    "expect": {
                        "newline": {
                            "label": "LF (\n) - Unix/Mac OS X"
                        }
                    }
                },
                "expect": [
                    {
                        "name": "html",
                        "type": "text",
                        "label": "HTML"
                    },
                    {
                        "name": "newline",
                        "type": "select",
                        "label": "Line break",
                        "required": true,
                        "validate": {
                            "enum": [
                                "lf",
                                "crlf",
                                "cr"
                            ]
                        }
                    },
                    {
                        "name": "uppercaseHeadings",
                        "type": "boolean",
                        "label": "Uppercase headings",
                        "required": true
                    }
                ]
            }
        },
        {
            "id": 3,
            "module": "anthropic-claude:createAMessage",
            "version": 1,
            "parameters": {},
            "mapper": {
                "model": "claude-3-5-sonnet-20240620",
                "messages": [
                    {
                        "role": "user",
                        "content": [
                            {
                                "text": "Here's a text prompt to extract the latest blog post titles and excerpts from the given HTML as a JSON object:nnExtract the following information from the provided HTML:nnFind all the article headlines within h2 tags that have a linkFor each headline:Extract the text of the headline as the "Title" fieldExtract the text content of the immediately following paragraph tag as the "Excerpt" field nnCompile the extracted data into a JSON object with keys "Title" and "Excerpt" for each articleExample output:nn[{n"Title": "NH, KY JOIN PATCHWORK OF STATES' DATA PRIVACY LAWS 'SQUARELY IN THE MIDDLE'",n"Excerpt": "New Hampshire and Kentucky are the latest states to pass comprehensive data privacy laws, bringing the number of states with privacy statutes to 15."n},n{n"Title": "IAPP DAY 2: STATE REGULATORS DISCUSS THEIR DATA PRIVACY ENFORCEMENT STRATEGIES",n"Excerpt": "During the second day of the IAPP's Global Privacy Summit, enforcers of state data privacy laws offered insights on the data collection practices on their offices' radar—and what's ahead for enforcement actions in Colorado, California, Oregon and Connecticut."n}]nnHTML:n{{2.text}}nnJUST RESPOND JSON DO NOT ADD ANY TEXT BEFORE - THE OUTPUT MUST BE PURE JSON ",
                                "type": "text"
                            }
                        ]
                    }
                ],
                "metadata": {},
                "max_tokens": "4000",
                "temperature": "1"
            },
            "metadata": {
                "designer": {
                    "x": 600,
                    "y": 0,
                    "name": "Use AI to extract Content"
                },
                "restore": {
                    "expect": {
                        "model": {
                            "mode": "edit"
                        },
                        "messages": {
                            "mode": "chose",
                            "items": [
                                {
                                    "role": {
                                        "mode": "chose",
                                        "label": "User"
                                    },
                                    "content": {
                                        "mode": "chose",
                                        "items": [
                                            {
                                                "type": {
                                                    "mode": "chose",
                                                    "label": "Text"
                                                }
                                            }
                                        ]
                                    }
                                }
                            ]
                        },
                        "stop_sequences": {
                            "mode": "chose"
                        }
                    },
                    "parameters": {
                        "__IMTCONN__": {
                            "data": {
                                "scoped": "true",
                                "connection": "anthropic-claude"
                            },
                            "label": "My Anthropic Claude connection"
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "__IMTCONN__",
                        "type": "account:anthropic-claude",
                        "label": "Connection"
                    }
                ],
                "expect": [
                    {
                        "name": "model",
                        "type": "select",
                        "label": "Model",
                        "required": true
                    },
                    {
                        "name": "max_tokens",
                        "type": "uinteger",
                        "label": "Max Tokens",
                        "required": true
                    },
                    {
                        "name": "messages",
                        "spec": {
                            "name": "value",
                            "spec": [
                                {
                                    "name": "role",
                                    "type": "select",
                                    "label": "Role",
                                    "options": [
                                        {
                                            "label": "User",
                                            "value": "user",
                                            "nested": [
                                                {
                                                    "name": "content",
                                                    "spec": {
                                                        "spec": [
                                                            {
                                                                "help": "You can send image content blocks starting with Claude 3 models.",
                                                                "name": "type",
                                                                "type": "select",
                                                                "label": "Type",
                                                                "options": [
                                                                    {
                                                                        "label": "Text",
                                                                        "value": "text",
                                                                        "nested": [
                                                                            {
                                                                                "help": "Content of the message on behalf of the selected **Role** .",
                                                                                "name": "text",
                                                                                "type": "text",
                                                                                "label": "Text",
                                                                                "required": true
                                                                            }
                                                                        ]
                                                                    },
                                                                    {
                                                                        "label": "Image",
                                                                        "value": "image",
                                                                        "nested": [
                                                                            {
                                                                                "name": "source",
                                                                                "spec": [
                                                                                    {
                                                                                        "help": "File name, including the extension, for example, `image.jpg`.",
                                                                                        "name": "filename",
                                                                                        "type": "filename",
                                                                                        "label": "Filename",
                                                                                        "required": true,
                                                                                        "semantic": "file:name",
                                                                                        "extension": [
                                                                                            "jpeg",
                                                                                            "jpg",
                                                                                            "png",
                                                                                            "gif",
                                                                                            "webp"
                                                                                        ]
                                                                                    },
                                                                                    {
                                                                                        "help": "Binary data of the image. For example, you can retrieve the binary data of your image using the **HTTP: Get a file** module.",
                                                                                        "name": "data",
                                                                                        "type": "buffer",
                                                                                        "label": "Data",
                                                                                        "required": true,
                                                                                        "semantic": "file:data"
                                                                                    }
                                                                                ],
                                                                                "type": "collection",
                                                                                "label": "Source",
                                                                                "required": true
                                                                            }
                                                                        ]
                                                                    }
                                                                ],
                                                                "required": true
                                                            }
                                                        ],
                                                        "type": "collection",
                                                        "label": "Content"
                                                    },
                                                    "type": "array",
                                                    "label": "Content",
                                                    "labels": {
                                                        "add": "Add content"
                                                    },
                                                    "required": true
                                                }
                                            ]
                                        },
                                        {
                                            "label": "Assistant",
                                            "value": "assistant",
                                            "nested": [
                                                {
                                                    "help": "If the request ends with an assistant turn, then the response content will continue directly from that last turn.",
                                                    "name": "content",
                                                    "type": "text",
                                                    "label": "Content",
                                                    "required": true
                                                }
                                            ]
                                        }
                                    ],
                                    "required": true
                                }
                            ],
                            "type": "collection",
                            "label": "Message"
                        },
                        "type": "array",
                        "label": "Messages",
                        "required": true
                    },
                    {
                        "name": "system",
                        "type": "text",
                        "label": "System Prompt"
                    },
                    {
                        "name": "metadata",
                        "spec": [
                            {
                                "name": "user_id",
                                "type": "text",
                                "label": "User ID"
                            }
                        ],
                        "type": "collection",
                        "label": "Metadata"
                    },
                    {
                        "name": "stop_sequences",
                        "spec": {
                            "name": "value",
                            "type": "text",
                            "label": "Stop Sequence"
                        },
                        "type": "array",
                        "label": "Stop Sequences"
                    },
                    {
                        "name": "temperature",
                        "type": "number",
                        "label": "Temperature",
                        "validate": {
                            "max": 1,
                            "min": 0
                        }
                    },
                    {
                        "name": "top_p",
                        "type": "number",
                        "label": "Top P",
                        "validate": {
                            "max": 1
                        }
                    },
                    {
                        "name": "top_k",
                        "type": "uinteger",
                        "label": "Top K"
                    }
                ]
            }
        },
        {
            "id": 4,
            "module": "json:ParseJSON",
            "version": 1,
            "parameters": {},
            "mapper": {},
            "metadata": {
                "designer": {
                    "x": 900,
                    "y": 0,
                    "name": "Restructure to Structured Data"
                },
                "restore": {
                    "parameters": {
                        "type": {
                            "label": "Choose a data structure"
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "type",
                        "type": "udt",
                        "label": "Data structure"
                    }
                ],
                "expect": [
                    {
                        "name": "json",
                        "type": "text",
                        "label": "JSON string",
                        "required": true
                    }
                ]
            }
        },
        {
            "id": 5,
            "module": "google-sheets:addRow",
            "version": 2,
            "parameters": {},
            "mapper": {
                "mode": "fromAll",
                "values": {
                    "0": "{{4.Title}}",
                    "1": "{{4.Excerpt}}"
                },
                "sheetId": "Legal News",
                "spreadsheetId": "1G_C-u7oJ65U3ICHdPr8CUG0oGRu-8ineEUNzHFDKS4U",
                "includesHeaders": true,
                "insertDataOption": "INSERT_ROWS",
                "valueInputOption": "USER_ENTERED",
                "insertUnformatted": false
            },
            "metadata": {
                "designer": {
                    "x": 1200,
                    "y": 0,
                    "name": "Save Data"
                },
                "restore": {
                    "expect": {
                        "mode": {
                            "label": "Select from all"
                        },
                        "sheetId": {
                            "mode": "chose",
                            "label": "Legal News"
                        },
                        "includesHeaders": {
                            "label": "Yes",
                            "nested": [
                                {
                                    "name": "values",
                                    "spec": [
                                        {
                                            "name": "0",
                                            "type": "text",
                                            "label": "Title (A)"
                                        },
                                        {
                                            "name": "1",
                                            "type": "text",
                                            "label": "(B)"
                                        },
                                        {
                                            "name": "2",
                                            "type": "text",
                                            "label": "(C)"
                                        },
                                        {
                                            "name": "3",
                                            "type": "text",
                                            "label": "(D)"
                                        },
                                        {
                                            "name": "4",
                                            "type": "text",
                                            "label": "(E)"
                                        },
                                        {
                                            "name": "5",
                                            "type": "text",
                                            "label": "(F)"
                                        },
                                        {
                                            "name": "6",
                                            "type": "text",
                                            "label": "(G)"
                                        },
                                        {
                                            "name": "7",
                                            "type": "text",
                                            "label": "(H)"
                                        },
                                        {
                                            "name": "8",
                                            "type": "text",
                                            "label": "(I)"
                                        },
                                        {
                                            "name": "9",
                                            "type": "text",
                                            "label": "(J)"
                                        },
                                        {
                                            "name": "10",
                                            "type": "text",
                                            "label": "(K)"
                                        },
                                        {
                                            "name": "11",
                                            "type": "text",
                                            "label": "(L)"
                                        },
                                        {
                                            "name": "12",
                                            "type": "text",
                                            "label": "(M)"
                                        },
                                        {
                                            "name": "13",
                                            "type": "text",
                                            "label": "(N)"
                                        },
                                        {
                                            "name": "14",
                                            "type": "text",
                                            "label": "(O)"
                                        },
                                        {
                                            "name": "15",
                                            "type": "text",
                                            "label": "(P)"
                                        },
                                        {
                                            "name": "16",
                                            "type": "text",
                                            "label": "(Q)"
                                        },
                                        {
                                            "name": "17",
                                            "type": "text",
                                            "label": "(R)"
                                        },
                                        {
                                            "name": "18",
                                            "type": "text",
                                            "label": "(S)"
                                        },
                                        {
                                            "name": "19",
                                            "type": "text",
                                            "label": "(T)"
                                        },
                                        {
                                            "name": "20",
                                            "type": "text",
                                            "label": "(U)"
                                        },
                                        {
                                            "name": "21",
                                            "type": "text",
                                            "label": "(V)"
                                        },
                                        {
                                            "name": "22",
                                            "type": "text",
                                            "label": "(W)"
                                        },
                                        {
                                            "name": "23",
                                            "type": "text",
                                            "label": "(X)"
                                        },
                                        {
                                            "name": "24",
                                            "type": "text",
                                            "label": "(Y)"
                                        },
                                        {
                                            "name": "25",
                                            "type": "text",
                                            "label": "(Z)"
                                        }
                                    ],
                                    "type": "collection",
                                    "label": "Values"
                                }
                            ]
                        },
                        "insertDataOption": {
                            "mode": "chose",
                            "label": "Insert rows"
                        },
                        "valueInputOption": {
                            "mode": "chose",
                            "label": "User entered"
                        },
                        "insertUnformatted": {
                            "mode": "chose"
                        }
                    },
                    "parameters": {
                        "__IMTCONN__": {
                            "data": {
                                "scoped": "true",
                                "connection": "google"
                            },
                            "label": "My Google connection (v.galanov@make.com)"
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "__IMTCONN__",
                        "type": "account:google",
                        "label": "Connection"
                    }
                ],
                "expect": [
                    {
                        "name": "mode",
                        "type": "select",
                        "label": "Choose a Method",
                        "required": true,
                        "validate": {
                            "enum": [
                                "select",
                                "fromAll",
                                "map"
                            ]
                        }
                    },
                    {
                        "name": "insertUnformatted",
                        "type": "boolean",
                        "label": "Unformatted",
                        "required": true
                    },
                    {
                        "name": "valueInputOption",
                        "type": "select",
                        "label": "Value input option",
                        "validate": {
                            "enum": [
                                "USER_ENTERED",
                                "RAW"
                            ]
                        }
                    },
                    {
                        "name": "insertDataOption",
                        "type": "select",
                        "label": "Insert data option",
                        "validate": {
                            "enum": [
                                "INSERT_ROWS",
                                "OVERWRITE"
                            ]
                        }
                    },
                    {
                        "name": "spreadsheetId",
                        "type": "text",
                        "label": "Spreadsheet ID",
                        "required": true
                    },
                    {
                        "name": "sheetId",
                        "type": "select",
                        "label": "Sheet Name",
                        "required": true
                    },
                    {
                        "name": "includesHeaders",
                        "type": "select",
                        "label": "Table contains headers",
                        "required": true,
                        "validate": {
                            "enum": [
                                true,
                                false
                            ]
                        }
                    },
                    {
                        "name": "values",
                        "spec": [
                            {
                                "name": "0",
                                "type": "text",
                                "label": "Title (A)"
                            },
                            {
                                "name": "1",
                                "type": "text",
                                "label": "(B)"
                            },
                            {
                                "name": "2",
                                "type": "text",
                                "label": "(C)"
                            },
                            {
                                "name": "3",
                                "type": "text",
                                "label": "(D)"
                            },
                            {
                                "name": "4",
                                "type": "text",
                                "label": "(E)"
                            },
                            {
                                "name": "5",
                                "type": "text",
                                "label": "(F)"
                            },
                            {
                                "name": "6",
                                "type": "text",
                                "label": "(G)"
                            },
                            {
                                "name": "7",
                                "type": "text",
                                "label": "(H)"
                            },
                            {
                                "name": "8",
                                "type": "text",
                                "label": "(I)"
                            },
                            {
                                "name": "9",
                                "type": "text",
                                "label": "(J)"
                            },
                            {
                                "name": "10",
                                "type": "text",
                                "label": "(K)"
                            },
                            {
                                "name": "11",
                                "type": "text",
                                "label": "(L)"
                            },
                            {
                                "name": "12",
                                "type": "text",
                                "label": "(M)"
                            },
                            {
                                "name": "13",
                                "type": "text",
                                "label": "(N)"
                            },
                            {
                                "name": "14",
                                "type": "text",
                                "label": "(O)"
                            },
                            {
                                "name": "15",
                                "type": "text",
                                "label": "(P)"
                            },
                            {
                                "name": "16",
                                "type": "text",
                                "label": "(Q)"
                            },
                            {
                                "name": "17",
                                "type": "text",
                                "label": "(R)"
                            },
                            {
                                "name": "18",
                                "type": "text",
                                "label": "(S)"
                            },
                            {
                                "name": "19",
                                "type": "text",
                                "label": "(T)"
                            },
                            {
                                "name": "20",
                                "type": "text",
                                "label": "(U)"
                            },
                            {
                                "name": "21",
                                "type": "text",
                                "label": "(V)"
                            },
                            {
                                "name": "22",
                                "type": "text",
                                "label": "(W)"
                            },
                            {
                                "name": "23",
                                "type": "text",
                                "label": "(X)"
                            },
                            {
                                "name": "24",
                                "type": "text",
                                "label": "(Y)"
                            },
                            {
                                "name": "25",
                                "type": "text",
                                "label": "(Z)"
                            }
                        ],
                        "type": "collection",
                        "label": "Values"
                    }
                ]
            }
        }
    ],
    "metadata": {
        "instant": false,
        "version": 1,
        "scenario": {
            "roundtrips": 1,
            "maxErrors": 3,
            "autoCommit": true,
            "autoCommitTriggerLast": true,
            "sequential": false,
            "slots": null,
            "confidential": false,
            "dataloss": false,
            "dlq": false,
            "freshVariables": false
        },
        "designer": {
            "orphans": []
        },
        "zone": "eu2.make.com",
        "notes": []
    }
}