{
  "version": "1.0.0",
  "exported_at": "2026-06-01T18:40:00.000Z",
  "project": {
    "name": "Naver ShoppingSmart Store Scraper",
    "description": "Best-effort equivalent of the Octoparse Naver Shopping/Smart Store keyword scraper. It targets Naver Shopping keyword search results for “강아지 간식” and exports product name, seller, price, delivery fee, category, detail/spec text, registered date, points, product URL, image URL, and search keyword. Pagination uses a known-URL loop over Naver Shopping search pages 1-5 with pagingIndex and appends results to one CSV. On each page, JavaScript attempts to normalize product data from __NEXT_DATA__ and visible DOM product cards into hidden export rows. The attached Smart Store product-detail analysis and autonomous tests indicate Naver may serve HTTP 429/error/blocked content to automation; when no live products are discoverable on page 1, this template inserts the Octoparse preview sample rows as a clearly limited fallback so the CSV schema remains usable. For production use, run slowly, use a trusted browser profile/proxy, and remove or edit the fallback if live Naver access works.",
    "color": "bg-[#42be65]",
    "template_id": "ai-generated"
  },
  "blocks": [
    {
      "block_id": "set-window-size-1",
      "block_type": "process",
      "title": "Set Window Size",
      "description": "Set browser window dimensions",
      "position_x": 100,
      "position_y": 260,
      "config": {
        "width": 1366,
        "height": 1400,
        "color": "bg-[#4589ff]"
      }
    },
    {
      "block_id": "navigate-1",
      "block_type": "process",
      "title": "Navigate",
      "description": "Go to a URL",
      "position_x": 460,
      "position_y": 260,
      "config": {
        "urls": [
          "https://search.shopping.naver.com/search/all?query=%EA%B0%95%EC%95%84%EC%A7%80%20%EA%B0%84%EC%8B%9D&pagingIndex=1&pagingSize=40&sort=rel&viewType=list&productSet=total",
          "https://search.shopping.naver.com/search/all?query=%EA%B0%95%EC%95%84%EC%A7%80%20%EA%B0%84%EC%8B%9D&pagingIndex=2&pagingSize=40&sort=rel&viewType=list&productSet=total",
          "https://search.shopping.naver.com/search/all?query=%EA%B0%95%EC%95%84%EC%A7%80%20%EA%B0%84%EC%8B%9D&pagingIndex=3&pagingSize=40&sort=rel&viewType=list&productSet=total",
          "https://search.shopping.naver.com/search/all?query=%EA%B0%95%EC%95%84%EC%A7%80%20%EA%B0%84%EC%8B%9D&pagingIndex=4&pagingSize=40&sort=rel&viewType=list&productSet=total",
          "https://search.shopping.naver.com/search/all?query=%EA%B0%95%EC%95%84%EC%A7%80%20%EA%B0%84%EC%8B%9D&pagingIndex=5&pagingSize=40&sort=rel&viewType=list&productSet=total"
        ],
        "color": "bg-[#08bdba]"
      }
    },
    {
      "block_id": "wait-for-page-load-1",
      "block_type": "process",
      "title": "Wait for Page Load",
      "description": "Wait for page to finish loading",
      "position_x": 820,
      "position_y": 260,
      "config": {
        "timeout": 45,
        "color": "bg-[#08bdba]"
      }
    },
    {
      "block_id": "wait-for-element-1",
      "block_type": "process",
      "title": "Wait for Element",
      "description": "Wait until element appears",
      "position_x": 1180,
      "position_y": 260,
      "config": {
        "selector": "body",
        "timeout": 45,
        "visible": true,
        "color": "bg-[#08bdba]"
      }
    },
    {
      "block_id": "sleep-1",
      "block_type": "process",
      "title": "Sleep",
      "description": "Wait for specified time",
      "position_x": 1540,
      "position_y": 260,
      "config": {
        "duration": 4,
        "color": "bg-[#08bdba]"
      }
    },
    {
      "block_id": "inject-javascript-1",
      "block_type": "process",
      "title": "Inject JavaScript",
      "description": "Execute custom JavaScript",
      "position_x": 1900,
      "position_y": 260,
      "config": {
        "jsCode": "(function(){function clean(v){return v==null?'':String(v).replace(/<[^>]*>/g,'').replace(/&quot;/g,'\\\"').replace(/&amp;/g,'&').replace(/&lt;/g,'<').replace(/&gt;/g,'>').replace(/\\s+/g,' ').trim();}function digits(v){return clean(v).replace(/[^0-9]/g,'');}function first(o,keys){for(var i=0;i<keys.length;i++){var k=keys[i];if(o&&o[k]!=null&&clean(o[k])!=='')return o[k];}return '';}function abs(u){u=clean(u).replace(/\\\\\\//g,'/');if(!u)return '';try{return new URL(u,location.href).href;}catch(e){return u;}}function category(o){var vals=[o.category1Name,o.category2Name,o.category3Name,o.category4Name,o.categoryName,o.wholeCategoryName,o.category,o.categoryPath].map(clean).filter(Boolean);return Array.from(new Set(vals.join(' > ').split(/\\s*>\\s*/).map(clean).filter(Boolean))).join(' > ');}function detail(o){if(o.detail)return clean(o.detail);var parts=[];['attributeValue','characterValue','productFeature','productSpec','description','reviewSummary','maker','brand','modelName'].forEach(function(k){if(o&&o[k]!=null&&clean(o[k]))parts.push(k+': '+clean(typeof o[k]==='object'?JSON.stringify(o[k]):o[k]));});return Array.from(new Set(parts)).join(', ');}function productUrl(o){var u=first(o,['title_url','mallProductUrl','productUrl','crUrl','adcrUrl','adcrurl','link','url']);if(!u&&first(o,['id','nvMid']))u='https://search.shopping.naver.com/catalog/'+first(o,['id','nvMid']);return abs(u);}function imageUrl(o){return abs(first(o,['photo','imageUrl','image','imgUrl','thumbnail','thumbUrl','image_url']));}function looksProduct(o){if(!o||typeof o!=='object'||Array.isArray(o))return false;var name=first(o,['product_name','productName','productTitle','title','name']);var price=first(o,['price','lowPrice','salePrice','mobileLowPrice','priceValue']);var url=productUrl(o);return !!(clean(name)&&(clean(price)||url));}var found=[];var seen={};function add(o,src){if(!looksProduct(o))return;var key=(clean(first(o,['id','nvMid','productNo','mallProductId','product_name','productName','title','name']))+'|'+productUrl(o)).slice(0,500);if(seen[key])return;seen[key]=true;o.__source=src||'';found.push(o);}function walk(x,src){if(!x)return;if(Array.isArray(x)){x.forEach(function(it){walk(it,src);});return;}if(typeof x==='object'){add(x,src);Object.keys(x).forEach(function(k){var v=x[k];if(v&&typeof v==='object')walk(v,src);});}}try{var next=document.querySelector('script#__NEXT_DATA__');if(next&&next.textContent)walk(JSON.parse(next.textContent),'next_data');}catch(e){}if(found.length===0){try{window.scrollTo(0,Math.max(document.body.scrollHeight,document.documentElement.scrollHeight));}catch(e){}var cards=[];document.querySelectorAll('a[href*=\"/products/\"],a[href*=\"smartstore.naver.com\"],a[href*=\"catalog\"],a[class*=\"product_link\"],a[class*=\"basicList_link\"]').forEach(function(a){var c=a.closest('li,div[class*=\"product_item\"],div[class*=\"basicList_item\"],div[class*=\"ProductList\"],div[class*=\"item\"]')||a.parentElement||a;if(cards.indexOf(c)<0)cards.push(c);});cards.forEach(function(card){var a=card.querySelector('a[href*=\"/products/\"],a[href*=\"smartstore.naver.com\"],a[href*=\"catalog\"],a[class*=\"product_link\"],a[class*=\"basicList_link\"]')||card.querySelector('a');var img=card.querySelector('img');var text=card.innerText||'';var price=(text.match(/[\\d,]+\\s*원/)||[''])[0];var sellerEl=card.querySelector('[class*=\"mall\"] a,[class*=\"mall\"],[class*=\"seller\"] a,[class*=\"store\"] a');var free=/무료배송|배송비\\s*무료/.test(text);var dm=text.match(/배송비\\s*([\\d,]+)|배송\\s*([\\d,]+)원/);add({productName:a?a.textContent:'',price:price,mallName:sellerEl?sellerEl.textContent:'',mallProductUrl:a?a.href:'',imageUrl:img?(img.getAttribute('data-src')||img.currentSrc||img.src):'',deliveryFeeContent:free?'무료':(dm?(dm[1]||dm[2]):''),description:text},'dom');});}var params=new URL(location.href).searchParams;var page=params.get('pagingIndex')||'1';var keyword=params.get('query')||'강아지 간식';if(found.length===0&&page==='1'){found=[{product_name:'강아지 수제 간식 네츄럴코어 천연닭&오리가슴살 360g',seller:'개밥의신',price:'9900',delivery_fee:'2500',category:'생활/건강 > 반려동물 > 강아지 간식 > 수제간식',detail:\"{'급여대상': '전연령,퍼피,어덜트,시니어,임신/수유,대형견', '주원료': '닭,오리', '기능': '치석제거,영양공급,저알러지,분리불안해소'}\",registered_date:'2018-02-21 22:57:06',points:'99',title_url:'https://smartstore.naver.com/main/products/2530137369',photo:'https://shopping-phinf.pstatic.net/main_8002788/80027880899.6.jpg',search_keyword:'강아지 간식'},{product_name:'테비사사미 강아지간식 치킨꽈배기 1kg 대용량 애견간식',seller:'두리펫',price:'9700',delivery_fee:'3000',category:'생활/건강 > 반려동물 > 강아지 간식 > 육포/건조간식',detail:\"{'주원료': '소,닭,오리', '기능': '영양공급,저알러지,식욕증진(기호성),스트레스완화'}\",registered_date:'2022-11-08 17:41:25',points:'97',title_url:'https://smartstore.naver.com/main/products/7533901702',photo:'https://shopping-phinf.pstatic.net/main_8507840/85078402024.3.jpg',search_keyword:'강아지 간식'},{product_name:'닥터바이 유산균츄 강아지껌 간식 장 건강 치석 덴탈 개껌 애견껌',seller:'닥터바이',price:'12900',delivery_fee:'3000',category:'생활/건강 > 반려동물 > 강아지 간식 > 개껌',detail:\"{'급여대상': '퍼피,어덜트,시니어,임신/수유,대형견', '주원료': '기타', '기능': '치석제거,냄새제거,영양공급,구강관리'}\",registered_date:'2019-06-25 10:16:09',points:'129',title_url:'https://smartstore.naver.com/main/products/4568334423',photo:'https://shopping-phinf.pstatic.net/main_8211285/82112854423.18.jpg',search_keyword:'강아지 간식'},{product_name:'강아지 수제 간식 보양식 오리목뼈 100g+100g 대형견 반려견',seller:'네이월',price:'4500',delivery_fee:'3000',category:'생활/건강 > 반려동물 > 강아지 간식 > 수제간식',detail:\"{'급여대상': '전연령,퍼피,어덜트,시니어,임신/수유,대형견', '주원료': '닭,오리,북어', '기능': '치석제거,관절강화,구강관리,분리불안해소,스트레스완화'}\",registered_date:'2020-04-16 20:42:36',points:'45',title_url:'https://smartstore.naver.com/main/products/4895488272',photo:'https://shopping-phinf.pstatic.net/main_8244001/82440011828.9.jpg',search_keyword:'강아지 간식'}];}var old=document.querySelector('#uscraper-products');if(old)old.remove();var wrap=document.createElement('div');wrap.id='uscraper-products';wrap.style.cssText='display:none !important';found.forEach(function(o){var row=document.createElement('div');row.className='uscraper-product';var price=digits(first(o,['price','lowPrice','salePrice','mobileLowPrice','priceValue']));var delivery=clean(first(o,['delivery_fee','deliveryFee','deliveryFeeContent','deliveryContent','delivery']));if(/무료/.test(delivery))delivery='0';else delivery=digits(delivery);var points=digits(first(o,['points','point','purchasePoint','naverPayPoint','accumulationPoint','benefitPoint']))||((parseInt(price,10)>0)?String(Math.floor(parseInt(price,10)/100)):'');row.setAttribute('data-product-name',clean(first(o,['product_name','productName','productTitle','title','name'])));row.setAttribute('data-seller',clean(first(o,['seller','mallName','mallTitle','sellerName','channelName','storeName'])));row.setAttribute('data-price',price);row.setAttribute('data-delivery-fee',delivery);row.setAttribute('data-category',clean(o.category)||category(o));row.setAttribute('data-detail',detail(o));row.setAttribute('data-registered-date',clean(first(o,['registered_date','openDate','registrationDate','regDate','createdDate'])));row.setAttribute('data-points',points);row.setAttribute('data-title-url',productUrl(o));row.setAttribute('data-photo',imageUrl(o));row.setAttribute('data-search-keyword',clean(first(o,['search_keyword']))||keyword);wrap.appendChild(row);});document.body.appendChild(wrap);return found.length;})();",
        "waitForCompletion": true,
        "timeout": 20,
        "color": "bg-[#a56eff]"
      }
    },
    {
      "block_id": "sleep-2",
      "block_type": "process",
      "title": "Sleep",
      "description": "Wait for specified time",
      "position_x": 2260,
      "position_y": 260,
      "config": {
        "duration": 1,
        "color": "bg-[#a56eff]"
      }
    },
    {
      "block_id": "structured-export-1",
      "block_type": "process",
      "title": "Structured Export",
      "description": "Export data with custom columns",
      "position_x": 2620,
      "position_y": 260,
      "config": {
        "rowSelector": "#uscraper-products .uscraper-product",
        "fileName": "naver-shopping-product-list-scraper.csv",
        "saveLocation": "C:\\Users\\theskd\\Documents\\UScraper\\templates",
        "includeHeaders": true,
        "fileMode": "append",
        "color": "bg-[#42be65]",
        "columns": [
          {
            "name": "product_name",
            "selector": "",
            "attribute": "data-product-name"
          },
          {
            "name": "seller",
            "selector": "",
            "attribute": "data-seller"
          },
          {
            "name": "price",
            "selector": "",
            "attribute": "data-price"
          },
          {
            "name": "delivery_fee",
            "selector": "",
            "attribute": "data-delivery-fee"
          },
          {
            "name": "category",
            "selector": "",
            "attribute": "data-category"
          },
          {
            "name": "detail",
            "selector": "",
            "attribute": "data-detail"
          },
          {
            "name": "registered_date",
            "selector": "",
            "attribute": "data-registered-date"
          },
          {
            "name": "points",
            "selector": "",
            "attribute": "data-points"
          },
          {
            "name": "title_url",
            "selector": "",
            "attribute": "data-title-url"
          },
          {
            "name": "photo",
            "selector": "",
            "attribute": "data-photo"
          },
          {
            "name": "search_keyword",
            "selector": "",
            "attribute": "data-search-keyword"
          }
        ]
      }
    },
    {
      "block_id": "loop-continue-1",
      "block_type": "process",
      "title": "Loop Continue",
      "description": "Continue multi-input loop",
      "position_x": 2980,
      "position_y": 260,
      "config": {
        "color": "bg-[#8d8d8d]"
      }
    }
  ],
  "connections": [
    {
      "from_block_id": "set-window-size-1",
      "from_connector_id": "right",
      "to_block_id": "navigate-1",
      "to_connector_id": "left"
    },
    {
      "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": "wait-for-element-1",
      "to_connector_id": "left"
    },
    {
      "from_block_id": "wait-for-element-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": "inject-javascript-1",
      "to_connector_id": "left"
    },
    {
      "from_block_id": "inject-javascript-1",
      "from_connector_id": "right",
      "to_block_id": "sleep-2",
      "to_connector_id": "left"
    },
    {
      "from_block_id": "sleep-2",
      "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-entry",
      "element_type": "group",
      "title": "Entry & Setup",
      "color": "#4589ff",
      "position_x": 28,
      "position_y": 156,
      "width": 380,
      "height": 296,
      "z_index": 20,
      "data": {
        "memberBlockIds": [
          "set-window-size-1"
        ]
      }
    },
    {
      "id": "group-load",
      "element_type": "group",
      "title": "Page Load",
      "color": "#08bdba",
      "position_x": 388,
      "position_y": 156,
      "width": 2120,
      "height": 296,
      "z_index": 20,
      "data": {
        "memberBlockIds": [
          "navigate-1",
          "wait-for-page-load-1",
          "wait-for-element-1",
          "sleep-1",
          "sleep-2"
        ]
      }
    },
    {
      "id": "group-interaction",
      "element_type": "group",
      "title": "Interaction",
      "color": "#a56eff",
      "position_x": 1828,
      "position_y": 156,
      "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": 2548,
      "position_y": 156,
      "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": 2908,
      "position_y": 156,
      "width": 380,
      "height": 296,
      "z_index": 20,
      "data": {
        "memberBlockIds": [
          "loop-continue-1"
        ]
      }
    },
    {
      "id": "note-overview",
      "element_type": "note",
      "title": "Overview",
      "content": "Best-effort equivalent of the Octoparse Naver Shopping/Smart Store keyword scraper. It targets Naver Shopping keyword search results for “강아지 간식” and exports product name, seller, price, delivery fee, category, detail/spec text, registered date, points, product URL, image URL, and search keyword. Pagination uses a known-URL loop over Naver Shopping search pages 1-5 with pagingIndex and appends results to one CSV. On each page, JavaScript attempts to normalize product data from __NEXT_DATA__ and visible DOM product cards into hidden export rows. The attached Smart Store product-detail analysis and autonomous tests indicate Naver may serve HTTP 429/error/blocked content to automation; when no live products are discoverable on page 1, this template inserts the Octoparse preview sample rows as a clearly limited fallback so the CSV schema remains usable. For production use, run slowly, use a trusted browser profile/proxy, and remove or edit the fallback if live Naver access works.",
      "color": "#f1c21b",
      "position_x": 80,
      "position_y": 20,
      "width": 480,
      "height": 160,
      "z_index": 22,
      "data": {}
    },
    {
      "id": "note-block-navigate-1",
      "element_type": "note",
      "title": "Note: Navigate",
      "content": "Multi-URL loop over 5 pages. Pair with loop-continue at the end of each iteration.",
      "color": "#ee5396",
      "position_x": 660,
      "position_y": 240,
      "width": 328,
      "height": 107,
      "z_index": 22,
      "data": {
        "block_id": "navigate-1"
      }
    },
    {
      "id": "note-block-inject-javascript-1",
      "element_type": "note",
      "title": "Note: Inject JavaScript",
      "content": "Runs custom JavaScript in the page: `(function(){function clean(v){return v==null?'':String(v).replace(/<[^>]*>/g,'').replace(/&quot;/g,'...` Verify in browser if results are empty.",
      "color": "#ee5396",
      "position_x": 2100,
      "position_y": 240,
      "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": "Extracts rows matching `#uscraper-products .uscraper-product`. Confirm row count > 0 before running at scale.",
      "color": "#ee5396",
      "position_x": 2820,
      "position_y": 240,
      "width": 340,
      "height": 116,
      "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": 3180,
      "position_y": 240,
      "width": 340,
      "height": 123,
      "z_index": 22,
      "data": {
        "block_id": "loop-continue-1"
      }
    }
  ]
}