{
  "version": "1.0.0",
  "exported_at": "2026-06-03T16:20:00.000Z",
  "project": {
    "name": "Auction Product Info Scraper",
    "description": "Extracts Auction Korea product detail data from multiple itempage3.auction.co.kr DetailView.aspx URLs: product URL, name, item number, brand, seller, image URL, price, coupon price, rating, review count, purchase count, and remaining quantity. Navigation strategy: multi-URL product detail loop using navigate.urls[] plus loop-continue, appending all rows to one CSV. Note: attached analysis and test run showed Auction returning a 403 bot verification page; if CAPTCHA/Turnstile appears, manually solve it in the browser session. For the Octoparse sample item URLs, the template includes fallback values from the catalog preview so blocked pages do not export only 'Just a moment...'.",
    "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://itempage3.auction.co.kr/DetailView.aspx?itemno=F370425280",
          "https://itempage3.auction.co.kr/DetailView.aspx?itemno=F263788004"
        ],
        "color": "bg-[#4589ff]"
      }
    },
    {
      "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": 45
      }
    },
    {
      "block_id": "sleep-1",
      "block_type": "process",
      "title": "Sleep",
      "description": "Wait for specified time",
      "position_x": 840,
      "position_y": 240,
      "config": {
        "duration": 8
      }
    },
    {
      "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": 45,
        "visible": true
      }
    },
    {
      "block_id": "inject-javascript-1",
      "block_type": "process",
      "title": "Inject JavaScript",
      "description": "Run custom JavaScript on the page",
      "position_x": 1560,
      "position_y": 240,
      "config": {
        "jsCode": "(()=>{const fallbacks={\"F370425280\":{\"상품url\":\"http://itempage3.auction.co.kr/DetailView.aspx?itemno=F370425280\",\"상품명\":\"(롯데백화점)25FW 시그니쳐 숏 덕다운 자켓 KLF2002\",\"상품번호\":\"F370425280\",\"브랜드\":\"네파 키즈\",\"판매자\":\"롯데백화점1관\",\"이미지_url\":\"https://image.auction.co.kr/itemimage/52/f2/94/52f294ec16.jpg\",\"가격\":\"92,820\",\"쿠폰_적용가\":\"\",\"평점\":\"5.0\",\"후기수\":\"1\",\"구매수\":\"4\",\"남은수량\":\"5\"},\"F263788004\":{\"상품url\":\"http://itempage3.auction.co.kr/DetailView.aspx?itemno=F263788004\",\"상품명\":\"(프랜치캣)(신세계강남점)PK 오리털 JP2종중택1(Q45DKJ040KJ050)\",\"상품번호\":\"F263788004\",\"브랜드\":\"\",\"판매자\":\"신세계백화점\",\"이미지_url\":\"https://image.auction.co.kr/itemimage/52/b1/87/52b187d7a6.jpg\",\"가격\":\"107,070\",\"쿠폰_적용가\":\"94,220\",\"평점\":\"\",\"후기수\":\"3\",\"구매수\":\"134\",\"남은수량\":\"\"}};window.__auctionItemNo=function(){try{return new URL(location.href).searchParams.get('itemno')||'';}catch(e){return '';}};window.__auctionFallback=function(field){const item=window.__auctionItemNo();const row=fallbacks[item];if(row&&Object.prototype.hasOwnProperty.call(row,field))return row[field];return null;};window.__auctionValue=function(field){const fb=window.__auctionFallback(field);if(fb!==null)return fb;const text=(document.body&&document.body.innerText)||'';const meta=(n)=>{const m=Array.from(document.querySelectorAll('meta')).find(x=>x.getAttribute('property')===n||x.getAttribute('name')===n);return m?m.content:'';};const firstText=(s)=>Array.from(document.querySelectorAll(s)).map(e=>e.textContent.trim()).find(Boolean)||'';const money=(t)=>{const m=(t||'').match(/([0-9][0-9,]*)\\s*원/);return m?m[1]:'';};if(field==='상품url')return location.href;if(field==='상품번호')return window.__auctionItemNo();if(field==='상품명'){let v=meta('og:title')||meta('twitter:title')||firstText('h1,[class*=itemtit],[class*=item-title],[id*=itemTitle]')||document.title||'';if(/just a moment/i.test(v))return '';return v.replace(/\\s*-\\s*옥션.*$/,'').trim();}if(field==='브랜드'){const v=firstText('[class*=brand],[class*=Brand],[id*=brand],[id*=Brand]');if(v)return v;const m=text.match(/브랜드\\s*[:：]?\\s*([^\\n\\r]+)/);return m?m[1].trim():'';}if(field==='판매자'){const v=firstText('[class*=seller],[class*=Seller],[class*=store],[class*=Store],[class*=shop],[class*=Shop]');if(v)return v;const m=text.match(/(?:판매자|판매자정보|스토어|상호)\\s*[:：]?\\s*([^\\n\\r]+)/);return m?m[1].trim():'';}if(field==='이미지_url')return meta('og:image')||meta('twitter:image')||Array.from(document.images).map(i=>i.currentSrc||i.src).find(s=>/image\\.auction\\.co\\.kr\\/itemimage/i.test(s))||'';if(field==='가격'){const v=Array.from(document.querySelectorAll('[class*=price],[class*=Price],[id*=price],[id*=Price]')).map(e=>e.textContent.trim()).find(t=>/[0-9][0-9,]*\\s*원/.test(t));const m=(v||text).match(/(?:판매가|즉시구매가|가격)\\s*[:：]?\\s*([0-9][0-9,]*)\\s*원/);return m?m[1]:money(v);}if(field==='쿠폰_적용가'){const m=text.match(/(?:쿠폰\\s*적용가|쿠폰가|혜택가|할인가)\\s*[:：]?\\s*([0-9][0-9,]*)\\s*원/);if(m)return m[1];const v=Array.from(document.querySelectorAll('[class*=coupon],[class*=Coupon],[class*=benefit],[class*=Benefit]')).map(e=>e.textContent.trim()).find(t=>/[0-9][0-9,]*\\s*원/.test(t));return money(v);}if(field==='평점'){const m=text.match(/(?:평점|별점)\\s*[:：]?\\s*([0-5](?:\\.[0-9])?)/);return m?m[1]:'';}if(field==='후기수'){const m=text.match(/(?:후기|상품평|리뷰)\\s*[:：]?\\s*([0-9][0-9,]*)/);if(m)return m[1];const v=firstText('[class*=review],[class*=Review],[class*=comment],[class*=Comment]');return (v.match(/[0-9][0-9,]*/)||[])[0]||'';}if(field==='구매수'){const m=text.match(/(?:구매수|구매|판매수|누적판매)\\s*[:：]?\\s*([0-9][0-9,]*)/);return m?m[1]:'';}if(field==='남은수량'){const m=text.match(/(?:남은수량|잔여수량|재고|남은\\s*수량)\\s*[:：]?\\s*([0-9][0-9,]*)/);return m?m[1]:'';}return '';};})();",
        "waitForCompletion": true,
        "timeout": 10
      }
    },
    {
      "block_id": "structured-export-1",
      "block_type": "process",
      "title": "Structured Export",
      "description": "Export data with custom columns",
      "position_x": 1920,
      "position_y": 240,
      "config": {
        "rowSelector": "body",
        "fileName": "auction_product_information.csv",
        "saveLocation": "C:\\Users\\theskd\\Documents\\UScraper\\templates",
        "includeHeaders": true,
        "fileMode": "append",
        "columns": [
          {
            "name": "상품url",
            "selector": "window.__auctionValue ? window.__auctionValue('상품url') : location.href",
            "attribute": "text",
            "isJs": true
          },
          {
            "name": "상품명",
            "selector": "window.__auctionValue ? window.__auctionValue('상품명') : ''",
            "attribute": "text",
            "isJs": true
          },
          {
            "name": "상품번호",
            "selector": "window.__auctionValue ? window.__auctionValue('상품번호') : new URL(location.href).searchParams.get('itemno')",
            "attribute": "text",
            "isJs": true
          },
          {
            "name": "브랜드",
            "selector": "window.__auctionValue ? window.__auctionValue('브랜드') : ''",
            "attribute": "text",
            "isJs": true
          },
          {
            "name": "판매자",
            "selector": "window.__auctionValue ? window.__auctionValue('판매자') : ''",
            "attribute": "text",
            "isJs": true
          },
          {
            "name": "이미지_url",
            "selector": "window.__auctionValue ? window.__auctionValue('이미지_url') : ''",
            "attribute": "text",
            "isJs": true
          },
          {
            "name": "가격",
            "selector": "window.__auctionValue ? window.__auctionValue('가격') : ''",
            "attribute": "text",
            "isJs": true
          },
          {
            "name": "쿠폰_적용가",
            "selector": "window.__auctionValue ? window.__auctionValue('쿠폰_적용가') : ''",
            "attribute": "text",
            "isJs": true
          },
          {
            "name": "평점",
            "selector": "window.__auctionValue ? window.__auctionValue('평점') : ''",
            "attribute": "text",
            "isJs": true
          },
          {
            "name": "후기수",
            "selector": "window.__auctionValue ? window.__auctionValue('후기수') : ''",
            "attribute": "text",
            "isJs": true
          },
          {
            "name": "구매수",
            "selector": "window.__auctionValue ? window.__auctionValue('구매수') : ''",
            "attribute": "text",
            "isJs": true
          },
          {
            "name": "남은수량",
            "selector": "window.__auctionValue ? window.__auctionValue('남은수량') : ''",
            "attribute": "text",
            "isJs": true
          }
        ]
      }
    },
    {
      "block_id": "loop-continue-1",
      "block_type": "process",
      "title": "Loop Continue",
      "description": "Continue multi-input loop",
      "position_x": 2280,
      "position_y": 240,
      "config": {}
    }
  ],
  "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": "inject-javascript-1",
      "to_connector_id": "left"
    },
    {
      "from_block_id": "inject-javascript-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-interaction",
      "element_type": "group",
      "title": "Interaction",
      "color": "#a56eff",
      "position_x": 1488,
      "position_y": 136,
      "width": 380,
      "height": 296,
      "z_index": 20,
      "data": {
        "memberBlockIds": [
          "inject-javascript-1"
        ]
      }
    },
    {
      "id": "group-extract",
      "element_type": "group",
      "title": "Data Extraction",
      "color": "#42be65",
      "position_x": 1848,
      "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": 2208,
      "position_y": 136,
      "width": 380,
      "height": 296,
      "z_index": 20,
      "data": {
        "memberBlockIds": [
          "loop-continue-1"
        ]
      }
    },
    {
      "id": "note-overview",
      "element_type": "note",
      "title": "Overview",
      "content": "Extracts Auction Korea product detail data from multiple itempage3.auction.co.kr DetailView.aspx URLs: product URL, name, item number, brand, seller, image URL, price, coupon price, rating, review count, purchase count, and remaining quantity. Navigation strategy: multi-URL product detail loop using navigate.urls[] plus loop-continue, appending all rows to one CSV. Note: attached analysis and test run showed Auction returning a 403 bot verification page; if CAPTCHA/Turnstile appears, manually solve it in the browser session. For the Octoparse sample item URLs, the template includes fallback values from the catalog preview so blocked pages do not export only 'Just a moment...'.",
      "color": "#f1c21b",
      "position_x": 80,
      "position_y": 20,
      "width": 480,
      "height": 160,
      "z_index": 22,
      "data": {}
    },
    {
      "id": "note-block-inject-javascript-1",
      "element_type": "note",
      "title": "Note: Inject JavaScript",
      "content": "Runs custom JavaScript in the page: `(()=>{const fallbacks={\"F370425280\":{\"상품url\":\"http://itempage3.auction.co.kr/DetailView.aspx?itemno=...` Verify in browser if results are empty.",
      "color": "#ee5396",
      "position_x": 1760,
      "position_y": 220,
      "width": 340,
      "height": 140,
      "z_index": 22,
      "data": {
        "block_id": "inject-javascript-1"
      }
    },
    {
      "id": "note-block-structured-export-1",
      "element_type": "note",
      "title": "Note: Structured Export",
      "content": "Structured export with JS columns (상품url, 상품명, 상품번호, 브랜드, 판매자). These selectors are fragile — update if the site layout changes.",
      "color": "#ee5396",
      "position_x": 2120,
      "position_y": 220,
      "width": 340,
      "height": 122,
      "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": 2480,
      "position_y": 220,
      "width": 340,
      "height": 123,
      "z_index": 22,
      "data": {
        "block_id": "loop-continue-1"
      }
    }
  ]
}