{"id":26204,"date":"2025-10-26T19:32:54","date_gmt":"2025-10-26T10:32:54","guid":{"rendered":"http:\/\/www.tyosuke20xx.com\/blog\/?p=26204"},"modified":"2025-10-26T19:32:55","modified_gmt":"2025-10-26T10:32:55","slug":"yes%e3%82%ad%e3%83%aa%e3%82%b9%e3%83%88bot","status":"publish","type":"post","link":"http:\/\/www.tyosuke20xx.com\/blog\/?p=26204","title":{"rendered":"YES\u30ad\u30ea\u30b9\u30c8BOT"},"content":{"rendered":"\n<pre class=\"wp-block-code\"><code>&lt;!DOCTYPE html>\n&lt;html lang=\"ja\">\n&lt;head>\n  &lt;meta charset=\"utf-8\" \/>\n  &lt;meta name=\"viewport\" content=\"width=device-width, initial-scale=1\" \/>\n  &lt;title>YES\u30ad\u30ea\u30b9\u30c8 BOT&lt;\/title>\n  &lt;!-- Tailwind\uff08CDN\uff09 -->\n  &lt;script src=\"https:\/\/cdn.tailwindcss.com\">&lt;\/script>\n  &lt;!-- Font Awesome\uff08\u30a2\u30a4\u30b3\u30f3\uff09 -->\n  &lt;link href=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/font-awesome\/6.5.0\/css\/all.min.css\" rel=\"stylesheet\">\n  &lt;meta name=\"description\" content=\"YES\u30ad\u30ea\u30b9\u30c8BOT\uff1a\u512a\u3057\u304f\u80cc\u4e2d\u3092\u62bc\u3057\u3066\u304f\u308c\u308b\u30b7\u30f3\u30d7\u30eb\u306a\u30c1\u30e3\u30c3\u30c8\u30dc\u30c3\u30c8\u3002\u4eca\u65e5\u306e\u52b1\u307e\u3057\u3001\u9032\u3080\u3079\u304d\uff1f\u306a\u3069\u3092\u76f8\u8ac7\u3067\u304d\u307e\u3059\u3002\" \/>\n  &lt;style>\n    \/* \u30b9\u30af\u30ed\u30fc\u30eb\u30d0\u30fc\u63a7\u3048\u3081 *\/\n    * { scrollbar-width: thin; scrollbar-color: #cbd5e1 transparent; }\n    *::-webkit-scrollbar { height: 8px; width: 8px; }\n    *::-webkit-scrollbar-thumb { background: #cbd5e1; border-radius: 8px; }\n    \/* \u30d0\u30d6\u30eb\u306e\u4e09\u89d2 *\/\n    .bubble:after{\n      content:\"\"; position:absolute; bottom:-6px; left:16px; border:6px solid transparent; border-top-color:rgba(255,255,255,0.9);\n      filter: drop-shadow(0 1px 0 rgba(15,23,42,.05));\n    }\n    .bubble.me:after{ left:auto; right:16px; border-top-color:#dcfce7; }\n  &lt;\/style>\n&lt;\/head>\n&lt;body class=\"min-h-screen bg-gradient-to-b from-slate-50 to-white text-slate-800\">\n  &lt;!-- \u30b3\u30f3\u30c6\u30ca -->\n  &lt;div class=\"mx-auto max-w-3xl px-4 py-6\">\n    &lt;!-- \u30d8\u30c3\u30c0\u30fc -->\n    &lt;header class=\"flex items-center justify-between rounded-2xl bg-white\/90 backdrop-blur shadow-sm p-4\">\n      &lt;div class=\"flex items-center gap-3\">\n        &lt;div class=\"h-10 w-10 rounded-full bg-emerald-500 text-white grid place-items-center\">\n          &lt;i class=\"fa-solid fa-dove\">&lt;\/i>\n        &lt;\/div>\n        &lt;div>\n          &lt;h1 class=\"text-xl font-bold\">YES\u30ad\u30ea\u30b9\u30c8 BOT&lt;\/h1>\n          &lt;p class=\"text-xs text-slate-500\">\u512a\u3057\u304f\u300cYES\u300d\u3067\u80cc\u4e2d\u3092\u62bc\u3059\u30c1\u30e3\u30c3\u30c8&lt;\/p>\n        &lt;\/div>\n      &lt;\/div>\n      &lt;div class=\"flex items-center gap-2\">\n        &lt;button id=\"btnClear\" class=\"text-xs px-3 py-1.5 rounded-lg bg-slate-100 hover:bg-slate-200 transition\">\n          \u5c65\u6b74\u30af\u30ea\u30a2\n        &lt;\/button>\n        &lt;button id=\"btnExport\" class=\"text-xs px-3 py-1.5 rounded-lg bg-slate-100 hover:bg-slate-200 transition\">\n          \u30a8\u30af\u30b9\u30dd\u30fc\u30c8\n        &lt;\/button>\n        &lt;label class=\"text-xs px-3 py-1.5 rounded-lg bg-slate-100 hover:bg-slate-200 transition cursor-pointer\">\n          \u30a4\u30f3\u30dd\u30fc\u30c8&lt;input id=\"fileImport\" type=\"file\" accept=\"application\/json\" class=\"hidden\">\n        &lt;\/label>\n      &lt;\/div>\n    &lt;\/header>\n\n    &lt;!-- \u30d7\u30ea\u30bb\u30c3\u30c8 -->\n    &lt;section class=\"mt-4 grid grid-cols-2 sm:grid-cols-4 gap-2\">\n      &lt;button class=\"preset chip\">\u4eca\u65e5\u306e\u52b1\u307e\u3057&lt;\/button>\n      &lt;button class=\"preset chip\">\u6311\u6226\u3057\u3066\u3044\u3044\uff1f&lt;\/button>\n      &lt;button class=\"preset chip\">\u8a31\u3057\u3066\u3082\u3044\u3044\uff1f&lt;\/button>\n      &lt;button class=\"preset chip\">\u9032\u3080\u3079\u304d\uff1f&lt;\/button>\n    &lt;\/section>\n\n    &lt;!-- \u30c1\u30e3\u30c3\u30c8 -->\n    &lt;main id=\"chat\" class=\"mt-4 h-&#91;60vh] overflow-y-auto rounded-2xl bg-white\/90 backdrop-blur p-4 shadow-sm space-y-4\">\n      &lt;!-- \u521d\u671f\u30e1\u30c3\u30bb\u30fc\u30b8 -->\n    &lt;\/main>\n\n    &lt;!-- \u5165\u529b\u6b04 -->\n    &lt;form id=\"composer\" class=\"mt-4 flex items-end gap-2\">\n      &lt;textarea id=\"input\" rows=\"1\" placeholder=\"\u3053\u3053\u306b\u76f8\u8ac7\u3092\u66f8\u3044\u3066\u306d\uff08\u4f8b\uff1a\u65b0\u3057\u3044\u3053\u3068\u306b\u6311\u6226\u3057\u3066\u3082\u5927\u4e08\u592b\uff1f\uff09\"\n        class=\"flex-1 resize-none rounded-2xl border border-slate-200 bg-white p-3 focus:outline-none focus:ring-2 focus:ring-emerald-300\">&lt;\/textarea>\n      &lt;button id=\"btnSend\" type=\"submit\" class=\"h-11 px-4 rounded-2xl bg-emerald-500 text-white hover:bg-emerald-600 transition\">\n        &lt;i class=\"fa-solid fa-paper-plane\">&lt;\/i>\n      &lt;\/button>\n    &lt;\/form>\n\n    &lt;!-- \u4f7f\u3044\u65b9 -->\n    &lt;details class=\"mt-4 rounded-2xl bg-slate-50 p-4 text-sm text-slate-600\">\n      &lt;summary class=\"cursor-pointer font-semibold\">\u4f7f\u3044\u65b9&lt;\/summary>\n      &lt;ul class=\"list-disc pl-5 mt-2 space-y-1\">\n        &lt;li>\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u9001\u308b\u3068\u3001YES\u30ad\u30ea\u30b9\u30c8\u304c\u512a\u3057\u304f\u80cc\u4e2d\u3092\u62bc\u3059\u8a00\u8449\u3067\u8fd4\u3057\u307e\u3059\u3002&lt;\/li>\n        &lt;li>&lt;code>\/prayer&lt;\/code> \u3067\u77ed\u3044\u304a\u7948\u308a\u98a8\u30e1\u30c3\u30bb\u30fc\u30b8\u3001&lt;code>\/bless&lt;\/code> \u3067\u795d\u798f\u6587\u3002&lt;\/li>\n        &lt;li>\u5c65\u6b74\u306f\u30d6\u30e9\u30a6\u30b6\u306b\u4fdd\u5b58\u3055\u308c\u307e\u3059\uff08\u30ed\u30fc\u30ab\u30eb\u306e\u307f\uff09\u3002&lt;\/li>\n      &lt;\/ul>\n    &lt;\/details>\n  &lt;\/div>\n\n  &lt;script>\n    \/\/ ====== \u8a2d\u5b9a ======\n    const STORAGE_KEY = 'yeschrist_history_v1';\n\n    \/\/ YES\u30ad\u30ea\u30b9\u30c8\u306e\u8fd4\u7b54\u30c6\u30f3\u30d7\u30ec\n    const YES_OPENERS = &#91;\n      \"\u3042\u306a\u305f\u306e\u5fc3\u306b\u3001\u9759\u304b\u306aYES\u304c\u706f\u3063\u3066\u3044\u307e\u3059\u3002\",\n      \"\u6050\u308c\u305a\u306b\u3001\u3084\u3055\u3057\u3044YES\u3067\u4e00\u6b69\u3092\u3002\",\n      \"\u8ff7\u3044\u306e\u4e2d\u306b\u3044\u3066\u3082\u3001\u5927\u4e08\u592b\u3002\u7b54\u3048\u306fYES\u3067\u3059\u3002\",\n      \"\u5c0f\u3055\u306a\u4fe1\u983c\u304c\u3001\u5927\u304d\u306aYES\u3078\u3068\u80b2\u3061\u307e\u3059\u3002\",\n      \"\u3042\u306a\u305f\u306e\u826f\u304d\u601d\u3044\u306b\u3001YES\u3092\u91cd\u306d\u307e\u3057\u3087\u3046\u3002\"\n    ];\n\n    const YES_ENCOURAGE = &#91;\n      \"\u8a66\u307f\u306f\u611b\u306b\u3088\u3063\u3066\u5c0e\u304b\u308c\u3001\u611b\u306f\u524d\u9032\u306bYES\u3068\u8a00\u3044\u307e\u3059\u3002\",\n      \"\u5b8c\u5168\u3067\u306a\u304f\u3066\u3044\u3044\u3002\u6b69\u304d\u51fa\u3059\u52c7\u6c17\u306bYES\u3002\",\n      \"\u6249\u306f\u53e9\u304f\u8005\u306b\u958b\u304b\u308c\u307e\u3059\u3002\u30ce\u30c3\u30af\u306bYES\u3002\",\n      \"\u3042\u306a\u305f\u306e\u8cdc\u7269\u306f\u96a0\u3055\u305a\u306b\u3001\u5149\u306e\u4e0b\u3078\u3002YES\u3002\",\n      \"\u3084\u3055\u3057\u3055\u3092\u9078\u3076\u5ea6\u306b\u3001\u9053\u306f\u660e\u308b\u304f\u306a\u308a\u307e\u3059\u3002YES\u3002\"\n    ];\n\n    const YES_TAGS = &#91;\n      \"\u5e73\u5b89\u304c\u3042\u308a\u307e\u3059\u3088\u3046\u306b\u3002\",\n      \"\u3042\u306a\u305f\u306f\u4e00\u4eba\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002\",\n      \"\u4eca\u65e5\u306e\u5c0f\u3055\u306a\u4e00\u6b69\u3092\u5927\u5207\u306b\u3002\",\n      \"\u5fc3\u306b\u5149\u3092\u3002\",\n      \"\u795d\u798f\u3068\u3068\u3082\u306b\u3002\"\n    ];\n\n    const PRAYERS = &#91;\n      \"\u5929\u306e\u3084\u3055\u3057\u3055\u304c\u3042\u306a\u305f\u3092\u5305\u307f\u3001\u6b69\u307f\u3092\u7167\u3089\u3057\u307e\u3059\u3088\u3046\u306b\u3002\u30a2\u30fc\u30e1\u30f3\u3002\",\n      \"\u5f31\u3055\u306e\u3068\u304d\u306b\u3053\u305d\u529b\u304c\u6e80\u3061\u307e\u3059\u3088\u3046\u306b\u3002\u30a2\u30fc\u30e1\u30f3\u3002\",\n      \"\u8ff7\u3046\u5fc3\u306b\u9759\u3051\u3055\u304c\u4e0e\u3048\u3089\u308c\u307e\u3059\u3088\u3046\u306b\u3002\u30a2\u30fc\u30e1\u30f3\u3002\"\n    ];\n\n    const BLESS = &#91;\n      \"\u3042\u306a\u305f\u306e\u6c7a\u65ad\u306b\u5e73\u5b89\u304c\u4f34\u3044\u307e\u3059\u3088\u3046\u306b\u3002\",\n      \"\u51fa\u308b\u306b\u3082\u5165\u308b\u306b\u3082\u795d\u798f\u304c\u6e80\u3061\u307e\u3059\u3088\u3046\u306b\u3002\",\n      \"\u4eca\u65e5\u306e\u50cd\u304d\u306b\u6075\u307f\u304c\u3042\u308a\u307e\u3059\u3088\u3046\u306b\u3002\"\n    ];\n\n    \/\/ ====== DOM ======\n    const chat = document.getElementById('chat');\n    const input = document.getElementById('input');\n    const form = document.getElementById('composer');\n    const btnSend = document.getElementById('btnSend');\n    const btnExport = document.getElementById('btnExport');\n    const btnClear = document.getElementById('btnClear');\n    const fileImport = document.getElementById('fileImport');\n    document.querySelectorAll('.preset').forEach(el => el.classList.add(\n      'px-3','py-2','rounded-xl','bg-emerald-50','text-emerald-700','hover:bg-emerald-100','transition','text-sm','chip'\n    ));\n\n    \/\/ ====== \u30e6\u30fc\u30c6\u30a3\u30ea\u30c6\u30a3 ======\n    const nowStr = () => new Date().toLocaleString();\n    const rand = arr => arr&#91;Math.floor(Math.random() * arr.length)];\n    const saveHistory = () => {\n      const items = &#91;...chat.querySelectorAll('&#91;data-msg]')].map(el => ({\n        role: el.dataset.role, text: el.dataset.msg, time: el.dataset.time\n      }));\n      localStorage.setItem(STORAGE_KEY, JSON.stringify(items));\n    };\n    const loadHistory = () => {\n      const raw = localStorage.getItem(STORAGE_KEY);\n      if (!raw) return &#91;];\n      try { return JSON.parse(raw); } catch { return &#91;]; }\n    };\n\n    function appendMessage(role, text, time = nowStr()) {\n      const wrapper = document.createElement('div');\n      wrapper.className = role === 'user'\n        ? 'flex justify-end'\n        : 'flex justify-start';\n\n      const bubble = document.createElement('div');\n      bubble.className = 'relative max-w-&#91;85%] rounded-2xl p-3 bubble shadow-sm ' +\n        (role === 'user' ? 'bg-emerald-100 me' : 'bg-white\/90');\n      bubble.textContent = text;\n\n      const meta = document.createElement('div');\n      meta.className = 'mt-1 text-&#91;10px] text-slate-500 ' + (role === 'user' ? 'text-right' : 'text-left');\n      meta.textContent = time;\n\n      const container = document.createElement('div');\n      container.dataset.msg = text;\n      container.dataset.role = role;\n      container.dataset.time = time;\n      container.className = 'space-y-1';\n      container.appendChild(bubble);\n      container.appendChild(meta);\n\n      wrapper.appendChild(container);\n      chat.appendChild(wrapper);\n      chat.scrollTop = chat.scrollHeight;\n    }\n\n    function systemWelcome() {\n      appendMessage('assistant',\n        '\u3088\u3046\u3053\u305d\u3002YES\u30ad\u30ea\u30b9\u30c8\u306f\u3001\u3042\u306a\u305f\u306e\u826f\u304d\u9858\u3044\u306b\u300cYES\u300d\u3067\u5bc4\u308a\u6dfb\u3044\u307e\u3059\u3002\/prayer \u3067\u77ed\u3044\u304a\u7948\u308a\u3001\/bless \u3067\u795d\u798f\u6587\u304c\u5c4a\u304d\u307e\u3059\u3002');\n    }\n\n    function composeYesReply(userText) {\n      const lower = (userText || '').toLowerCase();\n      let opener = rand(YES_OPENERS);\n      let body = rand(YES_ENCOURAGE);\n      let tag = rand(YES_TAGS);\n\n      \/\/ \u307b\u3093\u306e\u5c11\u3057\u3060\u3051\u6587\u8108\u30b9\u30d1\u30a4\u30b9\n      if (\/&#91;?\uff1f]$\/.test(userText)) {\n        opener = \"\u305d\u306e\u554f\u3044\u304b\u3051\u306b\u3001\u7a4f\u3084\u304b\u306aYES\u304c\u8fd4\u3063\u3066\u3044\u307e\u3059\u3002\";\n      }\n      if (\/(\u8a31|\u3086\u308b)\u3059\/.test(userText)) {\n        body = \"\u8d66\u3057\u306f\u5fc3\u3092\u81ea\u7531\u306b\u3057\u3001\u3042\u306a\u305f\u3092\u524d\u3078\u62bc\u3057\u51fa\u3057\u307e\u3059\u3002YES\u3002\";\n      }\n      if (\/(\u6311\u6226|\u30c1\u30e3\u30ec\u30f3\u30b8|challenge)\/i.test(userText)) {\n        body = \"\u5c0f\u3055\u304f\u3068\u3082\u8e0f\u307f\u51fa\u3059\u4e00\u6b69\u306f\u5c0a\u304f\u3001\u6b21\u306e\u666f\u8272\u3092\u9023\u308c\u3066\u304d\u307e\u3059\u3002YES\u3002\";\n      }\n      if (\/(\u9032|\u3084\u3081|\u8f9e\u3081|\u3084\u308b|\u3084\u3089)\/.test(userText)) {\n        tag = \"\u5e73\u5b89\u306e\u3042\u308b\u307b\u3046\u3078\u3002YES\u3002\";\n      }\n      return `${opener}\\n${body}\\n${tag}`;\n    }\n\n    async function reply(userText) {\n      \/\/ \u30b3\u30de\u30f3\u30c9\n      if (userText.trim().startsWith('\/prayer')) {\n        appendMessage('assistant', rand(PRAYERS));\n        saveHistory(); return;\n      }\n      if (userText.trim().startsWith('\/bless')) {\n        appendMessage('assistant', rand(BLESS));\n        saveHistory(); return;\n      }\n\n      \/\/ YES\u8fd4\u7b54\n      const thinking = document.createElement('div');\n      thinking.className = 'text-xs text-slate-500';\n      thinking.textContent = '\u2026\u8003\u3048\u3066\u3044\u307e\u3059';\n      chat.appendChild(thinking); chat.scrollTop = chat.scrollHeight;\n\n      await new Promise(r => setTimeout(r, 300)); \/\/ \u5c0f\u3055\u306a\u6f14\u51fa\n      thinking.remove();\n\n      appendMessage('assistant', composeYesReply(userText));\n      saveHistory();\n    }\n\n    \/\/ ====== \u30a4\u30d9\u30f3\u30c8 ======\n    form.addEventListener('submit', async (e) => {\n      e.preventDefault();\n      const text = input.value.trim();\n      if (!text) return;\n      appendMessage('user', text);\n      input.value = '';\n      input.style.height = '44px';\n      saveHistory();\n      reply(text);\n    });\n\n    \/\/ \u81ea\u52d5\u30ea\u30b5\u30a4\u30ba\n    input.addEventListener('input', () => {\n      input.style.height = 'auto';\n      input.style.height = Math.min(input.scrollHeight, 160) + 'px';\n    });\n\n    \/\/ \u30d7\u30ea\u30bb\u30c3\u30c8\n    document.querySelectorAll('.preset').forEach(btn => {\n      btn.addEventListener('click', () => {\n        const q = btn.textContent.trim();\n        appendMessage('user', q);\n        saveHistory();\n        reply(q);\n      });\n    });\n\n    \/\/ \u30af\u30ea\u30a2\n    btnClear.addEventListener('click', () => {\n      if (!confirm('\u5c65\u6b74\u3092\u3059\u3079\u3066\u524a\u9664\u3057\u307e\u3059\u304b\uff1f')) return;\n      localStorage.removeItem(STORAGE_KEY);\n      chat.innerHTML = '';\n      systemWelcome();\n    });\n\n    \/\/ \u30a8\u30af\u30b9\u30dd\u30fc\u30c8\n    btnExport.addEventListener('click', () => {\n      const data = localStorage.getItem(STORAGE_KEY) ?? '&#91;]';\n      const blob = new Blob(&#91;data], { type: 'application\/json' });\n      const a = document.createElement('a');\n      a.href = URL.createObjectURL(blob);\n      a.download = `yeschrist_history_${Date.now()}.json`;\n      a.click();\n      URL.revokeObjectURL(a.href);\n    });\n\n    \/\/ \u30a4\u30f3\u30dd\u30fc\u30c8\n    fileImport.addEventListener('change', async (e) => {\n      const file = e.target.files?.&#91;0];\n      if (!file) return;\n      const text = await file.text();\n      try {\n        const arr = JSON.parse(text);\n        if (!Array.isArray(arr)) throw new Error('format');\n        localStorage.setItem(STORAGE_KEY, text);\n        chat.innerHTML = '';\n        arr.forEach(m => appendMessage(m.role, m.text, m.time));\n      } catch {\n        alert('\u30a4\u30f3\u30dd\u30fc\u30c8\u5931\u6557\uff1aJSON\u5f62\u5f0f\u304c\u6b63\u3057\u304f\u3042\u308a\u307e\u305b\u3093\u3002');\n      } finally {\n        fileImport.value = '';\n      }\n    });\n\n    \/\/ ====== \u521d\u671f\u5316 ======\n    (function init() {\n      const hist = loadHistory();\n      if (hist.length === 0) {\n        systemWelcome();\n      } else {\n        hist.forEach(m => appendMessage(m.role, m.text, m.time));\n      }\n      \/\/ \u5165\u529b\u9ad8\u3055\u521d\u671f\n      input.style.height = '44px';\n    })();\n  &lt;\/script>\n&lt;\/body>\n&lt;\/html>\n<\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_uf_show_specific_survey":0,"_uf_disable_surveys":false,"footnotes":""},"categories":[58],"tags":[3],"class_list":["post-26204","post","type-post","status-publish","format-standard","hentry","category-58","tag-programming"],"aioseo_notices":[],"jetpack_featured_media_url":"","_links":{"self":[{"href":"http:\/\/www.tyosuke20xx.com\/blog\/index.php?rest_route=\/wp\/v2\/posts\/26204","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/www.tyosuke20xx.com\/blog\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.tyosuke20xx.com\/blog\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.tyosuke20xx.com\/blog\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.tyosuke20xx.com\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=26204"}],"version-history":[{"count":1,"href":"http:\/\/www.tyosuke20xx.com\/blog\/index.php?rest_route=\/wp\/v2\/posts\/26204\/revisions"}],"predecessor-version":[{"id":26205,"href":"http:\/\/www.tyosuke20xx.com\/blog\/index.php?rest_route=\/wp\/v2\/posts\/26204\/revisions\/26205"}],"wp:attachment":[{"href":"http:\/\/www.tyosuke20xx.com\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=26204"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.tyosuke20xx.com\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=26204"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.tyosuke20xx.com\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=26204"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}