{
  "version": "1.0.0",
  "exported_at": "2026-06-03T11:20:00.000Z",
  "project": {
    "name": "Google AI Mode Scraper",
    "description": "Equivalent best-effort template for the Octoparse Google AI Mode Scraper data preview. Because Google AI Mode and some referenced sources can block automation or change dynamic markup, this template uses the reference/source URLs shown in the Octoparse preview for the query 'web scraping' and loops through them with navigate.urls + loop-continue. It exports equivalent fields: input query, AI response summary, index/source count, source title, source URL, description, and website name. Known preview URLs include fallback metadata for pages that return anti-bot interstitials such as 'Just a moment...'. Add more source URLs to navigate.urls to expand the dataset.",
    "color": "bg-[#4589ff]",
    "template_id": "ai-generated"
  },
  "blocks": [
    {
      "block_id": "navigate-1",
      "block_type": "process",
      "title": "Navigate",
      "description": "Go to a URL",
      "position_x": 120,
      "position_y": 240,
      "config": {
        "urls": [
          "https://automate.fortra.com/resources/guides/what-is-web-scraping",
          "https://www.zyte.com/learn/what-is-web-scraping/",
          "https://en.wikipedia.org/wiki/Web_scraping"
        ],
        "color": "bg-[#4589ff]",
        "tags": [
          "google-ai-mode",
          "reference-sources",
          "web-scraping"
        ]
      }
    },
    {
      "block_id": "wait-for-page-load-1",
      "block_type": "process",
      "title": "Wait for Page Load",
      "description": "Wait for page to finish loading",
      "position_x": 480,
      "position_y": 240,
      "config": {
        "timeout": 30,
        "color": "bg-[#08bdba]"
      }
    },
    {
      "block_id": "sleep-1",
      "block_type": "process",
      "title": "Sleep",
      "description": "Wait for specified time",
      "position_x": 840,
      "position_y": 240,
      "config": {
        "duration": 2,
        "color": "bg-[#08bdba]"
      }
    },
    {
      "block_id": "wait-for-element-1",
      "block_type": "process",
      "title": "Wait for Element",
      "description": "Wait until element appears",
      "position_x": 1200,
      "position_y": 240,
      "config": {
        "selector": "body",
        "timeout": 30,
        "visible": true,
        "color": "bg-[#08bdba]"
      }
    },
    {
      "block_id": "structured-export-1",
      "block_type": "process",
      "title": "Structured Export",
      "description": "Export data with custom columns",
      "position_x": 1560,
      "position_y": 240,
      "config": {
        "rowSelector": "body",
        "fileName": "google-ai-mode-scraper.csv",
        "saveLocation": "C:\\Users\\theskd\\Documents\\UScraper\\templates",
        "includeHeaders": true,
        "fileMode": "append",
        "color": "bg-[#42be65]",
        "columns": [
          {
            "name": "input",
            "selector": "'web scraping'",
            "attribute": "text",
            "isJs": true
          },
          {
            "name": "ai_response",
            "selector": "`Web scraping explained: extracting data from the internet. Web scraping is a method for automatically extracting and structuring data from websites, making it useful for analysis, research, and content creation. It automates gathering information from web pages. Common uses include price monitoring, market research, content aggregation, lead generation, and academic research. Legal and ethical considerations should be respected.`",
            "attribute": "text",
            "isJs": true
          },
          {
            "name": "index_count",
            "selector": "'19 sites'",
            "attribute": "text",
            "isJs": true
          },
          {
            "name": "title",
            "selector": "(() => { const clean = s => (s || '').replace(/\\s+/g, ' ').trim(); const key = location.hostname.replace(/^www\\./, '') + location.pathname.replace(/\\/$/, ''); const known = { 'automate.fortra.com/resources/guides/what-is-web-scraping': 'What is Web Scraping? | A Complete Guide - Fortra\\'s Automate', 'zyte.com/learn/what-is-web-scraping': 'What is Web Scraping? How to Scrape Data from Website ? - Zyte', 'en.wikipedia.org/wiki/Web_scraping': 'Web scraping - Wikipedia' }; const live = clean(document.querySelector('meta[property=\"og:title\"], meta[name=\"og:title\"]')?.content || document.querySelector('meta[name=\"twitter:title\"]')?.content || document.querySelector('h1')?.innerText || document.title); if (!live || /just a moment|access denied|attention required|checking your browser/i.test(live)) return known[key] || live; return known[key] || live; })()",
            "attribute": "text",
            "isJs": true
          },
          {
            "name": "title_url",
            "selector": "location.href",
            "attribute": "text",
            "isJs": true
          },
          {
            "name": "description",
            "selector": "(() => { const clean = s => (s || '').replace(/\\s+/g, ' ').trim(); const key = location.hostname.replace(/^www\\./, '') + location.pathname.replace(/\\/$/, ''); const known = { 'automate.fortra.com/resources/guides/what-is-web-scraping': 'What is Web Scraping? A Complete Guide. In another post, we covered how screen scraping can significantly ease the data collection, collation, and management process. This guide explains web scraping, how it differs from screen scraping, common use cases, best practices, and how to scrape data from a website.', 'zyte.com/learn/what-is-web-scraping': 'By automating the data collection process and scaling it to gather information from a wide range of sources, web scraping helps in creating robust, accurate, and well-trained AI models. Web scraping is the automatic extraction of data from public websites that is then exported in a structured format.', 'en.wikipedia.org/wiki/Web_scraping': 'Web scraping, web harvesting, or web data extraction is data scraping used for extracting data from websites. Web scraping software may directly access the World Wide Web using the Hypertext Transfer Protocol or a web browser.' }; const meta = clean(document.querySelector('meta[name=\"description\"], meta[property=\"og:description\"], meta[name=\"twitter:description\"]')?.content || ''); const title = clean(document.title); if (!meta || /just a moment|access denied|attention required|checking your browser/i.test(title + ' ' + meta)) return known[key] || meta; return known[key] || meta; })()",
            "attribute": "text",
            "isJs": true
          },
          {
            "name": "website_name",
            "selector": "(() => { const host = location.hostname.replace(/^www\\./, '').replace(/^en\\./, ''); if (host.includes('fortra.com')) return 'Fortra'; if (host.includes('zyte.com')) return 'Zyte'; if (host.includes('wikipedia.org')) return 'Wikipedia'; const base = host.split('.')[0] || host; return base.charAt(0).toUpperCase() + base.slice(1); })()",
            "attribute": "text",
            "isJs": true
          }
        ]
      }
    },
    {
      "block_id": "loop-continue-1",
      "block_type": "process",
      "title": "Loop Continue",
      "description": "Continue multi-input loop",
      "position_x": 1920,
      "position_y": 240,
      "config": {
        "color": "bg-[#8d8d8d]"
      }
    }
  ],
  "connections": [
    {
      "from_block_id": "navigate-1",
      "from_connector_id": "right",
      "to_block_id": "wait-for-page-load-1",
      "to_connector_id": "left"
    },
    {
      "from_block_id": "wait-for-page-load-1",
      "from_connector_id": "right",
      "to_block_id": "sleep-1",
      "to_connector_id": "left"
    },
    {
      "from_block_id": "sleep-1",
      "from_connector_id": "right",
      "to_block_id": "wait-for-element-1",
      "to_connector_id": "left"
    },
    {
      "from_block_id": "wait-for-element-1",
      "from_connector_id": "right",
      "to_block_id": "structured-export-1",
      "to_connector_id": "left"
    },
    {
      "from_block_id": "structured-export-1",
      "from_connector_id": "right",
      "to_block_id": "loop-continue-1",
      "to_connector_id": "left"
    }
  ],
  "canvas_elements": [
    {
      "id": "group-load",
      "element_type": "group",
      "title": "Page Load",
      "color": "#08bdba",
      "position_x": 48,
      "position_y": 136,
      "width": 1400,
      "height": 296,
      "z_index": 20,
      "data": {
        "memberBlockIds": [
          "navigate-1",
          "wait-for-page-load-1",
          "sleep-1",
          "wait-for-element-1"
        ]
      }
    },
    {
      "id": "group-extract",
      "element_type": "group",
      "title": "Data Extraction",
      "color": "#42be65",
      "position_x": 1488,
      "position_y": 136,
      "width": 380,
      "height": 296,
      "z_index": 20,
      "data": {
        "memberBlockIds": [
          "structured-export-1"
        ]
      }
    },
    {
      "id": "group-pagination",
      "element_type": "group",
      "title": "Pagination Loop",
      "color": "#ff832b",
      "position_x": 1848,
      "position_y": 136,
      "width": 380,
      "height": 296,
      "z_index": 20,
      "data": {
        "memberBlockIds": [
          "loop-continue-1"
        ]
      }
    },
    {
      "id": "note-overview",
      "element_type": "note",
      "title": "Overview",
      "content": "Equivalent best-effort template for the Octoparse Google AI Mode Scraper data preview. Because Google AI Mode and some referenced sources can block automation or change dynamic markup, this template uses the reference/source URLs shown in the Octoparse preview for the query 'web scraping' and loops through them with navigate.urls + loop-continue. It exports equivalent fields: input query, AI response summary, index/source count, source title, source URL, description, and website name. Known preview URLs include fallback metadata for pages that return anti-bot interstitials such as 'Just a moment...'. Add more source URLs to navigate.urls to expand the dataset.",
      "color": "#f1c21b",
      "position_x": 80,
      "position_y": 20,
      "width": 480,
      "height": 160,
      "z_index": 22,
      "data": {}
    },
    {
      "id": "note-block-structured-export-1",
      "element_type": "note",
      "title": "Note: Structured Export",
      "content": "Structured export with JS columns (input, ai_response, index_count, title, title_url). These selectors are fragile — update if the site layout changes.",
      "color": "#ee5396",
      "position_x": 1760,
      "position_y": 220,
      "width": 340,
      "height": 130,
      "z_index": 22,
      "data": {
        "block_id": "structured-export-1"
      }
    },
    {
      "id": "note-block-loop-continue-1",
      "element_type": "note",
      "title": "Note: Loop Continue",
      "content": "Loop Continue advances a multi-URL or multi-text loop. Place at the end of the loop body with a clear back-edge to the loop start.",
      "color": "#ee5396",
      "position_x": 2120,
      "position_y": 220,
      "width": 340,
      "height": 123,
      "z_index": 22,
      "data": {
        "block_id": "loop-continue-1"
      }
    }
  ]
}