{"product_id":"fly-tin","title":"Fly Tin","description":"\u003cdiv style=\"font-family: 'ヒラギノ角ゴ ProN W3', 'Hiragino Kaku Gothic ProN', 'メイリオ', Meiryo, sans-serif; color: #333; line-height: 1.6; max-width: 1000px; margin: 0 auto; padding: 20px; box-sizing: border-box;\"\u003e\r\n\r\n    \u003c!-- Hero \/ Title --\u003e\r\n    \u003cdiv style=\"text-align: center; padding: 60px 15px; background-color: #f8fafc; margin-bottom: 40px; border-radius: 8px; border: 1px solid #e2e8f0;\"\u003e\r\n        \u003cspan style=\"color: #0369a1; font-size: 12px; letter-spacing: 0.1em; font-weight: bold; display: block; margin-bottom: 10px;\"\u003eYAKODA GEAR\u003c\/span\u003e\r\n        \u003cdiv style=\"font-weight: 700; text-transform: uppercase; font-size: 28px; color: #0f172a; margin: 0 0 15px 0; display: inline-block;\"\u003eFly Tin\u003c\/div\u003e\r\n        \u003cp style=\"font-size: 18px; color: #475569; max-width: 600px; margin: 0 auto; font-weight: bold;\"\u003e\r\n            フライ ティン\r\n        \u003c\/p\u003e\r\n    \u003c\/div\u003e\r\n\r\n    \u003c!-- Overview --\u003e\r\n    \u003cdiv style=\"margin-bottom: 80px;\"\u003e\r\n        \u003cdiv style=\"text-align: center; margin-bottom: 40px;\"\u003e\r\n            \u003cdiv style=\"display: inline-block; font-weight: 700; text-transform: uppercase; font-size: 24px; padding-bottom: 10px; margin: 0;\"\u003eOverview\u003c\/div\u003e\r\n            \u003cdiv style=\"width: 60px; height: 4px; background-color: #0369a1; margin: 10px auto 0;\"\u003e\u003c\/div\u003e\r\n        \u003c\/div\u003e\r\n        \u003cdiv style=\"font-size: 16px; color: #444; max-width: 800px; margin: 0 auto; text-align: center;\"\u003e\r\n            \u003cp style=\"margin-bottom: 1.5em; line-height: 1.8;\"\u003e\r\n                小型で軽量なFly Tinは、次の釣行に向けてすぐに装備を整えることができる便利なフライボックスです。\u003cbr\u003e\r\n                クリークキットとして、テールウォーターで人気のアイテムを搭載したり、高山の湖で厳選されたアイテムを搭載したり、ホームウォーターで活躍するアイテムを積み上げたりと、用途に合わせて様々な使い方をお楽しみいただけます。\r\n            \u003c\/p\u003e\r\n        \u003c\/div\u003e\r\n    \u003c\/div\u003e\r\n\r\n    \u003c!-- Details \u0026 Specs --\u003e\r\n    \u003cdiv style=\"margin-bottom: 80px; background-color: #f9fafb; padding: 40px; border-radius: 8px; border: 1px solid #e5e7eb;\"\u003e\r\n        \u003cdiv style=\"text-align: center; margin-bottom: 30px;\"\u003e\r\n            \u003cdiv style=\"display: inline-block; font-weight: 700; text-transform: uppercase; font-size: 24px; color: #374151; margin: 0;\"\u003eFEATURES \u0026amp; DETAILS\u003c\/div\u003e\r\n            \u003cdiv style=\"width: 50px; height: 3px; background-color: #4a7c59; margin: 10px auto 0;\"\u003e\u003c\/div\u003e\r\n        \u003c\/div\u003e\r\n        \r\n        \u003c!--箇条書き Features --\u003e\r\n        \u003cdiv style=\"background-color: #fafff2; border: 1px solid #dcfce7; padding: 25px; border-radius: 6px; margin-bottom: 40px; max-width: 700px; margin-left: auto; margin-right: auto;\"\u003e\r\n            \u003ch4 style=\"margin-top: 0; color: #1a2e1a; font-size: 16px; margin-bottom: 15px;\"\u003e2つのスタイルからお選びいただけます：\u003c\/h4\u003e\r\n            \u003cul style=\"list-style: none; padding: 0; margin: 0; font-size: 15px; color: #374151;\"\u003e\r\n                \u003cli style=\"margin-bottom: 15px;\"\u003e✓ \u003cstrong\u003eフォームトレイとマグネットトレイ\u003c\/strong\u003e\u003cbr\u003e\r\n                \u003cspan style=\"font-size: 14px; color: #64748b; margin-left: 20px; display: block; margin-top: 5px;\"\u003eアップトップにはブッシーなドライを、フォームには小～中型のニンフやドライを、マグネットトレイにはマイクロミッジを入れるのに最適です。\u003c\/span\u003e\n\u003c\/li\u003e\r\n                \u003cli style=\"margin-bottom: 15px;\"\u003e✓ \u003cstrong\u003eフォームリッド＆フォームトレイ\u003c\/strong\u003e\u003cbr\u003e\r\n                \u003cspan style=\"font-size: 14px; color: #64748b; margin-left: 20px; display: block; margin-top: 5px;\"\u003eボトムには大きめのフック、大きめのニンフ、ミディアムサイズのドライ、リーチパターンなどに対応したフォームインサート、リッド（蓋）には低めのフォームインサートを採用しています。\u003c\/span\u003e\n\u003c\/li\u003e\r\n                \u003cli style=\"margin-bottom: 0;\"\u003e✓ \u003cstrong\u003e軽量のEVAフォームインサートを採用\u003c\/strong\u003e\n\u003c\/li\u003e\r\n            \u003c\/ul\u003e\r\n        \u003c\/div\u003e\r\n\r\n        \u003c!-- Specs Table --\u003e\r\n        \u003cdiv style=\"overflow-x: auto; max-width: 800px; margin: 0 auto; background-color: #fff; box-shadow: 0 2px 8px rgba(0,0,0,0.05);\"\u003e\r\n            \u003ctable style=\"width: 100%; border-collapse: collapse; font-size: 14px; text-align: center; border: 1px solid #e5e7eb;\"\u003e\r\n                \u003cthead\u003e\r\n                    \u003ctr style=\"background-color: #1a2e1a; color: #fff;\"\u003e\r\n                        \u003cth style=\"padding: 15px; border: 1px solid #e5e7eb; font-weight: bold; width: 30%;\"\u003eスペック\u003c\/th\u003e\r\n                        \u003cth style=\"padding: 15px; border: 1px solid #e5e7eb; font-weight: bold; width: 70%;\"\u003e詳細\u003c\/th\u003e\r\n                    \u003c\/tr\u003e\r\n                \u003c\/thead\u003e\r\n                \u003ctbody\u003e\r\n                    \u003ctr\u003e\r\n                        \u003ctd style=\"padding: 12px; border: 1px solid #e5e7eb; font-weight: bold; background-color: #f8fafc;\"\u003eサイズ\u003c\/td\u003e\r\n                        \u003ctd style=\"padding: 12px; border: 1px solid #e5e7eb; text-align: left; padding-left: 20px;\"\u003e約 10cm x 6cm x 3cm\u003c\/td\u003e\r\n                    \u003c\/tr\u003e\r\n                    \u003ctr style=\"background-color: #f9fafb;\"\u003e\r\n                        \u003ctd style=\"padding: 12px; border: 1px solid #e5e7eb; font-weight: bold; background-color: #f8fafc;\"\u003e重量\u003c\/td\u003e\r\n                        \u003ctd style=\"padding: 12px; border: 1px solid #e5e7eb; text-align: left; padding-left: 20px;\"\u003e約 57g\u003c\/td\u003e\r\n                    \u003c\/tr\u003e\r\n                    \u003ctr\u003e\r\n                        \u003ctd style=\"padding: 12px; border: 1px solid #e5e7eb; font-weight: bold; background-color: #f8fafc;\"\u003e製造\u003c\/td\u003e\r\n                        \u003ctd style=\"padding: 12px; border: 1px solid #e5e7eb; text-align: left; padding-left: 20px;\"\u003eコロラド州にてデザイン、中国で製造、 組み立てはアメリカにて\u003c\/td\u003e\r\n                    \u003c\/tr\u003e\r\n                \u003c\/tbody\u003e\r\n            \u003c\/table\u003e\r\n            \u003cp style=\"font-size: 12px; color: #dc2626; margin-top: 10px; text-align: left; padding: 0 10px;\"\u003e※注：商品画像に表示されているフライは含まれません。\u003c\/p\u003e\r\n        \u003c\/div\u003e\r\n    \u003c\/div\u003e\r\n\r\n    \u003c!-- Staff Impression --\u003e\r\n    \u003cdiv style=\"margin-bottom: 40px; border: 1px solid #e5e7eb; border-radius: 8px; overflow: hidden;\"\u003e\r\n        \u003cdiv style=\"background-color: #f1f5f9; padding: 20px; border-bottom: 1px solid #e5e7eb; text-align: center;\"\u003e\r\n            \u003cdiv style=\"display: inline-block; font-weight: 700; text-transform: uppercase; font-size: 20px; color: #1e293b; margin: 0; padding: 0;\"\u003eSTAFF IMPRESSION\u003c\/div\u003e\r\n        \u003c\/div\u003e\r\n        \u003cdiv style=\"padding: 30px;\"\u003e\r\n            \u003ch3 style=\"font-size: 18px; color: #0f172a; margin-top: 0; margin-bottom: 15px;\"\u003e「ポケットにすっぽり収まる、ミニマル派アングラーの強い味方」\u003c\/h3\u003e\r\n            \u003cp style=\"font-size: 15px; color: #475569; line-height: 1.8; margin: 0;\"\u003e\r\n                わずか57gと非常に軽量で、手のひらやシャツのポケットにすっぽりと収まるコンパクトなフライボックスです。ちょっとした近所の川への釣行や、特定のハッチに合わせたフライだけを持ち歩きたい時に最適です。\u003cbr\u003e\u003cbr\u003e\r\n                2種類のインサートスタイルが用意されているため、ミッジを多用する方は「マグネットタイプ」、大きめのドライやニンフを主体にする方は全面「フォームタイプ」と、自分の釣りのスタイルに合わせて選べるのが大きな魅力。Yakodaらしい洗練されたデザインで、釣りへのモチベーションを高めてくれるアイテムです！\r\n            \u003c\/p\u003e\r\n        \u003c\/div\u003e\r\n    \u003c\/div\u003e\r\n\r\n    \u003c!-- AI Chat Assistant --\u003e\r\n    \u003cbutton id=\"ai-chat-btn\" style=\"position: fixed; bottom: 20px; right: 20px; background-color: #0369a1; color: white; border: none; border-radius: 50px; padding: 15px 20px; font-size: 16px; cursor: pointer; box-shadow: 0 4px 12px rgba(0,0,0,0.2); z-index: 1000; display: flex; align-items: center; gap: 8px;\"\u003e\r\n        ✨ AIスタッフに質問する\r\n    \u003c\/button\u003e\r\n\r\n    \u003cdiv id=\"ai-chat-modal\" style=\"display: none; position: fixed; bottom: 80px; right: 20px; width: 350px; max-height: 500px; background: white; border-radius: 12px; box-shadow: 0 8px 24px rgba(0,0,0,0.15); z-index: 1000; flex-direction: column; overflow: hidden; border: 1px solid #e2e8f0; font-family: 'Hiragino Kaku Gothic ProN', sans-serif;\"\u003e\r\n        \u003cdiv style=\"background-color: #0369a1; color: white; padding: 15px; font-weight: bold; display: flex; justify-content: space-between; align-items: center;\"\u003e\r\n            \u003cspan\u003e✨ AIスタッフ (ベータ版)\u003c\/span\u003e\r\n            \u003cbutton id=\"close-chat-btn\" style=\"background: none; border: none; color: white; font-size: 20px; cursor: pointer;\"\u003e×\u003c\/button\u003e\r\n        \u003c\/div\u003e\r\n        \u003cdiv id=\"chat-messages\" style=\"flex: 1; padding: 15px; overflow-y: auto; max-height: 300px; display: flex; flex-direction: column; gap: 10px; background-color: #f8fafc; font-size: 14px;\"\u003e\r\n            \u003cdiv style=\"align-self: flex-start; background: #e2e8f0; padding: 10px; border-radius: 8px; max-width: 80%; line-height: 1.4;\"\u003e\r\n                こんにちは！サイズ感やおすすめの使い方、商品の機能についてなど、何でも聞いてください。\r\n            \u003c\/div\u003e\r\n        \u003c\/div\u003e\r\n        \u003cdiv style=\"padding: 10px; border-top: 1px solid #e2e8f0; display: flex; gap: 10px; background: white;\"\u003e\r\n            \u003cinput type=\"text\" id=\"chat-input\" placeholder=\"質問を入力...\" style=\"flex: 1; padding: 8px 12px; border: 1px solid #cbd5e1; border-radius: 20px; outline: none; font-size: 14px;\"\u003e\r\n            \u003cbutton id=\"send-chat-btn\" style=\"background-color: #0369a1; color: white; border: none; border-radius: 20px; padding: 8px 15px; cursor: pointer; font-size: 14px;\"\u003e送信\u003c\/button\u003e\r\n        \u003c\/div\u003e\r\n    \u003c\/div\u003e\r\n\u003c\/div\u003e\r\n\r\n\u003cscript\u003e\r\n    const apiKey = \"\"; \/\/ API key is provided by the execution environment\r\n\r\n    const chatBtn = document.getElementById('ai-chat-btn');\r\n    const chatModal = document.getElementById('ai-chat-modal');\r\n    const closeChatBtn = document.getElementById('close-chat-btn');\r\n    const sendChatBtn = document.getElementById('send-chat-btn');\r\n    const chatInput = document.getElementById('chat-input');\r\n    const chatMessages = document.getElementById('chat-messages');\r\n\r\n    chatBtn.addEventListener('click', () =\u003e {\r\n        chatModal.style.display = chatModal.style.display === 'none' || chatModal.style.display === '' ? 'flex' : 'none';\r\n        if (chatModal.style.display === 'flex') {\r\n            chatInput.focus();\r\n        }\r\n    });\r\n\r\n    closeChatBtn.addEventListener('click', () =\u003e {\r\n        chatModal.style.display = 'none';\r\n    });\r\n\r\n    async function callGeminiApi(prompt) {\r\n        if (!apiKey) {\r\n            return \"APIキーが設定されていません。\";\r\n        }\r\n        \r\n        \/\/ AIの振る舞い（システムプロンプト）を設定\r\n        const systemPrompt = \"あなたはYAKODAのアウトドアギア専門のAIスタッフです。お客様は「Fly Tin（フライ ティン）」というフライボックスを見ています。この商品は小型軽量（約57g, 約10x6x3cm）で、軽量なEVAフォームインサートを使用しています。スタイルは「フォームトレイ＆マグネットトレイ」「フォームリッド＆フォームトレイ」の2種類から選べます。フライ自体は商品に含まれません。コロラド州でデザインされ、アメリカで組み立てられています。お客様からの質問に対し、丁寧でフレンドリーなトーンで短めに（150字程度）日本語で回答してください。\";\r\n        \r\n        const url = `https:\/\/generativelanguage.googleapis.com\/v1beta\/models\/gemini-2.5-flash-preview-09-2025:generateContent?key=${apiKey}`;\r\n        \r\n        const payload = {\r\n            contents: [{ parts: [{ text: prompt }] }],\r\n            systemInstruction: { parts: [{ text: systemPrompt }] }\r\n        };\r\n\r\n        const fetchWithRetry = async (url, options, retries = 5, delay = 1000) =\u003e {\r\n            for (let i = 0; i \u003c retries; i++) {\r\n                try {\r\n                    const response = await fetch(url, options);\r\n                    if (!response.ok) throw new Error('API Error ' + response.status);\r\n                    return await response.json();\r\n                } catch (error) {\r\n                    if (i === retries - 1) throw error;\r\n                    await new Promise(res =\u003e setTimeout(res, delay));\r\n                    delay *= 2;\r\n                }\r\n            }\r\n        };\r\n\r\n        try {\r\n            const result = await fetchWithRetry(url, {\r\n                method: 'POST',\r\n                headers: { 'Content-Type': 'application\/json' },\r\n                body: JSON.stringify(payload)\r\n            });\r\n            return result.candidates?.[0]?.content?.parts?.[0]?.text || \"申し訳ありません。回答を生成できませんでした。\";\r\n        } catch (error) {\r\n            console.error(\"Gemini API Error:\", error);\r\n            return \"現在AIスタッフが混み合っております。少し時間をおいて再度お試しください。\";\r\n        }\r\n    }\r\n\r\n    function addMessage(text, isUser) {\r\n        const msgDiv = document.createElement('div');\r\n        msgDiv.style.padding = '10px';\r\n        msgDiv.style.borderRadius = '8px';\r\n        msgDiv.style.maxWidth = '80%';\r\n        msgDiv.style.wordBreak = 'break-word';\r\n        msgDiv.style.lineHeight = '1.4';\r\n        \r\n        if (isUser) {\r\n            msgDiv.style.alignSelf = 'flex-end';\r\n            msgDiv.style.background = '#0369a1';\r\n            msgDiv.style.color = 'white';\r\n        } else {\r\n            msgDiv.style.alignSelf = 'flex-start';\r\n            msgDiv.style.background = '#e2e8f0';\r\n            msgDiv.style.color = '#333';\r\n        }\r\n        \r\n        \/\/ 簡易的な改行のHTML変換\r\n        msgDiv.innerHTML = text.replace(\/\\n\/g, '\u003cbr\u003e');\r\n        chatMessages.appendChild(msgDiv);\r\n        chatMessages.scrollTop = chatMessages.scrollHeight;\r\n    }\r\n\r\n    async function handleSend() {\r\n        const text = chatInput.value.trim();\r\n        if (!text) return;\r\n\r\n        addMessage(text, true);\r\n        chatInput.value = '';\r\n        chatInput.disabled = true;\r\n        sendChatBtn.disabled = true;\r\n        sendChatBtn.style.opacity = '0.5';\r\n        \r\n        \/\/ Show loading indicator\r\n        const loadingId = 'loading-' + Date.now();\r\n        const loadingDiv = document.createElement('div');\r\n        loadingDiv.id = loadingId;\r\n        loadingDiv.style.alignSelf = 'flex-start';\r\n        loadingDiv.style.color = '#64748b';\r\n        loadingDiv.style.fontSize = '12px';\r\n        loadingDiv.innerText = '考え中...';\r\n        chatMessages.appendChild(loadingDiv);\r\n        chatMessages.scrollTop = chatMessages.scrollHeight;\r\n\r\n        const responseText = await callGeminiApi(text);\r\n        \r\n        \/\/ Remove loading indicator\r\n        const loadingElement = document.getElementById(loadingId);\r\n        if(loadingElement) loadingElement.remove();\r\n        \r\n        addMessage(responseText, false);\r\n        \r\n        chatInput.disabled = false;\r\n        sendChatBtn.disabled = false;\r\n        sendChatBtn.style.opacity = '1';\r\n        chatInput.focus();\r\n    }\r\n\r\n    sendChatBtn.addEventListener('click', handleSend);\r\n    chatInput.addEventListener('keypress', (e) =\u003e {\r\n        if (e.key === 'Enter') handleSend();\r\n    });\r\n\u003c\/script\u003e","brand":"YAKODA","offers":[{"title":"Magnet \/ Grey \/ Chartreuse","offer_id":45348619780211,"sku":"YS-MTIN-GC","price":2640.0,"currency_code":"JPY","in_stock":false},{"title":"Magnet \/ Black \/ Orange","offer_id":45348619812979,"sku":"YS-MTIN-BO","price":2640.0,"currency_code":"JPY","in_stock":false},{"title":"Foam \/ Grey \/ Chartreuse","offer_id":45348619845747,"sku":"YS-FTIN-GC","price":2640.0,"currency_code":"JPY","in_stock":false},{"title":"Foam \/ Black \/ Orange","offer_id":45348619878515,"sku":"YS-FTIN-BO","price":2640.0,"currency_code":"JPY","in_stock":false}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0720\/4002\/2131\/files\/000000000199_EehJnj6.jpg?v=1787649850","url":"https:\/\/waltonflyfish.com\/products\/fly-tin","provider":"Fly Fishing Outfitters WALTON","version":"1.0","type":"link"}