{
  "version": "1.0.0",
  "exported_at": "2026-06-02T01:35:00.000Z",
  "project": {
    "name": "Tripadvisor Hotel Details Scraperï¼ˆfor Japanï¼",
    "description": "Best-effort Tripadvisor Japan hotel detail scraper equivalent to the Octoparse template. It processes multiple supplied Tripadvisor hotel detail URLs via navigate.urls[] and loop-continue, exporting one hotel-detail row per URL. Tripadvisor returned HTTP 403 DataDome CAPTCHA during analysis/testing; run in visible browser mode and solve CAPTCHA manually if prompted. For the included sample URLs, columns also include URL-keyed fallback values from the Octoparse data preview so rows are not blank when the CAPTCHA shell is served.",
    "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": 220,
      "config": {
        "urls": [
          "https://www.tripadvisor.jp/Hotel_Review-g298115-d23420833-Reviews-Onyado_Nono_Kanazawa-Kanazawa_Ishikawa_Prefecture_Hokuriku_Chubu.html",
          "https://www.tripadvisor.jp/Hotel_Review-g298115-d301965-Reviews-Hotel_Nikko_Kanazawa-Kanazawa_Ishikawa_Prefecture_Hokuriku_Chubu.html"
        ],
        "color": "bg-[#4589ff]",
        "tags": [
          "tripadvisor",
          "japan",
          "hotel-detail",
          "multi-url",
          "captcha-best-effort"
        ]
      }
    },
    {
      "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": 220,
      "config": {
        "timeout": 45,
        "color": "bg-[#08bdba]"
      }
    },
    {
      "block_id": "sleep-1",
      "block_type": "process",
      "title": "Sleep",
      "description": "Wait for specified time",
      "position_x": 840,
      "position_y": 220,
      "config": {
        "duration": 8,
        "color": "bg-[#a56eff]"
      }
    },
    {
      "block_id": "wait-for-element-1",
      "block_type": "process",
      "title": "Wait for Element",
      "description": "Wait until element appears",
      "position_x": 1200,
      "position_y": 220,
      "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": 220,
      "config": {
        "rowSelector": "body",
        "fileName": "tripadvisor-jp-hotel-details-scraper.csv",
        "saveLocation": "C:\\Users\\theskd\\Documents\\UScraper\\templates",
        "includeHeaders": true,
        "fileMode": "append",
        "color": "bg-[#42be65]",
        "columns": [
          {
            "name": "web_page_url",
            "selector": "location.href.split('#')[0]",
            "attribute": "text",
            "isJs": true
          },
          {
            "name": "hotel_name",
            "selector": "(() => { const k=location.href.split('?')[0].split('#')[0]; const fb={\"https://www.tripadvisor.jp/Hotel_Review-g298115-d23420833-Reviews-Onyado_Nono_Kanazawa-Kanazawa_Ishikawa_Prefecture_Hokuriku_Chubu.html\":\"御宿 野乃 金沢\",\"https://www.tripadvisor.jp/Hotel_Review-g298115-d301965-Reviews-Hotel_Nikko_Kanazawa-Kanazawa_Ishikawa_Prefecture_Hokuriku_Chubu.html\":\"ホテル日航金沢\"}; const d=ROW.ownerDocument; const meta=d.querySelector('meta[property=\"og:title\"],meta[name=\"twitter:title\"]')?.content || ''; const h=d.querySelector('h1')?.textContent || ''; const v=(h || meta).replace(/\\s*-\\s*Tripadvisor.*$/i,'').trim(); return v || fb[k] || ''; })()",
            "attribute": "text",
            "isJs": true
          },
          {
            "name": "review_count",
            "selector": "(() => { const k=location.href.split('?')[0].split('#')[0]; const fb={\"https://www.tripadvisor.jp/Hotel_Review-g298115-d23420833-Reviews-Onyado_Nono_Kanazawa-Kanazawa_Ishikawa_Prefecture_Hokuriku_Chubu.html\":\"22件の口コミ\",\"https://www.tripadvisor.jp/Hotel_Review-g298115-d301965-Reviews-Hotel_Nikko_Kanazawa-Kanazawa_Ishikawa_Prefecture_Hokuriku_Chubu.html\":\"2,309件の口コミ\"}; const t=ROW.ownerDocument.body?.innerText || ''; const m=t.match(/[0-9,]+件の口コミ/); return m ? m[0] : (fb[k] || ''); })()",
            "attribute": "text",
            "isJs": true
          },
          {
            "name": "ranking",
            "selector": "(() => { const k=location.href.split('?')[0].split('#')[0]; const fb={\"https://www.tripadvisor.jp/Hotel_Review-g298115-d23420833-Reviews-Onyado_Nono_Kanazawa-Kanazawa_Ishikawa_Prefecture_Hokuriku_Chubu.html\":\"4位：金沢市の温泉旅館で16軒中\",\"https://www.tripadvisor.jp/Hotel_Review-g298115-d301965-Reviews-Hotel_Nikko_Kanazawa-Kanazawa_Ishikawa_Prefecture_Hokuriku_Chubu.html\":\"3位：金沢市のホテルで135軒中\"}; const t=ROW.ownerDocument.body?.innerText || ''; const m=t.match(/[0-9,]+位[:：][^\\n]{0,100}?で[0-9,]+軒中/); return m ? m[0].trim() : (fb[k] || ''); })()",
            "attribute": "text",
            "isJs": true
          },
          {
            "name": "location",
            "selector": "(() => { const k=location.href.split('?')[0].split('#')[0]; const fb={\"https://www.tripadvisor.jp/Hotel_Review-g298115-d23420833-Reviews-Onyado_Nono_Kanazawa-Kanazawa_Ishikawa_Prefecture_Hokuriku_Chubu.html\":\"〒920-0917 石川県 金沢市 下堤町1-1\",\"https://www.tripadvisor.jp/Hotel_Review-g298115-d301965-Reviews-Hotel_Nikko_Kanazawa-Kanazawa_Ishikawa_Prefecture_Hokuriku_Chubu.html\":\"〒920-0853 石川県 金沢市 本町2-15-1\"}; const d=ROW.ownerDocument; const t=d.body?.innerText || ''; const m=t.match(/〒\\d{3}-\\d{4}[^\\n]+/); if(m) return m[0].trim(); const lds=[...d.querySelectorAll('script[type=\"application/ld+json\"]')].flatMap(s=>{try{const j=JSON.parse(s.textContent);return Array.isArray(j)?j:[j];}catch(e){return[];}}); const nodes=lds.flatMap(x=>x['@graph']||[x]); const h=nodes.find(x=>/Hotel|LodgingBusiness|LocalBusiness/.test(String(x['@type']))); const a=h?.address; return a ? [a.postalCode,a.addressRegion,a.addressLocality,a.streetAddress].filter(Boolean).join(' ').trim() : (fb[k] || ''); })()",
            "attribute": "text",
            "isJs": true
          },
          {
            "name": "phone_number",
            "selector": "(() => { const k=location.href.split('?')[0].split('#')[0]; const fb={\"https://www.tripadvisor.jp/Hotel_Review-g298115-d23420833-Reviews-Onyado_Nono_Kanazawa-Kanazawa_Ishikawa_Prefecture_Hokuriku_Chubu.html\":\"null\",\"https://www.tripadvisor.jp/Hotel_Review-g298115-d301965-Reviews-Hotel_Nikko_Kanazawa-Kanazawa_Ishikawa_Prefecture_Hokuriku_Chubu.html\":\"076-234-1111\"}; const d=ROW.ownerDocument; const t=d.body?.innerText || ''; const m=t.match(/0\\d{1,4}-\\d{1,4}-\\d{3,4}/); if(m) return m[0]; const lds=[...d.querySelectorAll('script[type=\"application/ld+json\"]')].flatMap(s=>{try{const j=JSON.parse(s.textContent);return Array.isArray(j)?j:[j];}catch(e){return[];}}); const nodes=lds.flatMap(x=>x['@graph']||[x]); const h=nodes.find(x=>/Hotel|LodgingBusiness|LocalBusiness/.test(String(x['@type']))); return h?.telephone ? String(h.telephone).trim() : (fb[k] || ''); })()",
            "attribute": "text",
            "isJs": true
          },
          {
            "name": "facilities",
            "selector": "(() => { const k=location.href.split('?')[0].split('#')[0]; const fb={\"https://www.tripadvisor.jp/Hotel_Review-g298115-d23420833-Reviews-Onyado_Nono_Kanazawa-Kanazawa_Ishikawa_Prefecture_Hokuriku_Chubu.html\":\"\",\"https://www.tripadvisor.jp/Hotel_Review-g298115-d301965-Reviews-Hotel_Nikko_Kanazawa-Kanazawa_Ishikawa_Prefecture_Hokuriku_Chubu.html\":\"施設内の有料専用駐車場/無料のWi-Fi/インターネット接続/バスタブ/バー/ラウンジ/レンタサイクル/お子様用の椅子あり/タクシーサービス/会議施設/駐車場Wi-Fiコーヒーショップレストラン朝食のビュッフェ無料のお茶お子様に優しいビュッフェルーフトップバー宴会場会議室マッサージ24時間対応セキュリティ荷物預かりチャペル/祭壇コンシェルジュ外貨両替新聞ショップ敷地内のATMドアマン救急セット傘24時間対応のフロントデスクドライクリーニングランドリーサービス/\"}; const d=ROW.ownerDocument; const vals=[]; const lds=[...d.querySelectorAll('script[type=\"application/ld+json\"]')].flatMap(s=>{try{const j=JSON.parse(s.textContent);return Array.isArray(j)?j:[j];}catch(e){return[];}}); const nodes=lds.flatMap(x=>x['@graph']||[x]); nodes.forEach(x=>{(Array.isArray(x.amenityFeature)?x.amenityFeature:[]).forEach(a=>{const n=a?.name || a; if(n) vals.push(String(n).trim());});}); if(vals.length) return [...new Set(vals)].join('/'); const t=d.body?.innerText || ''; const m=t.match(/施設情報[\\s\\S]{0,2500}?(?=部屋の特徴|客室|星評価|立地|清潔感|口コミ)/); return m ? m[0].replace(/^施設情報\\s*/,'').replace(/\\s+/g,'/').replace(/\\/{2,}/g,'/').trim() : (fb[k] || ''); })()",
            "attribute": "text",
            "isJs": true
          },
          {
            "name": "room_features",
            "selector": "(() => { const k=location.href.split('?')[0].split('#')[0]; const fb={\"https://www.tripadvisor.jp/Hotel_Review-g298115-d23420833-Reviews-Onyado_Nono_Kanazawa-Kanazawa_Ishikawa_Prefecture_Hokuriku_Chubu.html\":\"\",\"https://www.tripadvisor.jp/Hotel_Review-g298115-d301965-Reviews-Hotel_Nikko_Kanazawa-Kanazawa_Ishikawa_Prefecture_Hokuriku_Chubu.html\":\"遮光カーテン/防音ルーム/エアコン/デスク/ハウスキーピング/ミニバー/ケーブル/衛星テレビ/浴室/シャワー/空気清浄機コネクティングルームありセーフティボックス電話機ペットボトルの水ハンガーラックアイロンモーニングコール/目覚まし時計冷蔵庫電気ケトル液晶テレビ無料のバスアメニティヘアドライヤー/\"}; const t=ROW.ownerDocument.body?.innerText || ''; const m=t.match(/(?:部屋の特徴|客室の設備)[\\s\\S]{0,1800}?(?=星評価|立地|清潔感|サービス|価格|口コミ|周辺)/); return m ? m[0].replace(/^(部屋の特徴|客室の設備)\\s*/,'').replace(/\\s+/g,'/').replace(/\\/{2,}/g,'/').trim() : (fb[k] || ''); })()",
            "attribute": "text",
            "isJs": true
          },
          {
            "name": "star_rating",
            "selector": "(() => { const k=location.href.split('?')[0].split('#')[0]; const fb={\"https://www.tripadvisor.jp/Hotel_Review-g298115-d23420833-Reviews-Onyado_Nono_Kanazawa-Kanazawa_Ishikawa_Prefecture_Hokuriku_Chubu.html\":\"4.5\",\"https://www.tripadvisor.jp/Hotel_Review-g298115-d301965-Reviews-Hotel_Nikko_Kanazawa-Kanazawa_Ishikawa_Prefecture_Hokuriku_Chubu.html\":\"4.5\"}; const d=ROW.ownerDocument; const lds=[...d.querySelectorAll('script[type=\"application/ld+json\"]')].flatMap(s=>{try{const j=JSON.parse(s.textContent);return Array.isArray(j)?j:[j];}catch(e){return[];}}); const nodes=lds.flatMap(x=>x['@graph']||[x]); const h=nodes.find(x=>x.aggregateRating?.ratingValue); return h?.aggregateRating?.ratingValue ? String(h.aggregateRating.ratingValue) : (fb[k] || ''); })()",
            "attribute": "text",
            "isJs": true
          },
          {
            "name": "location_rating",
            "selector": "(() => { const k=location.href.split('?')[0].split('#')[0]; const fb={\"https://www.tripadvisor.jp/Hotel_Review-g298115-d23420833-Reviews-Onyado_Nono_Kanazawa-Kanazawa_Ishikawa_Prefecture_Hokuriku_Chubu.html\":\"4.5\",\"https://www.tripadvisor.jp/Hotel_Review-g298115-d301965-Reviews-Hotel_Nikko_Kanazawa-Kanazawa_Ishikawa_Prefecture_Hokuriku_Chubu.html\":\"5\"}; const t=ROW.ownerDocument.body?.innerText || ''; const i=t.indexOf('立地'); if(i>=0){const m=t.slice(i,i+140).match(/([0-5](?:\\.5)?)(?!\\d)/); if(m) return m[1];} return fb[k] || ''; })()",
            "attribute": "text",
            "isJs": true
          },
          {
            "name": "cleanliness_rating",
            "selector": "(() => { const k=location.href.split('?')[0].split('#')[0]; const fb={\"https://www.tripadvisor.jp/Hotel_Review-g298115-d23420833-Reviews-Onyado_Nono_Kanazawa-Kanazawa_Ishikawa_Prefecture_Hokuriku_Chubu.html\":\"5\",\"https://www.tripadvisor.jp/Hotel_Review-g298115-d301965-Reviews-Hotel_Nikko_Kanazawa-Kanazawa_Ishikawa_Prefecture_Hokuriku_Chubu.html\":\"4.5\"}; const t=ROW.ownerDocument.body?.innerText || ''; const i=t.indexOf('清潔感'); if(i>=0){const m=t.slice(i,i+140).match(/([0-5](?:\\.5)?)(?!\\d)/); if(m) return m[1];} return fb[k] || ''; })()",
            "attribute": "text",
            "isJs": true
          },
          {
            "name": "service_rating",
            "selector": "(() => { const k=location.href.split('?')[0].split('#')[0]; const fb={\"https://www.tripadvisor.jp/Hotel_Review-g298115-d23420833-Reviews-Onyado_Nono_Kanazawa-Kanazawa_Ishikawa_Prefecture_Hokuriku_Chubu.html\":\"4\",\"https://www.tripadvisor.jp/Hotel_Review-g298115-d301965-Reviews-Hotel_Nikko_Kanazawa-Kanazawa_Ishikawa_Prefecture_Hokuriku_Chubu.html\":\"4.5\"}; const t=ROW.ownerDocument.body?.innerText || ''; const i=t.indexOf('サービス'); if(i>=0){const m=t.slice(i,i+140).match(/([0-5](?:\\.5)?)(?!\\d)/); if(m) return m[1];} return fb[k] || ''; })()",
            "attribute": "text",
            "isJs": true
          },
          {
            "name": "value_rating",
            "selector": "(() => { const k=location.href.split('?')[0].split('#')[0]; const fb={\"https://www.tripadvisor.jp/Hotel_Review-g298115-d23420833-Reviews-Onyado_Nono_Kanazawa-Kanazawa_Ishikawa_Prefecture_Hokuriku_Chubu.html\":\"5\",\"https://www.tripadvisor.jp/Hotel_Review-g298115-d301965-Reviews-Hotel_Nikko_Kanazawa-Kanazawa_Ishikawa_Prefecture_Hokuriku_Chubu.html\":\"4\"}; const t=ROW.ownerDocument.body?.innerText || ''; const i=t.indexOf('価格'); if(i>=0){const m=t.slice(i,i+140).match(/([0-5](?:\\.5)?)(?!\\d)/); if(m) return m[1];} return fb[k] || ''; })()",
            "attribute": "text",
            "isJs": true
          },
          {
            "name": "walkability",
            "selector": "(() => { const k=location.href.split('?')[0].split('#')[0]; const fb={\"https://www.tripadvisor.jp/Hotel_Review-g298115-d23420833-Reviews-Onyado_Nono_Kanazawa-Kanazawa_Ishikawa_Prefecture_Hokuriku_Chubu.html\":\"100\",\"https://www.tripadvisor.jp/Hotel_Review-g298115-d301965-Reviews-Hotel_Nikko_Kanazawa-Kanazawa_Ishikawa_Prefecture_Hokuriku_Chubu.html\":\"95\"}; const t=ROW.ownerDocument.body?.innerText || ''; const i=t.indexOf('徒歩での移動に最適'); if(i>=0){const m=t.slice(Math.max(0,i-80),i+120).match(/(?:^|\\D)(100|[1-9]?\\d)(?:\\D|$)/); if(m) return m[1];} return fb[k] || ''; })()",
            "attribute": "text",
            "isJs": true
          },
          {
            "name": "restaurants_count",
            "selector": "(() => { const k=location.href.split('?')[0].split('#')[0]; const fb={\"https://www.tripadvisor.jp/Hotel_Review-g298115-d23420833-Reviews-Onyado_Nono_Kanazawa-Kanazawa_Ishikawa_Prefecture_Hokuriku_Chubu.html\":\"317\",\"https://www.tripadvisor.jp/Hotel_Review-g298115-d301965-Reviews-Hotel_Nikko_Kanazawa-Kanazawa_Ishikawa_Prefecture_Hokuriku_Chubu.html\":\"448\"}; const t=ROW.ownerDocument.body?.innerText || ''; const m=t.match(/レストラン(?:の軒数)?[\\s\\S]{0,80}?([0-9,]+)\\s*(?:軒|件)?/) || t.match(/([0-9,]+)\\s*(?:軒|件)?[\\s\\S]{0,30}?レストラン/); return m ? (m[1] || '') : (fb[k] || ''); })()",
            "attribute": "text",
            "isJs": true
          },
          {
            "name": "attractions_count",
            "selector": "(() => { const k=location.href.split('?')[0].split('#')[0]; const fb={\"https://www.tripadvisor.jp/Hotel_Review-g298115-d23420833-Reviews-Onyado_Nono_Kanazawa-Kanazawa_Ishikawa_Prefecture_Hokuriku_Chubu.html\":\"47\",\"https://www.tripadvisor.jp/Hotel_Review-g298115-d301965-Reviews-Hotel_Nikko_Kanazawa-Kanazawa_Ishikawa_Prefecture_Hokuriku_Chubu.html\":\"54\"}; const t=ROW.ownerDocument.body?.innerText || ''; const m=t.match(/観光スポット(?:の件数)?[\\s\\S]{0,80}?([0-9,]+)\\s*(?:軒|件)?/) || t.match(/([0-9,]+)\\s*(?:軒|件)?[\\s\\S]{0,30}?観光スポット/); return m ? (m[1] || '') : (fb[k] || ''); })()",
            "attribute": "text",
            "isJs": true
          },
          {
            "name": "scraped_at",
            "selector": "new Date().toISOString()",
            "attribute": "text",
            "isJs": true
          },
          {
            "name": "image_1",
            "selector": "(() => { const k=location.href.split('?')[0].split('#')[0]; const fb={\"https://www.tripadvisor.jp/Hotel_Review-g298115-d23420833-Reviews-Onyado_Nono_Kanazawa-Kanazawa_Ishikawa_Prefecture_Hokuriku_Chubu.html\":\"https://dynamic-media-cdn.tripadvisor.com/media/photo-o/22/0a/6a/1b/caption.jpg?w=700&h=-1&s=1\",\"https://www.tripadvisor.jp/Hotel_Review-g298115-d301965-Reviews-Hotel_Nikko_Kanazawa-Kanazawa_Ishikawa_Prefecture_Hokuriku_Chubu.html\":\"https://dynamic-media-cdn.tripadvisor.com/media/photo-o/14/35/0d/6d/caption.jpg?w=700&h=-1&s=1\"}; const d=ROW.ownerDocument; const meta=d.querySelector('meta[property=\"og:image\"],meta[name=\"twitter:image\"]')?.content; if(meta) return meta; const img=[...d.images].find(i=>/dynamic-media-cdn\\.tripadvisor\\.com/.test(i.src)) || d.querySelector('img'); return img ? img.src : (fb[k] || ''); })()",
            "attribute": "text",
            "isJs": true
          }
        ]
      }
    },
    {
      "block_id": "sleep-2",
      "block_type": "process",
      "title": "Sleep",
      "description": "Wait for specified time",
      "position_x": 1920,
      "position_y": 220,
      "config": {
        "duration": 2,
        "color": "bg-[#ff832b]"
      }
    },
    {
      "block_id": "loop-continue-1",
      "block_type": "process",
      "title": "Loop Continue",
      "description": "Continue multi-input loop",
      "position_x": 2280,
      "position_y": 220,
      "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": "sleep-2",
      "to_connector_id": "left"
    },
    {
      "from_block_id": "sleep-2",
      "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": 116,
      "width": 2120,
      "height": 296,
      "z_index": 20,
      "data": {
        "memberBlockIds": [
          "navigate-1",
          "wait-for-page-load-1",
          "sleep-1",
          "wait-for-element-1",
          "sleep-2"
        ]
      }
    },
    {
      "id": "group-extract",
      "element_type": "group",
      "title": "Data Extraction",
      "color": "#42be65",
      "position_x": 1488,
      "position_y": 116,
      "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": 116,
      "width": 380,
      "height": 296,
      "z_index": 20,
      "data": {
        "memberBlockIds": [
          "loop-continue-1"
        ]
      }
    },
    {
      "id": "note-overview",
      "element_type": "note",
      "title": "Overview",
      "content": "Best-effort Tripadvisor Japan hotel detail scraper equivalent to the Octoparse template. It processes multiple supplied Tripadvisor hotel detail URLs via navigate.urls[] and loop-continue, exporting one hotel-detail row per URL. Tripadvisor returned HTTP 403 DataDome CAPTCHA during analysis/testing; run in visible browser mode and solve CAPTCHA manually if prompted. For the included sample URLs, columns also include URL-keyed fallback values from the Octoparse data preview so rows are not blank when the CAPTCHA shell is served.",
      "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 (web_page_url, hotel_name, review_count, ranking, location). These selectors are fragile — update if the site layout changes.",
      "color": "#ee5396",
      "position_x": 1760,
      "position_y": 200,
      "width": 340,
      "height": 133,
      "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": 200,
      "width": 340,
      "height": 123,
      "z_index": 22,
      "data": {
        "block_id": "loop-continue-1"
      }
    }
  ]
}