{"id":26300,"date":"2026-04-29T15:37:14","date_gmt":"2026-04-29T06:37:14","guid":{"rendered":"http:\/\/www.tyosuke20xx.com\/blog\/?p=26300"},"modified":"2026-04-29T15:37:16","modified_gmt":"2026-04-29T06:37:16","slug":"%e3%83%8d%e3%82%bf%e7%a5%9eai-pro-%e3%82%a2%e3%82%a4%e3%83%87%e3%82%a2%e3%83%a1%e3%83%bc%e3%82%ab%e3%83%bc","status":"publish","type":"post","link":"http:\/\/www.tyosuke20xx.com\/blog\/?p=26300","title":{"rendered":"\u30cd\u30bf\u795eAI Pro &#8211; \u30a2\u30a4\u30c7\u30a2\u30e1\u30fc\u30ab\u30fc"},"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.0\" \/>\n  &lt;title>\u30cd\u30bf\u795eAI Pro - \u30a2\u30a4\u30c7\u30a2\u30e1\u30fc\u30ab\u30fc&lt;\/title>\n\n  &lt;style>\n    :root {\n      --bg: #070914;\n      --bg2: #111831;\n      --card: rgba(255, 255, 255, 0.08);\n      --card2: rgba(255, 255, 255, 0.13);\n      --text: #f5f7ff;\n      --muted: #aeb8df;\n      --line: rgba(255, 255, 255, 0.16);\n      --primary: #7c5cff;\n      --cyan: #00d4ff;\n      --green: #38ffad;\n      --yellow: #ffd35c;\n      --red: #ff5c7c;\n      --shadow: 0 22px 55px rgba(0, 0, 0, 0.35);\n      --radius: 22px;\n    }\n\n    body.light {\n      --bg: #eef2ff;\n      --bg2: #ffffff;\n      --card: rgba(255, 255, 255, 0.8);\n      --card2: rgba(255, 255, 255, 0.95);\n      --text: #151829;\n      --muted: #566179;\n      --line: rgba(20, 30, 60, 0.14);\n      --shadow: 0 18px 45px rgba(40, 60, 110, 0.16);\n    }\n\n    * {\n      box-sizing: border-box;\n    }\n\n    body {\n      margin: 0;\n      min-height: 100vh;\n      font-family: \"Segoe UI\", \"Hiragino Sans\", \"Yu Gothic\", sans-serif;\n      color: var(--text);\n      background:\n        radial-gradient(circle at 20% 10%, rgba(124, 92, 255, 0.32), transparent 28%),\n        radial-gradient(circle at 90% 20%, rgba(0, 212, 255, 0.24), transparent 28%),\n        radial-gradient(circle at 50% 100%, rgba(255, 92, 124, 0.15), transparent 32%),\n        linear-gradient(135deg, var(--bg), var(--bg2));\n      transition: 0.25s;\n    }\n\n    button,\n    input,\n    select,\n    textarea {\n      font-family: inherit;\n    }\n\n    button {\n      border: 1px solid var(--line);\n      border-radius: 14px;\n      background: var(--card2);\n      color: var(--text);\n      padding: 11px 14px;\n      font-weight: 800;\n      cursor: pointer;\n      transition: 0.2s;\n      backdrop-filter: blur(12px);\n    }\n\n    button:hover {\n      transform: translateY(-2px);\n      filter: brightness(1.08);\n    }\n\n    .btn-main {\n      border: none;\n      background: linear-gradient(135deg, var(--primary), var(--cyan));\n      color: white;\n      box-shadow: 0 16px 35px rgba(0, 212, 255, 0.2);\n    }\n\n    .btn-green {\n      border: none;\n      background: linear-gradient(135deg, #13bf84, var(--green));\n      color: #06120d;\n    }\n\n    .btn-red {\n      border-color: rgba(255, 92, 124, 0.4);\n      background: rgba(255, 92, 124, 0.14);\n    }\n\n    .app {\n      width: min(1380px, 94%);\n      margin: 0 auto;\n      padding: 28px 0 70px;\n    }\n\n    header {\n      display: flex;\n      justify-content: space-between;\n      gap: 18px;\n      align-items: center;\n      margin-bottom: 22px;\n    }\n\n    .brand {\n      display: flex;\n      align-items: center;\n      gap: 14px;\n    }\n\n    .logo {\n      width: 58px;\n      height: 58px;\n      border-radius: 20px;\n      background: linear-gradient(135deg, var(--primary), var(--cyan));\n      display: grid;\n      place-items: center;\n      font-size: 30px;\n      box-shadow: 0 20px 45px rgba(124, 92, 255, 0.35);\n    }\n\n    h1, h2, h3, h4, p {\n      margin-top: 0;\n    }\n\n    .brand h1 {\n      margin: 0;\n      font-size: clamp(27px, 4vw, 46px);\n      letter-spacing: 0.03em;\n    }\n\n    .brand p {\n      margin: 4px 0 0;\n      color: var(--muted);\n      font-size: 14px;\n    }\n\n    .header-actions {\n      display: flex;\n      gap: 10px;\n      flex-wrap: wrap;\n      justify-content: flex-end;\n    }\n\n    .hero {\n      border: 1px solid var(--line);\n      background: var(--card);\n      border-radius: var(--radius);\n      box-shadow: var(--shadow);\n      backdrop-filter: blur(16px);\n      padding: 26px;\n      margin-bottom: 22px;\n      overflow: hidden;\n      position: relative;\n    }\n\n    .hero::after {\n      content: \"\";\n      position: absolute;\n      width: 320px;\n      height: 320px;\n      right: -120px;\n      bottom: -160px;\n      border-radius: 50%;\n      background: rgba(0, 212, 255, 0.13);\n      filter: blur(8px);\n    }\n\n    .hero h2 {\n      font-size: clamp(24px, 3vw, 40px);\n      margin-bottom: 10px;\n      line-height: 1.35;\n    }\n\n    .hero p {\n      color: var(--muted);\n      line-height: 1.8;\n      max-width: 900px;\n      margin-bottom: 0;\n    }\n\n    .stats {\n      display: grid;\n      grid-template-columns: repeat(4, 1fr);\n      gap: 14px;\n      margin-bottom: 22px;\n    }\n\n    .stat {\n      border: 1px solid var(--line);\n      background: var(--card);\n      border-radius: 18px;\n      padding: 16px;\n      box-shadow: var(--shadow);\n    }\n\n    .stat strong {\n      display: block;\n      font-size: 24px;\n      margin-bottom: 3px;\n    }\n\n    .stat span {\n      color: var(--muted);\n      font-size: 13px;\n    }\n\n    .layout {\n      display: grid;\n      grid-template-columns: 420px 1fr;\n      gap: 22px;\n      align-items: start;\n    }\n\n    .panel {\n      border: 1px solid var(--line);\n      background: var(--card);\n      border-radius: var(--radius);\n      box-shadow: var(--shadow);\n      backdrop-filter: blur(16px);\n      overflow: hidden;\n    }\n\n    .panel-header {\n      padding: 18px 20px;\n      border-bottom: 1px solid var(--line);\n      display: flex;\n      justify-content: space-between;\n      gap: 12px;\n      align-items: center;\n    }\n\n    .panel-header h3 {\n      margin: 0;\n      font-size: 19px;\n    }\n\n    .panel-body {\n      padding: 20px;\n    }\n\n    .badge {\n      display: inline-flex;\n      align-items: center;\n      gap: 6px;\n      padding: 6px 10px;\n      border-radius: 999px;\n      background: linear-gradient(135deg, var(--green), var(--cyan));\n      color: #06121c;\n      font-size: 12px;\n      font-weight: 900;\n      white-space: nowrap;\n    }\n\n    .form-group {\n      margin-bottom: 16px;\n    }\n\n    label {\n      display: block;\n      color: var(--muted);\n      font-size: 13px;\n      font-weight: 800;\n      margin-bottom: 8px;\n    }\n\n    input,\n    select,\n    textarea {\n      width: 100%;\n      border: 1px solid var(--line);\n      background: rgba(0, 0, 0, 0.22);\n      color: var(--text);\n      border-radius: 14px;\n      padding: 12px 13px;\n      outline: none;\n      font-size: 15px;\n      transition: 0.2s;\n    }\n\n    body.light input,\n    body.light select,\n    body.light textarea {\n      background: rgba(255, 255, 255, 0.85);\n    }\n\n    select option {\n      background: #10162a;\n      color: white;\n    }\n\n    input:focus,\n    select:focus,\n    textarea:focus {\n      border-color: rgba(0, 212, 255, 0.85);\n      box-shadow: 0 0 0 4px rgba(0, 212, 255, 0.12);\n    }\n\n    textarea {\n      min-height: 105px;\n      resize: vertical;\n      line-height: 1.7;\n    }\n\n    .two {\n      display: grid;\n      grid-template-columns: 1fr 1fr;\n      gap: 12px;\n    }\n\n    .chips {\n      display: flex;\n      flex-wrap: wrap;\n      gap: 8px;\n      margin-top: 10px;\n    }\n\n    .chip {\n      border: 1px solid var(--line);\n      background: rgba(255, 255, 255, 0.08);\n      color: var(--muted);\n      border-radius: 999px;\n      padding: 8px 10px;\n      font-size: 12px;\n      font-weight: 800;\n      cursor: pointer;\n      transition: 0.2s;\n    }\n\n    .chip:hover {\n      color: var(--text);\n      border-color: rgba(0, 212, 255, 0.7);\n      transform: translateY(-1px);\n    }\n\n    .button-grid {\n      display: grid;\n      grid-template-columns: 1fr 1fr;\n      gap: 10px;\n      margin-top: 16px;\n    }\n\n    .button-grid .wide-btn {\n      grid-column: 1 \/ -1;\n    }\n\n    .result-tools {\n      display: flex;\n      flex-wrap: wrap;\n      gap: 8px;\n      justify-content: flex-end;\n    }\n\n    .empty {\n      text-align: center;\n      padding: 70px 24px;\n      color: var(--muted);\n    }\n\n    .empty .icon {\n      font-size: 64px;\n      margin-bottom: 12px;\n    }\n\n    .idea-list {\n      display: grid;\n      gap: 16px;\n    }\n\n    .idea-card {\n      border: 1px solid var(--line);\n      background: rgba(0, 0, 0, 0.18);\n      border-radius: 20px;\n      overflow: hidden;\n    }\n\n    body.light .idea-card {\n      background: rgba(255, 255, 255, 0.78);\n    }\n\n    .idea-top {\n      padding: 20px;\n      border-bottom: 1px solid var(--line);\n      display: grid;\n      grid-template-columns: 1fr auto;\n      gap: 15px;\n      align-items: start;\n    }\n\n    .idea-title {\n      margin: 0;\n      font-size: clamp(24px, 3vw, 36px);\n      line-height: 1.25;\n    }\n\n    .meta {\n      display: flex;\n      flex-wrap: wrap;\n      gap: 8px;\n      margin-top: 10px;\n    }\n\n    .pill {\n      font-size: 12px;\n      font-weight: 900;\n      padding: 6px 9px;\n      border-radius: 999px;\n      border: 1px solid var(--line);\n      color: var(--muted);\n      background: rgba(255,255,255,0.07);\n    }\n\n    .score-box {\n      width: 96px;\n      text-align: center;\n      padding: 12px;\n      border-radius: 18px;\n      background: linear-gradient(135deg, rgba(124, 92, 255, 0.35), rgba(0, 212, 255, 0.24));\n      border: 1px solid var(--line);\n    }\n\n    .score-box strong {\n      display: block;\n      font-size: 26px;\n    }\n\n    .score-box span {\n      color: var(--muted);\n      font-size: 12px;\n      font-weight: 800;\n    }\n\n    .catch {\n      padding: 16px 20px;\n      font-size: 17px;\n      line-height: 1.7;\n      background: rgba(255, 255, 255, 0.07);\n      border-bottom: 1px solid var(--line);\n    }\n\n    .idea-body {\n      padding: 20px;\n    }\n\n    .sections {\n      display: grid;\n      grid-template-columns: repeat(2, minmax(0, 1fr));\n      gap: 14px;\n    }\n\n    .section {\n      border: 1px solid var(--line);\n      border-radius: 17px;\n      padding: 16px;\n      background: rgba(0, 0, 0, 0.18);\n    }\n\n    body.light .section {\n      background: rgba(255, 255, 255, 0.62);\n    }\n\n    .section.wide {\n      grid-column: 1 \/ -1;\n    }\n\n    .section h4 {\n      margin: 0 0 10px;\n      font-size: 15px;\n    }\n\n    .section p,\n    .section li {\n      color: var(--muted);\n      line-height: 1.75;\n      font-size: 14px;\n    }\n\n    .section p {\n      margin-bottom: 0;\n    }\n\n    .section ul,\n    .section ol {\n      margin: 0;\n      padding-left: 22px;\n    }\n\n    .idea-actions {\n      display: flex;\n      flex-wrap: wrap;\n      gap: 8px;\n      padding: 0 20px 20px;\n    }\n\n    .history-controls {\n      display: grid;\n      grid-template-columns: 1fr 180px;\n      gap: 10px;\n      margin-bottom: 14px;\n    }\n\n    .history-list {\n      display: grid;\n      gap: 10px;\n    }\n\n    .history-item {\n      border: 1px solid var(--line);\n      border-radius: 16px;\n      padding: 13px;\n      cursor: pointer;\n      background: rgba(0, 0, 0, 0.15);\n      transition: 0.2s;\n    }\n\n    body.light .history-item {\n      background: rgba(255, 255, 255, 0.7);\n    }\n\n    .history-item:hover {\n      transform: translateY(-2px);\n      border-color: rgba(0, 212, 255, 0.6);\n    }\n\n    .history-item strong {\n      display: block;\n      margin-bottom: 5px;\n    }\n\n    .history-item small {\n      color: var(--muted);\n    }\n\n    .toast {\n      position: fixed;\n      right: 20px;\n      bottom: 20px;\n      background: rgba(10, 15, 30, 0.94);\n      color: white;\n      border: 1px solid rgba(255,255,255,0.16);\n      border-radius: 16px;\n      padding: 14px 18px;\n      box-shadow: var(--shadow);\n      opacity: 0;\n      transform: translateY(20px);\n      pointer-events: none;\n      transition: 0.25s;\n      z-index: 100;\n    }\n\n    .toast.show {\n      opacity: 1;\n      transform: translateY(0);\n    }\n\n    .footer {\n      margin-top: 28px;\n      text-align: center;\n      color: var(--muted);\n      font-size: 13px;\n    }\n\n    @media (max-width: 1050px) {\n      header {\n        flex-direction: column;\n        align-items: flex-start;\n      }\n\n      .layout {\n        grid-template-columns: 1fr;\n      }\n\n      .stats {\n        grid-template-columns: repeat(2, 1fr);\n      }\n\n      .sections {\n        grid-template-columns: 1fr;\n      }\n\n      .idea-top {\n        grid-template-columns: 1fr;\n      }\n\n      .score-box {\n        width: 100%;\n      }\n    }\n\n    @media (max-width: 620px) {\n      .two,\n      .button-grid,\n      .history-controls,\n      .stats {\n        grid-template-columns: 1fr;\n      }\n\n      .header-actions {\n        width: 100%;\n      }\n\n      .header-actions button {\n        flex: 1;\n      }\n    }\n  &lt;\/style>\n&lt;\/head>\n\n&lt;body>\n  &lt;div class=\"app\">\n    &lt;header>\n      &lt;div class=\"brand\">\n        &lt;div class=\"logo\">\ud83d\udca1&lt;\/div>\n        &lt;div>\n          &lt;h1>\u30cd\u30bf\u795eAI Pro&lt;\/h1>\n          &lt;p>API\u4e0d\u8981\u3002\u30d6\u30e9\u30a6\u30b6\u3060\u3051\u3067\u52d5\u304f\u5275\u4f5c\u30fbWeb\u30b5\u30fc\u30d3\u30b9\u4f01\u753b\u30e1\u30fc\u30ab\u30fc&lt;\/p>\n        &lt;\/div>\n      &lt;\/div>\n\n      &lt;div class=\"header-actions\">\n        &lt;button onclick=\"toggleTheme()\">\u30c6\u30fc\u30de\u5207\u66ff&lt;\/button>\n        &lt;button onclick=\"downloadText()\">TXT\u51fa\u529b&lt;\/button>\n        &lt;button onclick=\"downloadJSON()\">JSON\u51fa\u529b&lt;\/button>\n        &lt;button class=\"btn-red\" onclick=\"clearAll()\">\u5168\u524a\u9664&lt;\/button>\n      &lt;\/div>\n    &lt;\/header>\n\n    &lt;section class=\"hero\">\n      &lt;h2>API\u306a\u3057\u3067\u3082\u3001\u304b\u306a\u308a\u4f7f\u3048\u308b\u300c\u4f01\u753b\u66f8\u751f\u6210\u30c4\u30fc\u30eb\u300d\u306b\u3059\u308b\u3002&lt;\/h2>\n      &lt;p>\n        \u5916\u90e8AI\u306b\u63a5\u7d9a\u305b\u305a\u3001\u30ed\u30fc\u30ab\u30eb\u306e\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u30fb\u30e9\u30f3\u30c0\u30e0\u751f\u6210\u30fb\u6761\u4ef6\u5206\u5c90\u3060\u3051\u3067\u3001Web\u30b5\u30fc\u30d3\u30b9\u3001AI\u30c4\u30fc\u30eb\u3001\u30b2\u30fc\u30e0\u3001\u5c0f\u8aac\u3001SNS\u306a\u3069\u306e\u4f01\u753b\u6848\u3092\u4f5c\u308a\u307e\u3059\u3002\n        API\u6599\u91d1\u3082\u30ad\u30fc\u7ba1\u7406\u3082\u4e0d\u8981\u3067\u3059\u3002\u307e\u305a\u4f5c\u54c1\u3068\u3057\u3066\u516c\u958b\u3057\u3084\u3059\u3044\u5f62\u3067\u3059\u3002\n      &lt;\/p>\n    &lt;\/section>\n\n    &lt;section class=\"stats\">\n      &lt;div class=\"stat\">\n        &lt;strong id=\"statIdeas\">0&lt;\/strong>\n        &lt;span>\u4eca\u56de\u751f\u6210\u3057\u305f\u6848&lt;\/span>\n      &lt;\/div>\n      &lt;div class=\"stat\">\n        &lt;strong id=\"statSaved\">0&lt;\/strong>\n        &lt;span>\u4fdd\u5b58\u6e08\u307f\u30a2\u30a4\u30c7\u30a2&lt;\/span>\n      &lt;\/div>\n      &lt;div class=\"stat\">\n        &lt;strong>0\u5186&lt;\/strong>\n        &lt;span>API\u5229\u7528\u6599&lt;\/span>\n      &lt;\/div>\n      &lt;div class=\"stat\">\n        &lt;strong>100%&lt;\/strong>\n        &lt;span>\u30ed\u30fc\u30ab\u30eb\u52d5\u4f5c&lt;\/span>\n      &lt;\/div>\n    &lt;\/section>\n\n    &lt;main class=\"layout\">\n      &lt;section class=\"panel\">\n        &lt;div class=\"panel-header\">\n          &lt;h3>\u751f\u6210\u6761\u4ef6&lt;\/h3>\n          &lt;span class=\"badge\">NO API&lt;\/span>\n        &lt;\/div>\n\n        &lt;div class=\"panel-body\">\n          &lt;div class=\"two\">\n            &lt;div class=\"form-group\">\n              &lt;label for=\"genre\">\u30b8\u30e3\u30f3\u30eb&lt;\/label>\n              &lt;select id=\"genre\">\n                &lt;option>Web\u30b5\u30fc\u30d3\u30b9&lt;\/option>\n                &lt;option>AI\u30c4\u30fc\u30eb&lt;\/option>\n                &lt;option>\u30b2\u30fc\u30e0&lt;\/option>\n                &lt;option>\u5c0f\u8aac&lt;\/option>\n                &lt;option>SNS&lt;\/option>\n                &lt;option>\u52d5\u753b\u30b5\u30a4\u30c8&lt;\/option>\n                &lt;option>\u30dd\u30fc\u30c8\u30d5\u30a9\u30ea\u30aa&lt;\/option>\n                &lt;option>\u4fbf\u5229\u30c4\u30fc\u30eb&lt;\/option>\n                &lt;option>\u5b66\u7fd2\u30b5\u30fc\u30d3\u30b9&lt;\/option>\n                &lt;option>\u5275\u4f5c\u652f\u63f4&lt;\/option>\n              &lt;\/select>\n            &lt;\/div>\n\n            &lt;div class=\"form-group\">\n              &lt;label for=\"mood\">\u96f0\u56f2\u6c17&lt;\/label>\n              &lt;select id=\"mood\">\n                &lt;option>\u304b\u3063\u3053\u3044\u3044&lt;\/option>\n                &lt;option>\u3084\u3055\u3057\u3044&lt;\/option>\n                &lt;option>\u8fd1\u672a\u6765&lt;\/option>\n                &lt;option>\u30d5\u30a1\u30f3\u30bf\u30b8\u30fc&lt;\/option>\n                &lt;option>\u30b7\u30f3\u30d7\u30eb&lt;\/option>\n                &lt;option>\u9ad8\u7d1a\u611f&lt;\/option>\n                &lt;option>\u304b\u308f\u3044\u3044&lt;\/option>\n                &lt;option>\u30c0\u30fc\u30af&lt;\/option>\n                &lt;option>\u5b9f\u7528\u7684&lt;\/option>\n                &lt;option>\u30b2\u30fc\u30e0\u98a8&lt;\/option>\n              &lt;\/select>\n            &lt;\/div>\n          &lt;\/div>\n\n          &lt;div class=\"two\">\n            &lt;div class=\"form-group\">\n              &lt;label for=\"level\">\u958b\u767a\u96e3\u6613\u5ea6&lt;\/label>\n              &lt;select id=\"level\">\n                &lt;option>\u7c21\u5358&lt;\/option>\n                &lt;option>\u666e\u901a&lt;\/option>\n                &lt;option>\u672c\u683c&lt;\/option>\n                &lt;option>\u8d85\u672c\u683c&lt;\/option>\n              &lt;\/select>\n            &lt;\/div>\n\n            &lt;div class=\"form-group\">\n              &lt;label for=\"target\">\u30bf\u30fc\u30b2\u30c3\u30c8&lt;\/label>\n              &lt;select id=\"target\">\n                &lt;option>\u500b\u4eba\u30af\u30ea\u30a8\u30a4\u30bf\u30fc&lt;\/option>\n                &lt;option>\u5b66\u751f&lt;\/option>\n                &lt;option>\u793e\u4f1a\u4eba&lt;\/option>\n                &lt;option>\u5728\u5b85\u30ef\u30fc\u30ab\u30fc&lt;\/option>\n                &lt;option>\u30b2\u30fc\u30e0\u5236\u4f5c\u8005&lt;\/option>\n                &lt;option>\u5c0f\u8aac\u5bb6\u5fd7\u671b&lt;\/option>\n                &lt;option>\u914d\u4fe1\u8005&lt;\/option>\n                &lt;option>\u521d\u5fc3\u8005&lt;\/option>\n                &lt;option>\u526f\u696d\u3057\u305f\u3044\u4eba&lt;\/option>\n              &lt;\/select>\n            &lt;\/div>\n          &lt;\/div>\n\n          &lt;div class=\"two\">\n            &lt;div class=\"form-group\">\n              &lt;label for=\"amount\">\u751f\u6210\u6570&lt;\/label>\n              &lt;select id=\"amount\">\n                &lt;option value=\"1\">1\u500b&lt;\/option>\n                &lt;option value=\"3\" selected>3\u500b&lt;\/option>\n                &lt;option value=\"5\">5\u500b&lt;\/option>\n              &lt;\/select>\n            &lt;\/div>\n\n            &lt;div class=\"form-group\">\n              &lt;label for=\"style\">\u51fa\u529b\u30b9\u30bf\u30a4\u30eb&lt;\/label>\n              &lt;select id=\"style\">\n                &lt;option>\u4f01\u753b\u66f8\u98a8&lt;\/option>\n                &lt;option>\u30b5\u30fc\u30d3\u30b9\u7d39\u4ecb\u98a8&lt;\/option>\n                &lt;option>\u958b\u767a\u30e1\u30e2\u98a8&lt;\/option>\n                &lt;option>\u30d4\u30c3\u30c1\u8cc7\u6599\u98a8&lt;\/option>\n              &lt;\/select>\n            &lt;\/div>\n          &lt;\/div>\n\n          &lt;div class=\"form-group\">\n            &lt;label for=\"keywords\">\u30ad\u30fc\u30ef\u30fc\u30c9&lt;\/label>\n            &lt;textarea id=\"keywords\" placeholder=\"\u4f8b\uff1aAI \/ RPG \/ SNS \/ \u30e1\u30e2 \/ \u4ed5\u4e8b \/ \u5275\u4f5c \/ \u30dd\u30fc\u30c8\u30d5\u30a9\u30ea\u30aa\">&lt;\/textarea>\n\n            &lt;div class=\"chips\">\n              &lt;span class=\"chip\" onclick=\"addKeyword('AI')\">AI&lt;\/span>\n              &lt;span class=\"chip\" onclick=\"addKeyword('RPG')\">RPG&lt;\/span>\n              &lt;span class=\"chip\" onclick=\"addKeyword('SNS')\">SNS&lt;\/span>\n              &lt;span class=\"chip\" onclick=\"addKeyword('\u5c0f\u8aac')\">\u5c0f\u8aac&lt;\/span>\n              &lt;span class=\"chip\" onclick=\"addKeyword('\u4ed5\u4e8b')\">\u4ed5\u4e8b&lt;\/span>\n              &lt;span class=\"chip\" onclick=\"addKeyword('\u30e1\u30e2')\">\u30e1\u30e2&lt;\/span>\n              &lt;span class=\"chip\" onclick=\"addKeyword('\u30dd\u30fc\u30c8\u30d5\u30a9\u30ea\u30aa')\">\u30dd\u30fc\u30c8\u30d5\u30a9\u30ea\u30aa&lt;\/span>\n              &lt;span class=\"chip\" onclick=\"addKeyword('\u52d5\u753b')\">\u52d5\u753b&lt;\/span>\n              &lt;span class=\"chip\" onclick=\"addKeyword('\u5b66\u7fd2')\">\u5b66\u7fd2&lt;\/span>\n              &lt;span class=\"chip\" onclick=\"addKeyword('\u30b2\u30fc\u30e0\u958b\u767a')\">\u30b2\u30fc\u30e0\u958b\u767a&lt;\/span>\n            &lt;\/div>\n          &lt;\/div>\n\n          &lt;div class=\"form-group\">\n            &lt;label for=\"problem\">\u89e3\u6c7a\u3057\u305f\u3044\u60a9\u307f&lt;\/label>\n            &lt;textarea id=\"problem\" placeholder=\"\u4f8b\uff1a\u4f55\u3092\u4f5c\u308c\u3070\u3044\u3044\u304b\u308f\u304b\u3089\u306a\u3044\u3002\u4f5c\u696d\u304c\u7d9a\u304b\u306a\u3044\u3002\u30a2\u30a4\u30c7\u30a2\u3092\u6574\u7406\u3067\u304d\u306a\u3044\u3002\">&lt;\/textarea>\n          &lt;\/div>\n\n          &lt;div class=\"button-grid\">\n            &lt;button class=\"btn-main wide-btn\" onclick=\"generateIdeas()\">\u30a2\u30a4\u30c7\u30a2\u751f\u6210&lt;\/button>\n            &lt;button onclick=\"randomSet()\">\u30e9\u30f3\u30c0\u30e0\u6761\u4ef6&lt;\/button>\n            &lt;button onclick=\"makePractical()\">\u73fe\u5b9f\u7684\u306b\u3059\u308b&lt;\/button>\n            &lt;button onclick=\"makeFantasy()\">\u6d3e\u624b\u306b\u3059\u308b&lt;\/button>\n            &lt;button onclick=\"clearForm()\">\u5165\u529b\u30af\u30ea\u30a2&lt;\/button>\n          &lt;\/div>\n        &lt;\/div>\n      &lt;\/section>\n\n      &lt;section class=\"panel\">\n        &lt;div class=\"panel-header\">\n          &lt;h3>\u751f\u6210\u7d50\u679c&lt;\/h3>\n          &lt;div class=\"result-tools\">\n            &lt;button onclick=\"copyAll()\">\u30b3\u30d4\u30fc&lt;\/button>\n            &lt;button class=\"btn-green\" onclick=\"saveAll()\">\u5168\u90e8\u4fdd\u5b58&lt;\/button>\n          &lt;\/div>\n        &lt;\/div>\n\n        &lt;div class=\"panel-body\">\n          &lt;div id=\"result\">\n            &lt;div class=\"empty\">\n              &lt;div class=\"icon\">\ud83e\udde0&lt;\/div>\n              &lt;h2>\u307e\u3060\u30a2\u30a4\u30c7\u30a2\u306f\u3042\u308a\u307e\u305b\u3093&lt;\/h2>\n              &lt;p>\u5de6\u306e\u6761\u4ef6\u3092\u5165\u308c\u3066\u300c\u30a2\u30a4\u30c7\u30a2\u751f\u6210\u300d\u3092\u62bc\u3057\u3066\u304f\u3060\u3055\u3044\u3002&lt;\/p>\n            &lt;\/div>\n          &lt;\/div>\n        &lt;\/div>\n      &lt;\/section>\n    &lt;\/main>\n\n    &lt;section class=\"panel\" style=\"margin-top:22px;\">\n      &lt;div class=\"panel-header\">\n        &lt;h3>\u4fdd\u5b58\u3057\u305f\u30a2\u30a4\u30c7\u30a2&lt;\/h3>\n        &lt;span class=\"badge\" id=\"savedCount\">0\u4ef6&lt;\/span>\n      &lt;\/div>\n\n      &lt;div class=\"panel-body\">\n        &lt;div class=\"history-controls\">\n          &lt;input id=\"historySearch\" placeholder=\"\u4fdd\u5b58\u30a2\u30a4\u30c7\u30a2\u3092\u691c\u7d22\" oninput=\"renderHistory()\" \/>\n          &lt;select id=\"historyGenre\" onchange=\"renderHistory()\">\n            &lt;option value=\"all\">\u5168\u30b8\u30e3\u30f3\u30eb&lt;\/option>\n            &lt;option>Web\u30b5\u30fc\u30d3\u30b9&lt;\/option>\n            &lt;option>AI\u30c4\u30fc\u30eb&lt;\/option>\n            &lt;option>\u30b2\u30fc\u30e0&lt;\/option>\n            &lt;option>\u5c0f\u8aac&lt;\/option>\n            &lt;option>SNS&lt;\/option>\n            &lt;option>\u52d5\u753b\u30b5\u30a4\u30c8&lt;\/option>\n            &lt;option>\u30dd\u30fc\u30c8\u30d5\u30a9\u30ea\u30aa&lt;\/option>\n            &lt;option>\u4fbf\u5229\u30c4\u30fc\u30eb&lt;\/option>\n            &lt;option>\u5b66\u7fd2\u30b5\u30fc\u30d3\u30b9&lt;\/option>\n            &lt;option>\u5275\u4f5c\u652f\u63f4&lt;\/option>\n          &lt;\/select>\n        &lt;\/div>\n\n        &lt;div class=\"history-list\" id=\"historyList\">&lt;\/div>\n      &lt;\/div>\n    &lt;\/section>\n\n    &lt;div class=\"footer\">\n      \u30cd\u30bf\u795eAI Pro \/ API\u306a\u3057\u30ed\u30fc\u30ab\u30eb\u7248 \/ HTML\u30fbCSS\u30fbJavaScript\u306e\u307f\n    &lt;\/div>\n  &lt;\/div>\n\n  &lt;div class=\"toast\" id=\"toast\">\u5b8c\u4e86\u3057\u307e\u3057\u305f&lt;\/div>\n\n  &lt;script>\n    const DATA = {\n      titleHeads: &#91;\n        \"Nova\", \"Idea\", \"Neta\", \"Mira\", \"Chrono\", \"Elder\", \"Prompt\", \"Vision\",\n        \"Craft\", \"Yume\", \"Neo\", \"Astra\", \"Luna\", \"Meta\", \"Spark\", \"Quest\"\n      ],\n\n      titleTails: {\n        \"Web\u30b5\u30fc\u30d3\u30b9\": &#91;\"Hub\", \"Works\", \"Base\", \"Cloud\", \"Studio\", \"Panel\", \"Link\", \"Board\"],\n        \"AI\u30c4\u30fc\u30eb\": &#91;\"AI\", \"Brain\", \"Agent\", \"Prompt\", \"Copilot\", \"Mind\", \"Assist\", \"Genius\"],\n        \"\u30b2\u30fc\u30e0\": &#91;\"Quest\", \"Chronicle\", \"Saga\", \"Blade\", \"Dungeon\", \"Legend\", \"Arc\", \"World\"],\n        \"\u5c0f\u8aac\": &#91;\"Novel\", \"Story\", \"Tale\", \"Script\", \"Lore\", \"Ink\", \"Scene\", \"Dream\"],\n        \"SNS\": &#91;\"Verse\", \"Circle\", \"Post\", \"Talk\", \"Room\", \"Link\", \"Wave\", \"Nest\"],\n        \"\u52d5\u753b\u30b5\u30a4\u30c8\": &#91;\"Tube\", \"Stream\", \"Clip\", \"Vision\", \"Cast\", \"Channel\", \"View\", \"Media\"],\n        \"\u30dd\u30fc\u30c8\u30d5\u30a9\u30ea\u30aa\": &#91;\"Portfolio\", \"Gallery\", \"Works\", \"Profile\", \"Card\", \"Showcase\", \"Archive\", \"Page\"],\n        \"\u4fbf\u5229\u30c4\u30fc\u30eb\": &#91;\"Tool\", \"Memo\", \"Desk\", \"Kit\", \"Task\", \"Quick\", \"Utility\", \"Simple\"],\n        \"\u5b66\u7fd2\u30b5\u30fc\u30d3\u30b9\": &#91;\"Learn\", \"Study\", \"Lesson\", \"Skill\", \"Academy\", \"Trainer\", \"Coach\", \"Note\"],\n        \"\u5275\u4f5c\u652f\u63f4\": &#91;\"Create\", \"Maker\", \"Muse\", \"Seed\", \"Craft\", \"Atelier\", \"Generator\", \"Factory\"]\n      },\n\n      moodDesc: {\n        \"\u304b\u3063\u3053\u3044\u3044\": \"\u92ed\u304f\u6d17\u7df4\u3055\u308c\u305f\u5370\u8c61\u3067\u3001\u4f7f\u3046\u3060\u3051\u3067\u5236\u4f5c\u610f\u6b32\u304c\u4e0a\u304c\u308b\",\n        \"\u3084\u3055\u3057\u3044\": \"\u521d\u5fc3\u8005\u3067\u3082\u8ff7\u308f\u306a\u3044\u3001\u5b89\u5fc3\u611f\u306e\u3042\u308b\",\n        \"\u8fd1\u672a\u6765\": \"AI\u6642\u4ee3\u3089\u3057\u3044\u81ea\u52d5\u5316\u3068\u5148\u9032\u6027\u3092\u611f\u3058\u308b\",\n        \"\u30d5\u30a1\u30f3\u30bf\u30b8\u30fc\": \"\u30af\u30a8\u30b9\u30c8\u3084\u30ae\u30eb\u30c9\u306e\u3088\u3046\u306a\u4e16\u754c\u89b3\u3092\u6d3b\u304b\u3057\u305f\",\n        \"\u30b7\u30f3\u30d7\u30eb\": \"\u4f59\u8a08\u306a\u6a5f\u80fd\u3092\u524a\u308a\u3001\u3059\u3050\u4f7f\u3048\u308b\u3053\u3068\u306b\u96c6\u4e2d\u3057\u305f\",\n        \"\u9ad8\u7d1a\u611f\": \"\u30d7\u30ed\u5411\u3051\u30c4\u30fc\u30eb\u306e\u3088\u3046\u306b\u843d\u3061\u7740\u3044\u305f\u5370\u8c61\u306e\",\n        \"\u304b\u308f\u3044\u3044\": \"\u89aa\u3057\u307f\u3084\u3059\u304f\u3001\u6bce\u65e5\u958b\u304d\u305f\u304f\u306a\u308b\",\n        \"\u30c0\u30fc\u30af\": \"\u6df1\u3044\u4e16\u754c\u89b3\u3068\u4e2d\u4e8c\u611f\u3092\u6d3b\u304b\u3057\u305f\",\n        \"\u5b9f\u7528\u7684\": \"\u4ed5\u4e8b\u3084\u5236\u4f5c\u306e\u52b9\u7387\u5316\u306b\u76f4\u7d50\u3059\u308b\",\n        \"\u30b2\u30fc\u30e0\u98a8\": \"\u30ec\u30d9\u30eb\u3001\u7d4c\u9a13\u5024\u3001\u30af\u30a8\u30b9\u30c8\u306e\u3088\u3046\u306a\u8981\u7d20\u3092\u6301\u3064\"\n      },\n\n      features: {\n        \"Web\u30b5\u30fc\u30d3\u30b9\": &#91;\"\u30e6\u30fc\u30b6\u30fc\u6295\u7a3f\", \"\u691c\u7d22\", \"\u30bf\u30b0\u5206\u985e\", \"\u304a\u6c17\u306b\u5165\u308a\", \"\u30e9\u30f3\u30ad\u30f3\u30b0\", \"\u7ba1\u7406\u753b\u9762\", \"\u30b3\u30e1\u30f3\u30c8\", \"\u30ab\u30c6\u30b4\u30ea\u7ba1\u7406\", \"\u5171\u6709\u30ea\u30f3\u30af\", \"\u30ec\u30b9\u30dd\u30f3\u30b7\u30d6UI\"],\n        \"AI\u30c4\u30fc\u30eb\": &#91;\"\u6587\u7ae0\u751f\u6210\", \"\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u9078\u629e\", \"\u30d7\u30ed\u30f3\u30d7\u30c8\u4fdd\u5b58\", \"\u5c65\u6b74\u7ba1\u7406\", \"\u81ea\u52d5\u5206\u985e\", \"\u8981\u7d04\", \"\u8a00\u3044\u63db\u3048\", \"\u30b3\u30d4\u30fc\", \"\u304a\u6c17\u306b\u5165\u308a\", \"\u51fa\u529b\u5f62\u5f0f\u5909\u66f4\"],\n        \"\u30b2\u30fc\u30e0\": &#91;\"\u30ad\u30e3\u30e9\u30af\u30bf\u30fc\u7ba1\u7406\", \"\u30af\u30a8\u30b9\u30c8\", \"\u30b9\u30c6\u30fc\u30b8\u9078\u629e\", \"\u30b9\u30ad\u30eb\", \"\u88c5\u5099\", \"\u6575\u56f3\u9451\", \"\u30b9\u30c8\u30fc\u30ea\u30fc\u5206\u5c90\", \"\u9032\u884c\u5ea6\u4fdd\u5b58\", \"\u79f0\u53f7\", \"\u5b9f\u7e3e\"],\n        \"\u5c0f\u8aac\": &#91;\"\u30ad\u30e3\u30e9\u8a2d\u5b9a\", \"\u4e16\u754c\u89b3\u7ba1\u7406\", \"\u7ae0\u7acb\u3066\", \"\u30d7\u30ed\u30c3\u30c8\", \"\u30bb\u30ea\u30d5\u6848\", \"\u4f0f\u7dda\u30e1\u30e2\", \"\u7528\u8a9e\u96c6\", \"\u6587\u4f53\u5909\u63db\", \"\u30b7\u30fc\u30f3\u6574\u7406\", \"\u5e74\u8868\"],\n        \"SNS\": &#91;\"\u30bf\u30a4\u30e0\u30e9\u30a4\u30f3\", \"\u6295\u7a3f\", \"\u3044\u3044\u306d\", \"\u30d5\u30a9\u30ed\u30fc\", \"\u901a\u77e5\", \"\u30d7\u30ed\u30d5\u30a3\u30fc\u30eb\", \"\u30cf\u30c3\u30b7\u30e5\u30bf\u30b0\", \"DM\u98a8UI\", \"\u304a\u3059\u3059\u3081\u6295\u7a3f\", \"AI\u6295\u7a3f\u63d0\u6848\"],\n        \"\u52d5\u753b\u30b5\u30a4\u30c8\": &#91;\"\u52d5\u753b\u30ab\u30fc\u30c9\", \"\u691c\u7d22\", \"\u30ab\u30c6\u30b4\u30ea\", \"\u30e9\u30f3\u30ad\u30f3\u30b0\", \"\u30c1\u30e3\u30f3\u30cd\u30eb\", \"\u8996\u8074\u5c65\u6b74\", \"\u30b3\u30e1\u30f3\u30c8\", \"\u304a\u6c17\u306b\u5165\u308a\", \"\u304a\u3059\u3059\u3081\", \"\u30bf\u30b0\"],\n        \"\u30dd\u30fc\u30c8\u30d5\u30a9\u30ea\u30aa\": &#91;\"\u4f5c\u54c1\u30ab\u30fc\u30c9\", \"\u30ea\u30f3\u30af\u7ba1\u7406\", \"\u30ab\u30c6\u30b4\u30ea\u5206\u985e\", \"\u7d39\u4ecb\u6587\u751f\u6210\", \"\u30b9\u30ad\u30eb\u8868\u793a\", \"\u5b9f\u7e3e\u4e00\u89a7\", \"\u691c\u7d22\", \"\u30c6\u30fc\u30de\u5909\u66f4\", \"\u5916\u90e8\u30ea\u30f3\u30af\", \"\u66f4\u65b0\u5c65\u6b74\"],\n        \"\u4fbf\u5229\u30c4\u30fc\u30eb\": &#91;\"\u30e1\u30e2\", \"ToDo\", \"\u691c\u7d22\", \"\u30bf\u30b0\", \"\u81ea\u52d5\u6574\u5f62\", \"\u30b3\u30d4\u30fc\", \"\u5c65\u6b74\", \"\u30a8\u30af\u30b9\u30dd\u30fc\u30c8\", \"\u30c1\u30a7\u30c3\u30af\u30ea\u30b9\u30c8\", \"\u901a\u77e5\u98a8\u8868\u793a\"],\n        \"\u5b66\u7fd2\u30b5\u30fc\u30d3\u30b9\": &#91;\"\u5b66\u7fd2\u8a18\u9332\", \"\u5fa9\u7fd2\u30ea\u30b9\u30c8\", \"\u30af\u30a4\u30ba\", \"\u7528\u8a9e\u96c6\", \"\u9032\u6357\", \"AI\u98a8\u89e3\u8aac\", \"\u5f31\u70b9\u30e1\u30e2\", \"\u8a08\u753b\u4f5c\u6210\", \"\u9054\u6210\u30d0\u30c3\u30b8\", \"\u554f\u984c\u751f\u6210\"],\n        \"\u5275\u4f5c\u652f\u63f4\": &#91;\"\u30a2\u30a4\u30c7\u30a2\u751f\u6210\", \"\u30bf\u30a4\u30c8\u30eb\u6848\", \"\u30ad\u30e3\u30c3\u30c1\u30b3\u30d4\u30fc\", \"\u30ad\u30e3\u30e9\u6848\", \"\u4e16\u754c\u89b3\u6848\", \"\u4f01\u753b\u66f8\u5316\", \"\u753b\u50cf\u30d7\u30ed\u30f3\u30d7\u30c8\", \"\u69cb\u6210\u6848\", \"\u30e1\u30e2\u4fdd\u5b58\", \"\u30cd\u30bf\u5e33\"]\n      },\n\n      monetization: &#91;\n        \"\u7121\u6599\u7248\uff0bPro\u7248\",\n        \"\u5e83\u544a\u8868\u793a\",\n        \"\u8cb7\u3044\u5207\u308a\u7248\",\n        \"\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u8ca9\u58f2\",\n        \"\u6708\u984d\u30d7\u30ec\u30df\u30a2\u30e0\",\n        \"\u6cd5\u4eba\u5411\u3051\u30d7\u30e9\u30f3\",\n        \"\u8ffd\u52a0\u4fdd\u5b58\u67a0\u306e\u8ab2\u91d1\",\n        \"\u4f5c\u54c1\u516c\u958b\u30da\u30fc\u30b8\u306e\u6709\u6599\u30ab\u30b9\u30bf\u30e0\",\n        \"\u652f\u63f4\u30fb\u6295\u3052\u92ad\",\n        \"\u7d20\u6750\u30d1\u30c3\u30af\u8ca9\u58f2\"\n      ],\n\n      risks: &#91;\n        \"\u6a5f\u80fd\u3092\u5897\u3084\u3057\u3059\u304e\u308b\u3068\u5b8c\u6210\u3057\u306b\u304f\u304f\u306a\u308b\",\n        \"\u6700\u521d\u304b\u3089\u30ed\u30b0\u30a4\u30f3\u3084\u8ab2\u91d1\u3092\u5165\u308c\u308b\u3068\u958b\u767a\u304c\u91cd\u304f\u306a\u308b\",\n        \"\u30bf\u30fc\u30b2\u30c3\u30c8\u304c\u5e83\u3059\u304e\u308b\u3068\u7279\u5fb4\u304c\u8584\u304f\u306a\u308b\",\n        \"\u4fdd\u5b58\u6a5f\u80fd\u306e\u8a2d\u8a08\u3092\u5f8c\u56de\u3057\u306b\u3059\u308b\u3068\u4f5c\u308a\u76f4\u3057\u304c\u51fa\u3084\u3059\u3044\",\n        \"\u898b\u305f\u76ee\u3060\u3051\u4f5c\u3063\u3066\u5b9f\u7528\u6027\u304c\u5f31\u3044\u3068\u4f7f\u308f\u308c\u306b\u304f\u3044\",\n        \"\u30b9\u30de\u30db\u5bfe\u5fdc\u3092\u5fd8\u308c\u308b\u3068\u4f7f\u3044\u52dd\u624b\u304c\u843d\u3061\u308b\"\n      ],\n\n      firstSteps: {\n        \"\u7c21\u5358\": &#91;\"1\u753b\u9762UI\u3092\u4f5c\u308b\", \"\u5165\u529b\u6b04\u3068\u751f\u6210\u30dc\u30bf\u30f3\u3092\u4f5c\u308b\", \"\u7d50\u679c\u8868\u793a\u3092\u4f5c\u308b\", \"\u30b3\u30d4\u30fc\u6a5f\u80fd\u3092\u4ed8\u3051\u308b\", \"\u30ed\u30fc\u30ab\u30eb\u4fdd\u5b58\u3092\u4ed8\u3051\u308b\"],\n        \"\u666e\u901a\": &#91;\"\u57fa\u672cUI\u3092\u4f5c\u308b\", \"\u8907\u6570\u30d1\u30bf\u30fc\u30f3\u751f\u6210\u3092\u4f5c\u308b\", \"\u5c65\u6b74\u4fdd\u5b58\u3092\u4f5c\u308b\", \"\u691c\u7d22\u3068\u7d5e\u308a\u8fbc\u307f\u3092\u4f5c\u308b\", \"\u30c6\u30ad\u30b9\u30c8\u51fa\u529b\u3092\u4f5c\u308b\"],\n        \"\u672c\u683c\": &#91;\"MVP\u3092\u4f5c\u308b\", \"\u4fdd\u5b58\u30c7\u30fc\u30bf\u69cb\u9020\u3092\u6c7a\u3081\u308b\", \"\u30ed\u30b0\u30a4\u30f3\u306a\u3057\u7248\u3092\u5b8c\u6210\u3055\u305b\u308b\", \"\u30e6\u30fc\u30b6\u30fc\u767b\u9332\u7248\u3092\u691c\u8a0e\u3059\u308b\", \"\u516c\u958b\u30da\u30fc\u30b8\u3092\u6574\u3048\u308b\"],\n        \"\u8d85\u672c\u683c\": &#91;\"\u5c0f\u3055\u3044MVP\u3092\u5148\u306b\u4f5c\u308b\", \"\u30d5\u30ed\u30f3\u30c8\u3068\u30d0\u30c3\u30af\u30a8\u30f3\u30c9\u3092\u5206\u3051\u308b\", \"DB\u8a2d\u8a08\u3092\u3059\u308b\", \"\u8ab2\u91d1\u3084\u30ed\u30b0\u30a4\u30f3\u3092\u5f8c\u304b\u3089\u8ffd\u52a0\u3059\u308b\", \"\u904b\u7528\u30b3\u30b9\u30c8\u3092\u78ba\u8a8d\u3059\u308b\"]\n      }\n    };\n\n    let currentIdeas = &#91;];\n    let generatedCount = 0;\n\n    function $(id) {\n      return document.getElementById(id);\n    }\n\n    function val(id) {\n      return $(id).value.trim();\n    }\n\n    function pick(arr) {\n      return arr&#91;Math.floor(Math.random() * arr.length)];\n    }\n\n    function shuffle(arr) {\n      return &#91;...arr].sort(() => Math.random() - 0.5);\n    }\n\n    function escapeHTML(str) {\n      return String(str)\n        .replaceAll(\"&amp;\", \"&amp;amp;\")\n        .replaceAll(\"&lt;\", \"&amp;lt;\")\n        .replaceAll(\">\", \"&amp;gt;\")\n        .replaceAll('\"', \"&amp;quot;\")\n        .replaceAll(\"'\", \"&amp;#039;\");\n    }\n\n    function addKeyword(word) {\n      const box = $(\"keywords\");\n      if (!box.value.includes(word)) {\n        box.value = box.value ? box.value + \" \/ \" + word : word;\n      }\n    }\n\n    function randomSet() {\n      randomSelect(\"genre\");\n      randomSelect(\"mood\");\n      randomSelect(\"level\");\n      randomSelect(\"target\");\n      randomSelect(\"style\");\n\n      const sets = &#91;\n        \"AI \/ \u30e1\u30e2 \/ \u4f5c\u696d\u52b9\u7387\",\n        \"RPG \/ \u30af\u30a8\u30b9\u30c8 \/ \u9032\u6357\u7ba1\u7406\",\n        \"SNS \/ \u6295\u7a3f \/ AI\u98a8\u8fd4\u4fe1\",\n        \"\u5c0f\u8aac \/ \u4e16\u754c\u89b3 \/ \u30ad\u30e3\u30e9\u30af\u30bf\u30fc\",\n        \"\u5728\u5b85\u30ef\u30fc\u30af \/ \u65e5\u5831 \/ \u6574\u7406\",\n        \"\u30dd\u30fc\u30c8\u30d5\u30a9\u30ea\u30aa \/ \u4f5c\u54c1 \/ \u81ea\u52d5\u7d39\u4ecb\",\n        \"\u52d5\u753b \/ \u307e\u3068\u3081 \/ \u30e9\u30f3\u30ad\u30f3\u30b0\",\n        \"\u5b66\u7fd2 \/ \u5fa9\u7fd2 \/ \u30af\u30a4\u30ba\",\n        \"\u30b2\u30fc\u30e0\u958b\u767a \/ \u30a2\u30a4\u30c7\u30a2 \/ \u4ed5\u69d8\u66f8\",\n        \"\u5275\u4f5c \/ \u30cd\u30bf\u5e33 \/ \u4f01\u753b\u66f8\"\n      ];\n\n      const problems = &#91;\n        \"\u4f55\u3092\u4f5c\u308c\u3070\u3044\u3044\u304b\u308f\u304b\u3089\u306a\u3044\",\n        \"\u4f5c\u696d\u304c\u7d9a\u304b\u306a\u3044\",\n        \"\u30a2\u30a4\u30c7\u30a2\u304c\u6563\u3089\u3070\u3063\u3066\u6574\u7406\u3067\u304d\u306a\u3044\",\n        \"\u4f5c\u54c1\u7d39\u4ecb\u6587\u3092\u66f8\u304f\u306e\u304c\u96e3\u3057\u3044\",\n        \"\u5b66\u7fd2\u3057\u305f\u5185\u5bb9\u3092\u5fd8\u308c\u3084\u3059\u3044\",\n        \"\u6bce\u65e5\u306e\u9032\u6357\u3092\u898b\u3048\u308b\u5316\u3057\u305f\u3044\",\n        \"\u4f01\u753b\u3092\u4f5c\u3063\u3066\u3082\u9014\u4e2d\u3067\u6b62\u307e\u308a\u3084\u3059\u3044\"\n      ];\n\n      $(\"keywords\").value = pick(sets);\n      $(\"problem\").value = pick(problems);\n      showToast(\"\u30e9\u30f3\u30c0\u30e0\u6761\u4ef6\u3092\u5165\u308c\u307e\u3057\u305f\");\n    }\n\n    function randomSelect(id) {\n      const el = $(id);\n      el.selectedIndex = Math.floor(Math.random() * el.options.length);\n    }\n\n    function makePractical() {\n      $(\"mood\").value = \"\u5b9f\u7528\u7684\";\n      $(\"level\").value = \"\u7c21\u5358\";\n      $(\"style\").value = \"\u958b\u767a\u30e1\u30e2\u98a8\";\n      if (!$(\"problem\").value) {\n        $(\"problem\").value = \"\u6bce\u65e5\u306e\u4f5c\u696d\u3084\u30a2\u30a4\u30c7\u30a2\u3092\u6574\u7406\u3057\u3066\u3001\u6b21\u306b\u3084\u308b\u3053\u3068\u3092\u660e\u78ba\u306b\u3057\u305f\u3044\";\n      }\n      showToast(\"\u73fe\u5b9f\u7684\u306a\u6761\u4ef6\u306b\u5bc4\u305b\u307e\u3057\u305f\");\n    }\n\n    function makeFantasy() {\n      $(\"mood\").value = \"\u30d5\u30a1\u30f3\u30bf\u30b8\u30fc\";\n      $(\"style\").value = \"\u30b5\u30fc\u30d3\u30b9\u7d39\u4ecb\u98a8\";\n      if (!$(\"keywords\").value.includes(\"\u30ae\u30eb\u30c9\")) {\n        addKeyword(\"\u30ae\u30eb\u30c9\");\n        addKeyword(\"\u30af\u30a8\u30b9\u30c8\");\n      }\n      showToast(\"\u6d3e\u624b\u306a\u6761\u4ef6\u306b\u5bc4\u305b\u307e\u3057\u305f\");\n    }\n\n    function clearForm() {\n      $(\"keywords\").value = \"\";\n      $(\"problem\").value = \"\";\n      showToast(\"\u5165\u529b\u3092\u30af\u30ea\u30a2\u3057\u307e\u3057\u305f\");\n    }\n\n    function generateIdeas() {\n      const amount = Number(val(\"amount\"));\n      currentIdeas = &#91;];\n\n      for (let i = 0; i &lt; amount; i++) {\n        currentIdeas.push(createIdea(i));\n      }\n\n      generatedCount += amount;\n      $(\"statIdeas\").textContent = generatedCount;\n      renderIdeas();\n      showToast(`${amount}\u500b\u306e\u30a2\u30a4\u30c7\u30a2\u3092\u751f\u6210\u3057\u307e\u3057\u305f`);\n    }\n\n    function createIdea(index) {\n      const genre = val(\"genre\");\n      const mood = val(\"mood\");\n      const level = val(\"level\");\n      const target = val(\"target\");\n      const style = val(\"style\");\n      const keywords = val(\"keywords\") || \"AI \/ \u5275\u4f5c \/ \u30a2\u30a4\u30c7\u30a2\";\n      const problem = val(\"problem\") || \"\u30a2\u30a4\u30c7\u30a2\u3092\u6574\u7406\u3057\u3066\u3001\u4f5c\u308a\u59cb\u3081\u3084\u3059\u304f\u3057\u305f\u3044\";\n\n      const title = makeTitle(genre, keywords, index);\n      const features = shuffle(DATA.features&#91;genre]).slice(0, 6);\n      const mvp = features.slice(0, 3);\n      const money = shuffle(DATA.monetization).slice(0, 3);\n      const risks = shuffle(DATA.risks).slice(0, 3);\n      const steps = DATA.firstSteps&#91;level];\n      const score = calcScore(genre, level);\n      const keywordMain = splitKeywords(keywords)&#91;0] || \"\u30a2\u30a4\u30c7\u30a2\";\n\n      return {\n        id: Date.now() + Math.random(),\n        createdAt: new Date().toLocaleString(\"ja-JP\"),\n        title,\n        genre,\n        mood,\n        level,\n        target,\n        style,\n        keywords,\n        problem,\n        score,\n        catchcopy: makeCatch(target, mood, genre, keywordMain),\n        overview: makeOverview(genre, mood, target, keywords, problem, style),\n        unique: makeUnique(genre, mood, keywordMain),\n        features,\n        mvp,\n        money,\n        risks,\n        steps,\n        devTime: makeDevTime(level),\n        nextAction: makeNextAction(level, genre),\n        design: makeDesign(mood),\n        pitch: makePitch(title, target, genre, problem)\n      };\n    }\n\n    function splitKeywords(text) {\n      return text.split(\/&#91;\\\/\u3001,\\s]+\/).map(x => x.trim()).filter(Boolean);\n    }\n\n    function makeTitle(genre, keywords, index) {\n      const keys = splitKeywords(keywords);\n      const key = keys&#91;index % Math.max(keys.length, 1)] || \"Idea\";\n      const head = pick(DATA.titleHeads);\n      const tail = pick(DATA.titleTails&#91;genre] || DATA.titleTails&#91;\"\u5275\u4f5c\u652f\u63f4\"]);\n\n      const patterns = &#91;\n        `${head}${tail}`,\n        `${key}${tail}`,\n        `${head} ${tail}`,\n        `${key}\u30e1\u30fc\u30ab\u30fc`,\n        `${key}\u30ae\u30eb\u30c9`,\n        `${key}Forge`,\n        `${head}\u30ce\u30fc\u30c8`,\n        `${key}\u30e9\u30dc`,\n        `${head}Factory`,\n        `${key}\u30af\u30a8\u30b9\u30c8`\n      ];\n\n      return pick(patterns);\n    }\n\n    function makeCatch(target, mood, genre, key) {\n      const desc = DATA.moodDesc&#91;mood];\n      const patterns = &#91;\n        `${target}\u306e\u300c\u4f5c\u308a\u305f\u3044\u300d\u3092\u5f62\u306b\u3059\u308b\u3001${desc}${genre}\u3002`,\n        `${key}\u3092\u8d77\u70b9\u306b\u3001\u4f01\u753b\u30fb\u6574\u7406\u30fb\u5b9f\u884c\u307e\u3067\u652f\u3048\u308b${genre}\u3002`,\n        `\u601d\u3044\u3064\u304d\u3092\u4f01\u753b\u306b\u5909\u3048\u308b\u3001${target}\u5411\u3051\u306e${desc}\u30b5\u30fc\u30d3\u30b9\u3002`,\n        `\u8ff7\u3063\u3066\u3044\u308b\u6642\u9593\u3092\u6e1b\u3089\u3057\u3001\u5236\u4f5c\u3092\u524d\u306b\u9032\u3081\u308b${genre}\u3002`\n      ];\n      return pick(patterns);\n    }\n\n    function makeOverview(genre, mood, target, keywords, problem, style) {\n      const desc = DATA.moodDesc&#91;mood];\n\n      if (style === \"\u30d4\u30c3\u30c1\u8cc7\u6599\u98a8\") {\n        return `${problem}\u3068\u3044\u3046\u60a9\u307f\u3092\u6301\u3064${target}\u306b\u5411\u3051\u3066\u3001${keywords}\u3092\u8ef8\u306b\u3057\u305f${genre}\u3092\u63d0\u4f9b\u3057\u307e\u3059\u3002${desc}\u4f53\u9a13\u306b\u3088\u308a\u3001\u30e6\u30fc\u30b6\u30fc\u306f\u30a2\u30a4\u30c7\u30a2\u51fa\u3057\u304b\u3089\u6574\u7406\u3001\u5b9f\u884c\u307e\u3067\u3092\u77ed\u6642\u9593\u3067\u9032\u3081\u3089\u308c\u307e\u3059\u3002`;\n      }\n\n      if (style === \"\u958b\u767a\u30e1\u30e2\u98a8\") {\n        return `${keywords}\u3092\u30c6\u30fc\u30de\u306b\u3057\u305f${genre}\u3002\u307e\u305a\u306f\u5c0f\u3055\u304f\u4f5c\u308b\u3002${target}\u304c\u62b1\u3048\u308b\u300c${problem}\u300d\u3092\u89e3\u6c7a\u3059\u308b\u305f\u3081\u3001\u751f\u6210\u3001\u4fdd\u5b58\u3001\u691c\u7d22\u3001\u30b3\u30d4\u30fc\u306e\u6d41\u308c\u3092\u91cd\u8996\u3059\u308b\u3002`;\n      }\n\n      if (style === \"\u30b5\u30fc\u30d3\u30b9\u7d39\u4ecb\u98a8\") {\n        return `\u3053\u306e${genre}\u306f\u3001${target}\u304c${keywords}\u306b\u95a2\u3059\u308b\u30a2\u30a4\u30c7\u30a2\u3092\u3059\u3070\u3084\u304f\u6574\u7406\u3067\u304d\u308b\u30b5\u30fc\u30d3\u30b9\u3067\u3059\u3002${desc}\u30c7\u30b6\u30a4\u30f3\u3067\u3001\u6bce\u65e5\u958b\u304d\u305f\u304f\u306a\u308b\u4f7f\u3044\u5fc3\u5730\u3092\u76ee\u6307\u3057\u307e\u3059\u3002`;\n      }\n\n      return `${keywords}\u3092\u30c6\u30fc\u30de\u306b\u3057\u305f${genre}\u3067\u3059\u3002${target}\u304c\u62b1\u3048\u308b\u300c${problem}\u300d\u3092\u89e3\u6c7a\u3059\u308b\u305f\u3081\u3001\u30a2\u30a4\u30c7\u30a2\u51fa\u3057\u3001\u60c5\u5831\u6574\u7406\u3001\u4fdd\u5b58\u3001\u6b21\u306e\u884c\u52d5\u63d0\u6848\u3092\u307e\u3068\u3081\u3066\u884c\u3048\u308b\u4f01\u753b\u306b\u3057\u307e\u3059\u3002`;\n    }\n\n    function makeUnique(genre, mood, key) {\n      return `${key}\u3092\u305f\u3060\u751f\u6210\u3059\u308b\u3060\u3051\u3067\u306a\u304f\u3001MVP\u3001\u958b\u767a\u624b\u9806\u3001\u53ce\u76ca\u5316\u3001\u6ce8\u610f\u70b9\u307e\u3067\u540c\u6642\u306b\u51fa\u305b\u308b\u70b9\u304c\u7279\u5fb4\u3067\u3059\u3002${mood}\u306a\u65b9\u5411\u6027\u3092\u660e\u78ba\u306b\u3059\u308b\u3053\u3068\u3067\u3001\u4f3c\u305f\u3088\u3046\u306a${genre}\u3068\u306e\u5dee\u5225\u5316\u3082\u3057\u3084\u3059\u304f\u306a\u308a\u307e\u3059\u3002`;\n    }\n\n    function calcScore(genre, level) {\n      let score = 82;\n\n      if (level === \"\u7c21\u5358\") score += 10;\n      if (level === \"\u666e\u901a\") score += 5;\n      if (level === \"\u672c\u683c\") score -= 2;\n      if (level === \"\u8d85\u672c\u683c\") score -= 9;\n\n      if (genre === \"\u4fbf\u5229\u30c4\u30fc\u30eb\") score += 4;\n      if (genre === \"AI\u30c4\u30fc\u30eb\") score += 3;\n      if (genre === \"\u30b2\u30fc\u30e0\") score -= 4;\n      if (genre === \"SNS\") score -= 3;\n\n      score += Math.floor(Math.random() * 9) - 4;\n\n      return Math.max(55, Math.min(98, score));\n    }\n\n    function makeDevTime(level) {\n      if (level === \"\u7c21\u5358\") return \"1\u65e5\u301c3\u65e5\";\n      if (level === \"\u666e\u901a\") return \"1\u9031\u9593\u301c2\u9031\u9593\";\n      if (level === \"\u672c\u683c\") return \"1\u304b\u6708\u301c3\u304b\u6708\";\n      return \"3\u304b\u6708\u4ee5\u4e0a\";\n    }\n\n    function makeNextAction(level, genre) {\n      if (level === \"\u7c21\u5358\") {\n        return `\u307e\u305a\u306f${genre}\u306e1\u753b\u9762\u7248\u3092\u4f5c\u308a\u307e\u3059\u3002\u5165\u529b\u6b04\u3001\u751f\u6210\u30dc\u30bf\u30f3\u3001\u7d50\u679c\u8868\u793a\u3001\u4fdd\u5b58\u3060\u3051\u3067\u5b8c\u6210\u6271\u3044\u306b\u3059\u308b\u306e\u304c\u5b89\u5168\u3067\u3059\u3002`;\n      }\n\n      if (level === \"\u666e\u901a\") {\n        return `\u6700\u521d\u306bUI\u3092\u4f5c\u308a\u3001\u305d\u306e\u3042\u3068\u4fdd\u5b58\u30fb\u691c\u7d22\u30fb\u51fa\u529b\u6a5f\u80fd\u3092\u8ffd\u52a0\u3057\u307e\u3059\u3002\u30ed\u30b0\u30a4\u30f3\u6a5f\u80fd\u306f\u5f8c\u56de\u3057\u3067\u5927\u4e08\u592b\u3067\u3059\u3002`;\n      }\n\n      if (level === \"\u672c\u683c\") {\n        return `MVP\u3092\u516c\u958b\u3067\u304d\u308b\u72b6\u614b\u307e\u3067\u4f5c\u3063\u3066\u304b\u3089\u3001\u30e6\u30fc\u30b6\u30fc\u767b\u9332\u3084\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3092\u691c\u8a0e\u3057\u307e\u3059\u3002\u6700\u521d\u304b\u3089\u5168\u90e8\u5165\u308c\u306a\u3044\u65b9\u304c\u5b8c\u6210\u3057\u307e\u3059\u3002`;\n      }\n\n      return `\u8d85\u672c\u683c\u7248\u306f\u91cd\u3044\u306e\u3067\u3001\u307e\u305a\u306f\u30d7\u30ed\u30c8\u30bf\u30a4\u30d7\u3092\u5b8c\u6210\u3055\u305b\u3066\u304f\u3060\u3055\u3044\u3002\u5b8c\u6210\u5f8c\u306b\u30b5\u30fc\u30d0\u30fc\u3001DB\u3001\u8ab2\u91d1\u3001\u30ed\u30b0\u30a4\u30f3\u3092\u5206\u5272\u3057\u3066\u8ffd\u52a0\u3059\u308b\u6d41\u308c\u304c\u5b89\u5168\u3067\u3059\u3002`;\n    }\n\n    function makeDesign(mood) {\n      const map = {\n        \"\u304b\u3063\u3053\u3044\u3044\": \"\u9ed2\u80cc\u666f\u3001\u9752\u7d2b\u30b0\u30e9\u30c7\u30fc\u30b7\u30e7\u30f3\u3001\u30ab\u30fc\u30c9\u578bUI\u3001\u30b7\u30e3\u30fc\u30d7\u306a\u30dc\u30bf\u30f3\",\n        \"\u3084\u3055\u3057\u3044\": \"\u767d\u80cc\u666f\u3001\u6de1\u3044\u9752\u3084\u7dd1\u3001\u89d2\u4e38\u30ab\u30fc\u30c9\u3001\u5927\u304d\u3081\u6587\u5b57\",\n        \"\u8fd1\u672a\u6765\": \"\u30c0\u30fc\u30af\u80cc\u666f\u3001\u30cd\u30aa\u30f3\u3001\u6c34\u8272\u30a2\u30af\u30bb\u30f3\u30c8\u3001\u30ac\u30e9\u30b9\u98a8UI\",\n        \"\u30d5\u30a1\u30f3\u30bf\u30b8\u30fc\": \"\u7f8a\u76ae\u7d19\u98a8\u3001\u30ae\u30eb\u30c9\u30ab\u30fc\u30c9\u3001\u30af\u30a8\u30b9\u30c8\u30dc\u30fc\u30c9\u98a8UI\",\n        \"\u30b7\u30f3\u30d7\u30eb\": \"\u767d\u80cc\u666f\u3001\u4f59\u767d\u591a\u3081\u3001\u5165\u529b\u6b04\u3068\u7d50\u679c\u8868\u793a\u3092\u4e2d\u5fc3\u306b\u3059\u308b\",\n        \"\u9ad8\u7d1a\u611f\": \"\u9ed2\u3068\u91d1\u3001\u7d30\u3044\u7f6b\u7dda\u3001\u843d\u3061\u7740\u3044\u305f\u30ab\u30fc\u30c9UI\",\n        \"\u304b\u308f\u3044\u3044\": \"\u30d1\u30b9\u30c6\u30eb\u30ab\u30e9\u30fc\u3001\u4e38\u3044\u30dc\u30bf\u30f3\u3001\u30a2\u30a4\u30b3\u30f3\u591a\u3081\",\n        \"\u30c0\u30fc\u30af\": \"\u9ed2\u3001\u8d64\u7d2b\u3001\u91cd\u539a\u306a\u5f71\u3001\u4e16\u754c\u89b3\u91cd\u8996\",\n        \"\u5b9f\u7528\u7684\": \"\u7ba1\u7406\u753b\u9762\u98a8\u3001\u898b\u51fa\u3057\u660e\u78ba\u3001\u30b3\u30d4\u30fc\u30fb\u4fdd\u5b58\u30dc\u30bf\u30f3\u3092\u76ee\u7acb\u305f\u305b\u308b\",\n        \"\u30b2\u30fc\u30e0\u98a8\": \"\u30b9\u30c6\u30fc\u30bf\u30b9\u753b\u9762\u3001\u7d4c\u9a13\u5024\u30d0\u30fc\u3001\u30af\u30a8\u30b9\u30c8\u30ab\u30fc\u30c9\u98a8\"\n      };\n\n      return map&#91;mood] || \"\u30ab\u30fc\u30c9\u578b\u3067\u898b\u3084\u3059\u3044UI\";\n    }\n\n    function makePitch(title, target, genre, problem) {\n      return `${title}\u306f\u3001${target}\u304c\u62b1\u3048\u308b\u300c${problem}\u300d\u3092\u89e3\u6c7a\u3059\u308b${genre}\u3067\u3059\u3002\u8907\u96d1\u306a\u4f5c\u696d\u3092\u6574\u7406\u3057\u3001\u6b21\u306b\u3084\u308b\u3053\u3068\u3092\u660e\u78ba\u306b\u3059\u308b\u3053\u3068\u3067\u3001\u5236\u4f5c\u3084\u4ed5\u4e8b\u3092\u6b62\u3081\u305a\u306b\u9032\u3081\u3089\u308c\u308b\u3088\u3046\u306b\u3057\u307e\u3059\u3002`;\n    }\n\n    function renderIdeas() {\n      const result = $(\"result\");\n\n      if (currentIdeas.length === 0) {\n        result.innerHTML = `\n          &lt;div class=\"empty\">\n            &lt;div class=\"icon\">\ud83e\udde0&lt;\/div>\n            &lt;h2>\u307e\u3060\u30a2\u30a4\u30c7\u30a2\u306f\u3042\u308a\u307e\u305b\u3093&lt;\/h2>\n            &lt;p>\u5de6\u306e\u6761\u4ef6\u3092\u5165\u308c\u3066\u300c\u30a2\u30a4\u30c7\u30a2\u751f\u6210\u300d\u3092\u62bc\u3057\u3066\u304f\u3060\u3055\u3044\u3002&lt;\/p>\n          &lt;\/div>\n        `;\n        return;\n      }\n\n      result.innerHTML = `\n        &lt;div class=\"idea-list\">\n          ${currentIdeas.map(renderIdeaCard).join(\"\")}\n        &lt;\/div>\n      `;\n    }\n\n    function renderIdeaCard(idea, index) {\n      return `\n        &lt;article class=\"idea-card\">\n          &lt;div class=\"idea-top\">\n            &lt;div>\n              &lt;h2 class=\"idea-title\">${escapeHTML(idea.title)}&lt;\/h2>\n              &lt;div class=\"meta\">\n                &lt;span class=\"pill\">${escapeHTML(idea.genre)}&lt;\/span>\n                &lt;span class=\"pill\">${escapeHTML(idea.mood)}&lt;\/span>\n                &lt;span class=\"pill\">${escapeHTML(idea.level)}&lt;\/span>\n                &lt;span class=\"pill\">${escapeHTML(idea.target)}&lt;\/span>\n                &lt;span class=\"pill\">\u958b\u767a\u76ee\u5b89 ${escapeHTML(idea.devTime)}&lt;\/span>\n              &lt;\/div>\n            &lt;\/div>\n\n            &lt;div class=\"score-box\">\n              &lt;strong>${idea.score}&lt;\/strong>\n              &lt;span>\u5b9f\u73fe\u5ea6&lt;\/span>\n            &lt;\/div>\n          &lt;\/div>\n\n          &lt;div class=\"catch\">\n            ${escapeHTML(idea.catchcopy)}\n          &lt;\/div>\n\n          &lt;div class=\"idea-body\">\n            &lt;div class=\"sections\">\n              &lt;div class=\"section wide\">\n                &lt;h4>\ud83d\udcdd \u6982\u8981&lt;\/h4>\n                &lt;p>${escapeHTML(idea.overview)}&lt;\/p>\n              &lt;\/div>\n\n              &lt;div class=\"section\">\n                &lt;h4>\ud83c\udfaf \u89e3\u6c7a\u3059\u308b\u60a9\u307f&lt;\/h4>\n                &lt;p>${escapeHTML(idea.problem)}&lt;\/p>\n              &lt;\/div>\n\n              &lt;div class=\"section\">\n                &lt;h4>\ud83c\udfa8 \u30c7\u30b6\u30a4\u30f3\u65b9\u91dd&lt;\/h4>\n                &lt;p>${escapeHTML(idea.design)}&lt;\/p>\n              &lt;\/div>\n\n              &lt;div class=\"section\">\n                &lt;h4>\u2699\ufe0f \u4e3b\u306a\u6a5f\u80fd&lt;\/h4>\n                &lt;ul>\n                  ${idea.features.map(x => `&lt;li>${escapeHTML(x)}&lt;\/li>`).join(\"\")}\n                &lt;\/ul>\n              &lt;\/div>\n\n              &lt;div class=\"section\">\n                &lt;h4>\ud83d\ude80 MVP\u6a5f\u80fd&lt;\/h4>\n                &lt;ol>\n                  ${idea.mvp.map(x => `&lt;li>${escapeHTML(x)}&lt;\/li>`).join(\"\")}\n                &lt;\/ol>\n              &lt;\/div>\n\n              &lt;div class=\"section\">\n                &lt;h4>\ud83d\udcb0 \u53ce\u76ca\u5316\u6848&lt;\/h4>\n                &lt;ul>\n                  ${idea.money.map(x => `&lt;li>${escapeHTML(x)}&lt;\/li>`).join(\"\")}\n                &lt;\/ul>\n              &lt;\/div>\n\n              &lt;div class=\"section\">\n                &lt;h4>\u26a0\ufe0f \u30ea\u30b9\u30af&lt;\/h4>\n                &lt;ul>\n                  ${idea.risks.map(x => `&lt;li>${escapeHTML(x)}&lt;\/li>`).join(\"\")}\n                &lt;\/ul>\n              &lt;\/div>\n\n              &lt;div class=\"section wide\">\n                &lt;h4>\u2705 \u958b\u767a\u30b9\u30c6\u30c3\u30d7&lt;\/h4>\n                &lt;ol>\n                  ${idea.steps.map(x => `&lt;li>${escapeHTML(x)}&lt;\/li>`).join(\"\")}\n                &lt;\/ol>\n              &lt;\/div>\n\n              &lt;div class=\"section wide\">\n                &lt;h4>\u2728 \u5dee\u5225\u5316\u30dd\u30a4\u30f3\u30c8&lt;\/h4>\n                &lt;p>${escapeHTML(idea.unique)}&lt;\/p>\n              &lt;\/div>\n\n              &lt;div class=\"section wide\">\n                &lt;h4>\ud83d\udce3 \u7d39\u4ecb\u6587&lt;\/h4>\n                &lt;p>${escapeHTML(idea.pitch)}&lt;\/p>\n              &lt;\/div>\n\n              &lt;div class=\"section wide\">\n                &lt;h4>\ud83d\udc49 \u6b21\u306b\u3084\u308b\u3053\u3068&lt;\/h4>\n                &lt;p>${escapeHTML(idea.nextAction)}&lt;\/p>\n              &lt;\/div>\n            &lt;\/div>\n          &lt;\/div>\n\n          &lt;div class=\"idea-actions\">\n            &lt;button onclick=\"copyOne(${index})\">\u3053\u306e\u6848\u3092\u30b3\u30d4\u30fc&lt;\/button>\n            &lt;button onclick=\"saveOne(${index})\">\u4fdd\u5b58&lt;\/button>\n            &lt;button onclick=\"regenerateOne(${index})\">\u3053\u306e\u6848\u3060\u3051\u518d\u751f\u6210&lt;\/button>\n          &lt;\/div>\n        &lt;\/article>\n      `;\n    }\n\n    function ideaToText(idea) {\n      return `\n\u3010\u30bf\u30a4\u30c8\u30eb\u3011\n${idea.title}\n\n\u3010\u30b8\u30e3\u30f3\u30eb\u3011\n${idea.genre}\n\n\u3010\u96f0\u56f2\u6c17\u3011\n${idea.mood}\n\n\u3010\u30bf\u30fc\u30b2\u30c3\u30c8\u3011\n${idea.target}\n\n\u3010\u958b\u767a\u96e3\u6613\u5ea6\u3011\n${idea.level}\n\n\u3010\u958b\u767a\u76ee\u5b89\u3011\n${idea.devTime}\n\n\u3010\u5b9f\u73fe\u5ea6\u3011\n${idea.score}\u70b9\n\n\u3010\u30ad\u30e3\u30c3\u30c1\u30b3\u30d4\u30fc\u3011\n${idea.catchcopy}\n\n\u3010\u89e3\u6c7a\u3059\u308b\u60a9\u307f\u3011\n${idea.problem}\n\n\u3010\u6982\u8981\u3011\n${idea.overview}\n\n\u3010\u4e3b\u306a\u6a5f\u80fd\u3011\n${idea.features.map((x, i) => `${i + 1}. ${x}`).join(\"\\n\")}\n\n\u3010MVP\u6a5f\u80fd\u3011\n${idea.mvp.map((x, i) => `${i + 1}. ${x}`).join(\"\\n\")}\n\n\u3010\u53ce\u76ca\u5316\u6848\u3011\n${idea.money.map((x, i) => `${i + 1}. ${x}`).join(\"\\n\")}\n\n\u3010\u30ea\u30b9\u30af\u3011\n${idea.risks.map((x, i) => `${i + 1}. ${x}`).join(\"\\n\")}\n\n\u3010\u958b\u767a\u30b9\u30c6\u30c3\u30d7\u3011\n${idea.steps.map((x, i) => `${i + 1}. ${x}`).join(\"\\n\")}\n\n\u3010\u30c7\u30b6\u30a4\u30f3\u65b9\u91dd\u3011\n${idea.design}\n\n\u3010\u5dee\u5225\u5316\u30dd\u30a4\u30f3\u30c8\u3011\n${idea.unique}\n\n\u3010\u7d39\u4ecb\u6587\u3011\n${idea.pitch}\n\n\u3010\u6b21\u306b\u3084\u308b\u3053\u3068\u3011\n${idea.nextAction}\n      `.trim();\n    }\n\n    function copyOne(index) {\n      const idea = currentIdeas&#91;index];\n      if (!idea) return;\n      copyText(ideaToText(idea));\n    }\n\n    function copyAll() {\n      if (currentIdeas.length === 0) {\n        showToast(\"\u5148\u306b\u751f\u6210\u3057\u3066\u304f\u3060\u3055\u3044\");\n        return;\n      }\n\n      copyText(currentIdeas.map(ideaToText).join(\"\\n\\n====================\\n\\n\"));\n    }\n\n    function copyText(text) {\n      navigator.clipboard.writeText(text)\n        .then(() => showToast(\"\u30b3\u30d4\u30fc\u3057\u307e\u3057\u305f\"))\n        .catch(() => showToast(\"\u30b3\u30d4\u30fc\u306b\u5931\u6557\u3057\u307e\u3057\u305f\"));\n    }\n\n    function regenerateOne(index) {\n      currentIdeas&#91;index] = createIdea(index);\n      renderIdeas();\n      showToast(\"\u518d\u751f\u6210\u3057\u307e\u3057\u305f\");\n    }\n\n    function getSaved() {\n      try {\n        return JSON.parse(localStorage.getItem(\"netagami_saved\")) || &#91;];\n      } catch {\n        return &#91;];\n      }\n    }\n\n    function setSaved(data) {\n      localStorage.setItem(\"netagami_saved\", JSON.stringify(data));\n      updateStats();\n    }\n\n    function saveOne(index) {\n      const idea = currentIdeas&#91;index];\n      if (!idea) return;\n\n      const saved = getSaved();\n      saved.unshift(idea);\n      setSaved(saved.slice(0, 100));\n      renderHistory();\n      showToast(\"\u4fdd\u5b58\u3057\u307e\u3057\u305f\");\n    }\n\n    function saveAll() {\n      if (currentIdeas.length === 0) {\n        showToast(\"\u5148\u306b\u751f\u6210\u3057\u3066\u304f\u3060\u3055\u3044\");\n        return;\n      }\n\n      const saved = getSaved();\n      setSaved(&#91;...currentIdeas, ...saved].slice(0, 100));\n      renderHistory();\n      showToast(\"\u5168\u90e8\u4fdd\u5b58\u3057\u307e\u3057\u305f\");\n    }\n\n    function renderHistory() {\n      const list = $(\"historyList\");\n      const saved = getSaved();\n      const q = $(\"historySearch\").value.trim().toLowerCase();\n      const genre = $(\"historyGenre\").value;\n\n      let filtered = saved;\n\n      if (genre !== \"all\") {\n        filtered = filtered.filter(x => x.genre === genre);\n      }\n\n      if (q) {\n        filtered = filtered.filter(x => {\n          return JSON.stringify(x).toLowerCase().includes(q);\n        });\n      }\n\n      $(\"savedCount\").textContent = `${saved.length}\u4ef6`;\n\n      if (filtered.length === 0) {\n        list.innerHTML = `&lt;p style=\"color:var(--muted);\">\u4fdd\u5b58\u30a2\u30a4\u30c7\u30a2\u306f\u3042\u308a\u307e\u305b\u3093\u3002&lt;\/p>`;\n        return;\n      }\n\n      list.innerHTML = filtered.map(item => `\n        &lt;div class=\"history-item\" onclick=\"loadSaved('${item.id}')\">\n          &lt;strong>${escapeHTML(item.title)}&lt;\/strong>\n          &lt;small>${escapeHTML(item.genre)} \/ ${escapeHTML(item.level)} \/ ${escapeHTML(item.createdAt)}&lt;\/small>\n        &lt;\/div>\n      `).join(\"\");\n    }\n\n    function loadSaved(id) {\n      const saved = getSaved();\n      const idea = saved.find(x => String(x.id) === String(id));\n\n      if (!idea) return;\n\n      currentIdeas = &#91;idea];\n      renderIdeas();\n      window.scrollTo({ top: 0, behavior: \"smooth\" });\n      showToast(\"\u4fdd\u5b58\u30a2\u30a4\u30c7\u30a2\u3092\u8868\u793a\u3057\u307e\u3057\u305f\");\n    }\n\n    function downloadText() {\n      if (currentIdeas.length === 0) {\n        showToast(\"\u5148\u306b\u751f\u6210\u3057\u3066\u304f\u3060\u3055\u3044\");\n        return;\n      }\n\n      const text = currentIdeas.map(ideaToText).join(\"\\n\\n====================\\n\\n\");\n      downloadFile(\"netagami-ideas.txt\", text, \"text\/plain\");\n      showToast(\"TXT\u51fa\u529b\u3057\u307e\u3057\u305f\");\n    }\n\n    function downloadJSON() {\n      const data = currentIdeas.length ? currentIdeas : getSaved();\n\n      if (data.length === 0) {\n        showToast(\"\u51fa\u529b\u3059\u308b\u30c7\u30fc\u30bf\u304c\u3042\u308a\u307e\u305b\u3093\");\n        return;\n      }\n\n      downloadFile(\"netagami-ideas.json\", JSON.stringify(data, null, 2), \"application\/json\");\n      showToast(\"JSON\u51fa\u529b\u3057\u307e\u3057\u305f\");\n    }\n\n    function downloadFile(filename, content, type) {\n      const blob = new Blob(&#91;content], { type: type + \";charset=utf-8\" });\n      const url = URL.createObjectURL(blob);\n      const a = document.createElement(\"a\");\n\n      a.href = url;\n      a.download = filename;\n      document.body.appendChild(a);\n      a.click();\n      a.remove();\n\n      URL.revokeObjectURL(url);\n    }\n\n    function clearAll() {\n      if (!confirm(\"\u751f\u6210\u7d50\u679c\u3068\u4fdd\u5b58\u5c65\u6b74\u3092\u524a\u9664\u3057\u307e\u3059\u304b\uff1f\")) return;\n\n      currentIdeas = &#91;];\n      localStorage.removeItem(\"netagami_saved\");\n      renderIdeas();\n      renderHistory();\n      updateStats();\n      showToast(\"\u524a\u9664\u3057\u307e\u3057\u305f\");\n    }\n\n    function toggleTheme() {\n      document.body.classList.toggle(\"light\");\n      localStorage.setItem(\"netagami_theme\", document.body.classList.contains(\"light\") ? \"light\" : \"dark\");\n    }\n\n    function updateStats() {\n      $(\"statSaved\").textContent = getSaved().length;\n    }\n\n    function showToast(message) {\n      const toast = $(\"toast\");\n      toast.textContent = message;\n      toast.classList.add(\"show\");\n\n      setTimeout(() => {\n        toast.classList.remove(\"show\");\n      }, 1800);\n    }\n\n    function init() {\n      if (localStorage.getItem(\"netagami_theme\") === \"light\") {\n        document.body.classList.add(\"light\");\n      }\n\n      $(\"keywords\").value = \"AI \/ \u5275\u4f5c \/ Web\u30b5\u30fc\u30d3\u30b9 \/ \u30e1\u30e2\";\n      $(\"problem\").value = \"\u4f55\u3092\u4f5c\u308c\u3070\u3044\u3044\u304b\u308f\u304b\u3089\u306a\u3044\u3002\u30a2\u30a4\u30c7\u30a2\u3092\u4f01\u753b\u66f8\u30ec\u30d9\u30eb\u307e\u3067\u6574\u7406\u3057\u305f\u3044\u3002\";\n\n      renderHistory();\n      updateStats();\n    }\n\n    init();\n  &lt;\/script>\n&lt;\/body>\n&lt;\/html><\/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":[80,4,87],"tags":[3],"class_list":["post-26300","post","type-post","status-publish","format-standard","hentry","category-html","category-programming","category-web","tag-programming"],"aioseo_notices":[],"jetpack_featured_media_url":"","_links":{"self":[{"href":"http:\/\/www.tyosuke20xx.com\/blog\/index.php?rest_route=\/wp\/v2\/posts\/26300","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=26300"}],"version-history":[{"count":1,"href":"http:\/\/www.tyosuke20xx.com\/blog\/index.php?rest_route=\/wp\/v2\/posts\/26300\/revisions"}],"predecessor-version":[{"id":26301,"href":"http:\/\/www.tyosuke20xx.com\/blog\/index.php?rest_route=\/wp\/v2\/posts\/26300\/revisions\/26301"}],"wp:attachment":[{"href":"http:\/\/www.tyosuke20xx.com\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=26300"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.tyosuke20xx.com\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=26300"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.tyosuke20xx.com\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=26300"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}