{"id":3735,"date":"2026-02-06T12:05:13","date_gmt":"2026-02-06T11:05:13","guid":{"rendered":"https:\/\/mueckinvest.de\/?page_id=3735"},"modified":"2026-03-18T16:00:00","modified_gmt":"2026-03-18T15:00:00","slug":"mueckinvest-ki","status":"publish","type":"page","link":"https:\/\/mueckinvest.com\/ur\/mueckinvest-ki\/","title":{"rendered":"Mueckinvest AI"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\"><strong>Wie die Mueckinvest\u2011KI arbeitet<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Die KI basiert ausschlie\u00dflich auf gepr\u00fcften Inhalten aus meiner eigenen Wissensbasis sowie ausgew\u00e4hlten, verl\u00e4sslichen Quellen. Alle Informationen werden strukturiert aufbereitet und \u00fcber moderne Such\u2011 und Einbettungsverfahren verkn\u00fcpft. So erhalten Sie neutrale, verst\u00e4ndliche Erkl\u00e4rungen \u2013 ohne Empfehlungen, Spekulationen oder ungepr\u00fcfte Aussagen.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Pro Tag sind <strong>2 Anfragen kostenlos<\/strong>. F\u00fcr weitere Anfragen steht das <strong><a href=\"https:\/\/mueckinvest.com\/registrierung\/\" data-type=\"page\" data-id=\"2780\">Premium\u2011Paket<\/a><\/strong> zur Verf\u00fcgung.<\/p>\n\n\n<section id=\"important-note\">\n<div class=\"note-container\">\n<p>Hinweis: Die Mueckinvest KI dient ausschlie\u00dflich allgemeinen Informationszwecken.\nIch gebe keine Finanzberatung und keine Handlungsempfehlungen.\nF\u00fcr die Richtigkeit, Vollst\u00e4ndigkeit und Aktualit\u00e4t der bereitgestellten Informationen \u00fcbernehme ich keine Gew\u00e4hr.<\/p>\n<\/div>\n<\/section>\n\n\n    <div id=\"mueckinvest-ki-root\" class=\"ki-root notranslate\" data-no-translate=\"true\"><\/div>\n\n    <script>\n    document.addEventListener(\"DOMContentLoaded\", function () {\n\n        let API_URL = \"https:\/\/mueckinvest.com\/ki-pipeline\/ki_app_endpoint.php\";\n        API_URL = API_URL.replace(\/([^:]\\\/)\\\/+\/g, \"$1\");\n\n        const RL_AJAX_URL = \"https:\/\/mueckinvest.com\/wp-admin\/admin-ajax.php\";\n        const RL_NONCE    = \"de4d7a8d0b\";\n\n        \/*********************************\n         * \u2705 TEXT SYSTEM\n         *********************************\/\n        function t(key, lang) {\n            const dict = {\n                title: { de:\"Mueckinvest KI\", en:\"Mueckinvest AI\", es:\"Mueckinvest IA\", fr:\"Mueckinvest IA\" },\n                thinking: { de:\"Denke nach...\", en:\"Thinking...\" },\n                error: { de:\"Fehler bei der Anfrage.\", en:\"An error occurred.\" },\n                no_answer: { de:\"Keine Antwort m\u00f6glich.\", en:\"No answer available.\" },\n                placeholder: { de:\"Ihre Frage eingeben...\", en:\"Enter your question...\" },\n                send: { de:\"Senden\", en:\"Send\" },\n\n                \/\/ \u2705 LIMIT TEXTS\n                limit_free: {\n                    de:\"Limit erreicht: Ohne Premium sind nur 2 Anfragen pro 24 Stunden m\u00f6glich.\",\n                    en:\"Limit reached: Without Premium you can only send 2 requests per 24 hours.\",\n                    es:\"L\u00edmite alcanzado: Sin Premium solo puedes enviar 2 solicitudes cada 24 horas.\",\n                    fr:\"Limite atteinte : Sans Premium, vous ne pouvez envoyer que 2 requ\u00eates par 24 heures.\"\n                },\n                limit_premium: {\n                    de:\"Limit erreicht: Premium erlaubt maximal 30 Anfragen pro 24 Stunden.\",\n                    en:\"Limit reached: Premium allows up to 30 requests per 24 hours.\",\n                    es:\"L\u00edmite alcanzado: Premium permite hasta 30 solicitudes cada 24 horas.\",\n                    fr:\"Limite atteinte : Premium autorise jusqu\u2019\u00e0 30 requ\u00eates par 24 heures.\"\n                },\n                try_again_in: {\n                    de:\"Bitte versuche es wieder in {h}h {m}m.\",\n                    en:\"Please try again in {h}h {m}m.\",\n                    es:\"Por favor, int\u00e9ntalo de nuevo en {h}h {m}m.\",\n                    fr:\"Veuillez r\u00e9essayer dans {h}h {m}m.\"\n                }\n            };\n            return (dict[key] && (dict[key][lang] || dict[key][\"en\"])) || (dict[key]?.[\"en\"] || \"\");\n        }\n\n        \/*********************************\n         * \u2705 GLOBAL LANGUAGE (FIX!)\n         * PRIORITY:\n         * 1. TranslatePress URL\n         * 2. HTML lang attr\n         * 3. Browser \/ App\n         *********************************\/\n        function getLang() {\n\n            const path = window.location.pathname.toLowerCase();\n\n            \/\/ \u2705 TranslatePress FIRST\n            if (path.startsWith(\"\/en\/\")) return \"en\";\n            if (path.startsWith(\"\/es\/\")) return \"es\";\n            if (path.startsWith(\"\/fr\/\")) return \"fr\";\n            if (path.startsWith(\"\/pt\/\")) return \"pt\";\n            if (path.startsWith(\"\/ar\/\")) return \"ar\";\n            if (path.startsWith(\"\/hi\/\")) return \"hi\";\n            if (path.startsWith(\"\/id\/\")) return \"id\";\n            if (path.startsWith(\"\/zh\/\")) return \"zh\";\n            if (path.startsWith(\"\/ru\/\")) return \"ru\";\n            if (path.startsWith(\"\/ja\/\")) return \"ja\";\n            if (path.startsWith(\"\/bn\/\")) return \"bn\";\n            if (path.startsWith(\"\/ur\/\")) return \"ur\";\n            if (path.startsWith(\"\/tr\/\")) return \"tr\";\n            if (path.startsWith(\"\/vi\/\")) return \"vi\";\n            if (path.startsWith(\"\/it\/\")) return \"it\";\n            if (path.startsWith(\"\/ko\/\")) return \"ko\";\n            if (path.startsWith(\"\/pl\/\")) return \"pl\";\n            if (path.startsWith(\"\/sw\/\")) return \"sw\";\n            if (path.startsWith(\"\/th\/\")) return \"th\";\n\n            \/\/ \u2705 HTML lang (TranslatePress fallback)\n            if (document.documentElement.lang) {\n                return document.documentElement.lang.slice(0,2).toLowerCase();\n            }\n\n            \/\/ \u2705 Browser \/ App fallback\n            try {\n                return (navigator.language || \"en\").slice(0,2).toLowerCase();\n            } catch(e){\n                return \"en\";\n            }\n        }\n\n        const lang = getLang();\n\n        const root = document.getElementById(\"mueckinvest-ki-root\");\n        root.classList.add(\"notranslate\");\n\n        root.innerHTML = `\n            <div class=\"ki-wrapper\">\n                <div class=\"ki-header\">${t(\"title\", lang)}<\/div>\n                <div id=\"chat\" class=\"ki-chat\"><\/div>\n                <div class=\"ki-input-area\">\n                    <input id=\"ki_input\" type=\"text\" class=\"ki-input\">\n                    <button id=\"ki_send\" class=\"ki-button\">${t(\"send\", lang)}<\/button>\n                <\/div>\n            <\/div>\n        `;\n\n        const chat    = document.getElementById(\"chat\");\n        const input   = document.getElementById(\"ki_input\");\n        const sendBtn = document.getElementById(\"ki_send\");\n\n        input.placeholder = t(\"placeholder\", lang);\n\n        function addMessage(text, type) {\n            const div = document.createElement(\"div\");\n            div.classList.add(\"ki-bubble\");\n            div.classList.add(type === \"user\" ? \"ki-bubble-user\" : \"ki-bubble-ai\");\n            div.innerHTML = String(text).replace(\/\\n\/g, \"<br>\");\n            chat.appendChild(div);\n            chat.scrollTop = chat.scrollHeight;\n        }\n\n        function formatReset(seconds) {\n            const s = Math.max(0, parseInt(seconds || 0, 10));\n            const h = Math.floor(s \/ 3600);\n            const m = Math.floor((s % 3600) \/ 60);\n            return {h, m};\n        }\n\n        async function rateLimitCheck() {\n            try {\n                const form = new URLSearchParams();\n                form.append(\"action\", \"mueckinvest_ki_rl\");\n                form.append(\"nonce\", RL_NONCE);\n\n                const res = await fetch(RL_AJAX_URL, {\n                    method: \"POST\",\n                    headers: {\"Content-Type\":\"application\/x-www-form-urlencoded; charset=UTF-8\"},\n                    body: form.toString()\n                });\n\n                return await res.json();\n            } catch (e) {\n                \/\/ If rate-limit check fails, fail-open (so KI still works)\n                return {allowed: true, premium: false, limit: null, remaining: null, reset_in: 0, reason: \"rl_check_failed\"};\n            }\n        }\n\n        async function sendMessage() {\n\n            const question = input.value.trim();\n            if (!question) return;\n\n            \/\/ \u2705 Rate limit BEFORE consuming API resources\n            sendBtn.disabled = true;\n\n            const rl = await rateLimitCheck();\n            if (rl && rl.allowed === false) {\n                const msgBase = rl.premium ? t(\"limit_premium\", lang) : t(\"limit_free\", lang);\n                const {h, m}  = formatReset(rl.reset_in);\n                const msgWait = t(\"try_again_in\", lang).replace(\"{h}\", h).replace(\"{m}\", m);\n\n                addMessage(msgBase + \"<br>\" + msgWait, \"bot\");\n                sendBtn.disabled = false;\n                return;\n            }\n\n            addMessage(question, \"user\");\n            input.value = \"\";\n\n            const loading = document.createElement(\"div\");\n            loading.classList.add(\"ki-loading\");\n            loading.textContent = t(\"thinking\", lang);\n            chat.appendChild(loading);\n\n            try {\n                const response = await fetch(API_URL, {\n                    method: \"POST\",\n                    headers: { \"Content-Type\":\"application\/json\" },\n                    body: JSON.stringify({\n                        question: question,\n                        ui_lang: lang   \/\/ \u2705 immer richtige Sprache\n                    })\n                });\n\n                let raw = await response.text();\n\n                let data;\n                try {\n                    data = JSON.parse(raw);\n                } catch(e) {\n                    const s = raw.indexOf(\"{\");\n                    const e2 = raw.lastIndexOf(\"}\");\n                    if (s !== -1 && e2 !== -1) {\n                        data = JSON.parse(raw.substring(s, e2+1));\n                    }\n                }\n\n                loading.remove();\n                addMessage(data?.answer || t(\"no_answer\", lang), \"bot\");\n\n            } catch(e) {\n                console.error(e);\n                loading.remove();\n                addMessage(t(\"error\", lang), \"bot\");\n            }\n\n            sendBtn.disabled = false;\n        }\n\n        sendBtn.addEventListener(\"click\", sendMessage);\n        input.addEventListener(\"keydown\", function (e) {\n            if (e.key === \"Enter\") sendMessage();\n        });\n\n    });\n    <\/script>\n\n    \n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Wie die Mueckinvest\u2011KI arbeitet Die KI basiert ausschlie\u00dflich auf gepr\u00fcften Inhalten aus meiner eigenen Wissensbasis sowie ausgew\u00e4hlten, verl\u00e4sslichen Quellen. Alle Informationen werden strukturiert aufbereitet und \u00fcber moderne Such\u2011 und Einbettungsverfahren verkn\u00fcpft. So erhalten Sie neutrale, verst\u00e4ndliche Erkl\u00e4rungen \u2013 ohne Empfehlungen, Spekulationen oder ungepr\u00fcfte Aussagen. Pro Tag sind 2 Anfragen kostenlos. F\u00fcr weitere Anfragen steht das [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"pmpro_default_level":"","_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"footnotes":""},"class_list":["post-3735","page","type-page","status-publish","hentry","pmpro-has-access"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/mueckinvest.com\/ur\/wp-json\/wp\/v2\/pages\/3735","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/mueckinvest.com\/ur\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/mueckinvest.com\/ur\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/mueckinvest.com\/ur\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/mueckinvest.com\/ur\/wp-json\/wp\/v2\/comments?post=3735"}],"version-history":[{"count":7,"href":"https:\/\/mueckinvest.com\/ur\/wp-json\/wp\/v2\/pages\/3735\/revisions"}],"predecessor-version":[{"id":4051,"href":"https:\/\/mueckinvest.com\/ur\/wp-json\/wp\/v2\/pages\/3735\/revisions\/4051"}],"wp:attachment":[{"href":"https:\/\/mueckinvest.com\/ur\/wp-json\/wp\/v2\/media?parent=3735"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}