{"product_id":"streamer-hat-coyote","title":"Streamer Hat (Coyote)","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 HEADWEAR\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;\"\u003eStreamer Hat - Coyote\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                「Streamer Hat」は、タフなリップストップコットンを使用したアンストラクチャード（芯なし）の5パネルハットです。\u003cbr\u003e\r\n                背面に調節可能なナイロンウェビングストラップを備え、フラットなツバ部分は自分好みの形に曲げて被ることができます。\r\n            \u003c\/p\u003e\r\n        \u003c\/div\u003e\r\n    \u003c\/div\u003e\r\n\r\n    \u003c!-- Gallery Section --\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;\"\u003eGallery\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\r\n        \u003cdiv style=\"display: flex; flex-wrap: wrap; gap: 20px; justify-content: center; max-width: 900px; margin: 0 auto;\"\u003e\r\n            \u003c!-- Image 1 --\u003e\r\n            \u003cdiv style=\"flex: 1; min-width: 280px; max-width: 45%; text-align: center; margin-bottom: 20px;\"\u003e\r\n                \u003cimg src=\"https:\/\/www.dropbox.com\/scl\/fi\/zgkpowfr22zmf3fovs6xd\/p1.png?rlkey=3m6fwxqpw6eav1or6x7na3lwr\u0026amp;raw=1\" alt=\"[Streamer Hat Coyote 1]\" style=\"width: 100%; height: auto; display: block; border-radius: 8px; box-shadow: 0 4px 10px rgba(0,0,0,0.1);\"\u003e\r\n            \u003c\/div\u003e\r\n            \u003c!-- Image 2 --\u003e\r\n            \u003cdiv style=\"flex: 1; min-width: 280px; max-width: 45%; text-align: center; margin-bottom: 20px;\"\u003e\r\n                \u003cimg src=\"https:\/\/www.dropbox.com\/scl\/fi\/vziqggu1dyikfzpn2c51q\/p2.png?rlkey=drpbx1hadcml1dz2qqxnijo9p\u0026amp;raw=1\" alt=\"[Streamer Hat Coyote 2]\" style=\"width: 100%; height: auto; display: block; border-radius: 8px; box-shadow: 0 4px 10px rgba(0,0,0,0.1);\"\u003e\r\n            \u003c\/div\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: 600px; margin-left: auto; margin-right: auto;\"\u003e\r\n            \u003cul style=\"list-style: none; padding: 0; margin: 0; font-size: 15px; color: #374151;\"\u003e\r\n                \u003cli style=\"margin-bottom: 10px;\"\u003e✓ 耐久性に優れたリップストップコットン\u003c\/li\u003e\r\n                \u003cli style=\"margin-bottom: 10px;\"\u003e✓ 5パネル アンストラクチャード（芯なし）デザイン\u003c\/li\u003e\r\n                \u003cli style=\"margin-bottom: 10px;\"\u003e✓ 調節可能なナイロン製ウェビングストラップ\u003c\/li\u003e\r\n                \u003cli style=\"margin-bottom: 0;\"\u003e✓ 自由に形作れるフラットブリム（平ツバ）\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フリーサイズ (背面ストラップで調節可能)\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リップストップコットン\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コヨーテ (Coyote)\u003c\/td\u003e\r\n                    \u003c\/tr\u003e\r\n                \u003c\/tbody\u003e\r\n            \u003c\/table\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                リップストップコットンの質感がたまらない5パネルハット。フロントパネルに芯がない（アンストラクチャード）ため頭に柔らかくフィットし、被らない時はクシャッと鞄にしまえるラフさが魅力です。\u003cbr\u003e\u003cbr\u003e\r\n                ツバがフラットな仕様ですが、柔らかいので自分好みのカーブに曲げることも可能。コヨーテカラーはどんなウェアにも合わせやすく、釣り場から普段の街歩きまで、あらゆるアウトドアシーンで活躍してくれます！\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スタッフです。お客様は「Streamer Hat - Coyote」という商品を見ています。この商品は、耐久性のあるリップストップコットン素材を使用した芯なしの5パネルハットで、調節可能なナイロンウェビングストラップと、自由に曲げられるフラットブリム（平ツバ）が特徴です。サイズはフリーサイズです。お客様からの質問に対し、丁寧でフレンドリーなトーンで短めに（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":"Default Title","offer_id":45348792565875,"sku":"YS-Streamer-Coy","price":7040.0,"currency_code":"JPY","in_stock":false}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0720\/4002\/2131\/files\/000000000871_Hc6TBvF.jpg?v=1787711957","url":"https:\/\/waltonflyfish.com\/products\/streamer-hat-coyote","provider":"Fly Fishing Outfitters WALTON","version":"1.0","type":"link"}