{"id":5532,"date":"2026-04-17T17:15:38","date_gmt":"2026-04-17T17:15:38","guid":{"rendered":"https:\/\/immogo.com\/ad-generator-with-ai\/"},"modified":"2026-06-26T16:38:55","modified_gmt":"2026-06-26T16:38:55","slug":"ad-generator-with-ai","status":"publish","type":"page","link":"https:\/\/immogo.com\/en\/ad-generator-with-ai\/","title":{"rendered":"Ad generator with AI"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"5532\" class=\"elementor elementor-5532 elementor-5407\">\n\t\t\t\t<div class=\"elementor-element elementor-element-706d3c0 e-flex e-con-boxed e-con e-parent\" data-id=\"706d3c0\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-418d312 elementor-widget elementor-widget-heading\" data-id=\"418d312\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">A free expert writer at your service<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-595f353 e-flex e-con-boxed e-con e-parent\" data-id=\"595f353\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-89d25cc elementor-widget elementor-widget-text-editor\" data-id=\"89d25cc\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Writing a good real estate ad is harder than it looks. Most texts suffer from the same flaws: too many superlatives, not enough facts, clich\u00e9s that everyone recognizes and no one reads anymore. <\/p><p>This AI tool has been trained with the editorial rules that Immogo applies to every ad: show rather than tell, situate the property before describing it, give concrete information that only the seller knows, and eliminate everything else. <\/p><p>If needed, the AI agent will ask you a few targeted questions, then write a clear and effective proposal. You are free to modify it before publishing. <\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-246f6949 e-flex e-con-boxed e-con e-parent\" data-id=\"246f6949\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-3da6b5a elementor-widget elementor-widget-html\" data-id=\"3da6b5a\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<style>\n  @import url('https:\/\/fonts.googleapis.com\/css2?family=Playfair+Display:ital,wght@0,400;0,500;1,400&family=DM+Sans:wght@300;400;500&display=swap');\n  #immogo-gen *{box-sizing:border-box;margin:0;padding:0;}\n  #immogo-gen{font-family:'DM Sans',sans-serif;font-size:17px;color:#111;max-width:800px;margin:0 auto;padding:1rem 0 2rem;}\n  #immogo-gen .ig-toprow{display:flex;align-items:center;justify-content:space-between;gap:1rem;margin-bottom:1rem;}\n  #immogo-gen .ig-subtitle{font-size:15px;color:#333;font-weight:300;flex:1;}\n  #immogo-gen .ig-heading{font-family:'DM Sans',sans-serif;font-size:20px;font-weight:500;color:#111;letter-spacing:-0.01em;flex:1;margin:0;}\n  #immogo-gen .ig-lang-switcher{display:flex;gap:4px;flex-shrink:0;}\n  #immogo-gen .ig-lang-btn{background:none;border:1px solid #ccc;border-radius:6px;padding:5px 12px;font-size:14px;font-family:'DM Sans',sans-serif;cursor:pointer;color:#444;transition:all 0.15s;}\n  #immogo-gen .ig-lang-btn.active{background:#1a1a1a;color:#fff;border-color:#1a1a1a;}\n  #immogo-gen .ig-progress-bar{display:flex !important;gap:6px !important;margin-bottom:1.5rem !important;height:auto !important;background:none !important;}\n  #immogo-gen .ig-progress-step{height:3px !important;flex:1 !important;border-radius:2px !important;background:#e0e0e0 !important;transition:background 0.3s !important;min-height:unset !important;max-height:3px !important;padding:0 !important;margin:0 !important;}\n  #immogo-gen .ig-progress-step.done{background:#1a1a1a !important;}\n  #immogo-gen .ig-progress-step.active{background:#888 !important;}\n  #immogo-gen .ig-phase{display:none;}\n  #immogo-gen .ig-phase.active{display:block;}\n  #immogo-gen .ig-section-label{font-size:12px;font-weight:500;letter-spacing:0.08em;text-transform:uppercase;color:#666;margin-bottom:1.25rem;}\n  #immogo-gen .ig-form-grid{display:grid;grid-template-columns:1fr 1fr;gap:1rem;margin-bottom:1.5rem;}\n  #immogo-gen .ig-form-group{display:flex;flex-direction:column;gap:8px;}\n  #immogo-gen .ig-form-group.full{grid-column:1\/-1;}\n  #immogo-gen label{font-size:15px;color:#222;font-weight:500;}\n  #immogo-gen input,#immogo-gen select,#immogo-gen textarea{font-family:'DM Sans',sans-serif;font-size:16px;border:1px solid #ddd;border-radius:6px;padding:10px 12px;width:100%;outline:none;transition:border 0.15s;background:#fff;color:#111;}\n  #immogo-gen input:focus,#immogo-gen select:focus,#immogo-gen textarea:focus{border-color:#888;}\n  #immogo-gen textarea{resize:vertical;min-height:110px;line-height:1.6;}\n  #immogo-gen .ig-btn-primary{background:#1a1a1a;color:#fff;border:none;border-radius:6px;padding:12px 28px;font-family:'DM Sans',sans-serif;font-size:16px;font-weight:500;cursor:pointer;transition:opacity 0.15s;display:inline-block;}\n  #immogo-gen .ig-btn-primary:hover{opacity:0.85;}\n  #immogo-gen .ig-btn-primary:disabled{opacity:0.4;cursor:not-allowed;}\n  #immogo-gen .ig-btn-secondary{background:none;border:1px solid #ccc;border-radius:6px;padding:12px 24px;font-family:'DM Sans',sans-serif;font-size:16px;cursor:pointer;color:#1a1a1a;transition:background 0.15s;}\n  #immogo-gen .ig-btn-secondary:hover{background:#f5f5f5;}\n  #immogo-gen .ig-chat-thread{display:flex;flex-direction:column;gap:1rem;margin-bottom:1.5rem;max-height:460px;overflow-y:auto;padding-right:4px;}\n  #immogo-gen .ig-msg{display:flex;gap:10px;align-items:flex-start;}\n  #immogo-gen .ig-msg.user{flex-direction:row-reverse;}\n  #immogo-gen .ig-avatar{width:30px;height:30px;border-radius:50%;flex-shrink:0;display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:500;}\n  #immogo-gen .ig-avatar.ai{background:#f0f0f0;border:1px solid #e0e0e0;color:#888;font-family:'Playfair Display',serif;font-style:italic;font-size:14px;}\n  #immogo-gen .ig-avatar.human{background:#1a1a1a;color:#fff;}\n  #immogo-gen .ig-bubble{max-width:82%;padding:12px 16px;border-radius:12px;font-size:16px;line-height:1.65;border:1px solid #e8e8e8;}\n  #immogo-gen .ig-msg.ai .ig-bubble{background:#f7f7f7;border-radius:4px 12px 12px 12px;}\n  #immogo-gen .ig-msg.user .ig-bubble{background:#fff;border-radius:12px 4px 12px 12px;}\n  #immogo-gen .ig-typing{display:flex;gap:4px;align-items:center;padding:4px 0;}\n  #immogo-gen .ig-dot{width:7px;height:7px;border-radius:50%;background:#bbb;animation:igbounce 1.2s ease-in-out infinite;}\n  #immogo-gen .ig-dot:nth-child(2){animation-delay:0.2s;}\n  #immogo-gen .ig-dot:nth-child(3){animation-delay:0.4s;}\n  @keyframes igbounce{0%,80%,100%{transform:translateY(0);}40%{transform:translateY(-6px);}}\n  #immogo-gen .ig-reply-row{display:flex;gap:8px;align-items:flex-end;}\n  #immogo-gen .ig-reply-input{flex:1;font-size:16px;min-height:48px;max-height:120px;resize:none;border-radius:12px;line-height:1.5;padding:12px 16px;border:1px solid #ddd;font-family:'DM Sans',sans-serif;color:#111;}\n  #immogo-gen .ig-reply-input:focus{border-color:#888;outline:none;}\n  #immogo-gen .ig-send-btn{background:#1a1a1a;color:#fff;border:none;border-radius:50%;width:40px;height:40px;cursor:pointer;display:flex;align-items:center;justify-content:center;flex-shrink:0;font-size:18px;}\n  #immogo-gen .ig-send-btn:disabled{opacity:0.35;cursor:not-allowed;}\n  #immogo-gen .ig-result-card{background:#fff;border:1px solid #e8e8e8;border-radius:12px;overflow:hidden;margin-bottom:1.5rem;}\n  #immogo-gen .ig-result-header{background:#f7f7f7;padding:1rem 1.25rem;border-bottom:1px solid #e8e8e8;display:flex;align-items:center;justify-content:space-between;gap:1rem;flex-wrap:wrap;}\n  #immogo-gen .ig-result-title{font-family:'Playfair Display',serif;font-size:16px;font-style:italic;color:#1a1a1a;}\n  #immogo-gen .ig-copy-btn{background:none;border:1px solid #ccc;border-radius:6px;padding:6px 14px;font-size:14px;cursor:pointer;color:#444;font-family:'DM Sans',sans-serif;}\n  #immogo-gen .ig-copy-btn:hover{background:#f0f0f0;}\n  #immogo-gen .ig-ad-section{padding:1.25rem;border-bottom:1px solid #f0f0f0;}\n  #immogo-gen .ig-ad-section:last-child{border-bottom:none;}\n  #immogo-gen .ig-ad-tag{font-size:11px;font-weight:500;letter-spacing:0.1em;text-transform:uppercase;color:#888;margin-bottom:8px;}\n  #immogo-gen .ig-ad-content{font-size:16px;line-height:1.8;color:#111;white-space:pre-wrap;}\n  #immogo-gen .ig-ad-content.headline{font-family:'Playfair Display',serif;font-size:22px;font-weight:400;}\n  #immogo-gen .ig-actions{display:flex;gap:8px;flex-wrap:wrap;align-items:center;}\n  #immogo-gen .ig-error{font-size:15px;color:#c0392b;padding:10px 14px;background:#fdf0ef;border-radius:6px;margin-top:8px;display:none;}\n  #immogo-gen .ig-error.show{display:block;}\n  #immogo-gen .ig-banner{border:1px solid #e8e8e8;border-radius:12px;padding:1.25rem;margin-bottom:1.5rem;background:#f7f7f7;}\n  #immogo-gen .ig-banner-steps{margin:10px 0 14px;padding:0;list-style:none;display:flex;flex-direction:column;gap:8px;}\n  #immogo-gen .ig-banner-steps li{display:flex;gap:10px;align-items:flex-start;font-size:14px;color:#333;line-height:1.5;}\n  #immogo-gen .ig-banner-steps li .ig-step-num{background:#1a1a1a;color:#fff;border-radius:50%;width:22px;height:22px;display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:600;flex-shrink:0;margin-top:1px;}\n  #immogo-gen .ig-banner-warning{font-size:13px;color:#888;font-style:italic;margin-bottom:12px;}\n  #immogo-gen .ig-banner-title{font-size:16px;font-weight:500;margin-bottom:8px;color:#111;}\n  #immogo-gen .ig-banner-text{font-size:15px;color:#333;line-height:1.65;margin-bottom:14px;}\n  #immogo-gen .ig-immogo-btn{background:none;border:1px solid #ccc;border-radius:6px;padding:10px 18px;font-family:'DM Sans',sans-serif;font-size:15px;cursor:pointer;color:#1a1a1a;text-decoration:none;display:inline-block;transition:background 0.15s;}\n  #immogo-gen .ig-immogo-btn:hover{background:#fff;text-decoration:none;color:#1a1a1a;}\n  #immogo-gen .ig-immogo-btn.accent{background:#1a1a1a;color:#fff;border-color:#1a1a1a;}\n  #immogo-gen .ig-immogo-btn.accent:hover{opacity:0.85;background:#1a1a1a;color:#fff;}\n  #immogo-gen .ig-translate-note{font-size:13px;color:#999;margin-top:8px;font-style:italic;}\n  #immogo-gen .ig-lang-notice{display:none;font-size:15px;color:#444;padding:10px 14px;background:#f7f7f7;border-radius:6px;border:1px solid #e8e8e8;margin-bottom:1rem;}\n  #immogo-gen .ig-lang-notice.show{display:block;}\n  @media(max-width:580px){#immogo-gen .ig-form-grid{grid-template-columns:1fr;}#immogo-gen .ig-form-group.full{grid-column:1;}}\n  #immogo-gen .ig-path-toggle{display:flex;gap:0;margin-bottom:1.5rem;border:1px solid #ddd;border-radius:8px;overflow:hidden;}\n  #immogo-gen .ig-path-btn{flex:1;padding:12px 16px;font-family:'DM Sans',sans-serif;font-size:15px;font-weight:400;background:#fff;border:none;cursor:pointer;color:#666;transition:all 0.2s;line-height:1.3;}\n  #immogo-gen .ig-path-btn.active{background:#1a1a1a;color:#fff;font-weight:500;}\n  #immogo-gen .ig-path-btn:first-child{border-right:1px solid #ddd;}\n  #immogo-gen .ig-path-section{display:none;}\n  #immogo-gen .ig-path-section.active{display:block;}\n  #immogo-gen .ig-field-hint{font-size:13px;color:#888;margin-bottom:6px;font-style:italic;}\n  #immogo-gen .ig-essentials{display:grid;grid-template-columns:1fr 1fr;gap:1rem;margin-bottom:1.5rem;}\n  #immogo-gen .ig-refine-panel{background:#f7f7f7;border:1px solid #e8e8e8;border-radius:12px;padding:1.25rem;margin-bottom:1.5rem;}\n  #immogo-gen .ig-refine-label{font-size:14px;font-weight:500;color:#222;margin-bottom:8px;}\n  #immogo-gen .ig-refine-hint{font-size:13px;color:#888;margin-bottom:10px;}\n  #immogo-gen .ig-refine-row{display:flex;gap:8px;align-items:flex-end;}\n  #immogo-gen .ig-refine-input{flex:1;font-size:15px;min-height:60px;max-height:120px;resize:none;border-radius:8px;line-height:1.5;padding:10px 14px;border:1px solid #ddd;font-family:'DM Sans',sans-serif;color:#111;}\n  #immogo-gen .ig-refine-input:focus{border-color:#888;outline:none;}\n  #immogo-gen .ig-refine-btn{background:#1a1a1a;color:#fff;border:none;border-radius:8px;padding:10px 18px;font-family:'DM Sans',sans-serif;font-size:14px;font-weight:500;cursor:pointer;white-space:nowrap;}\n  #immogo-gen .ig-refine-btn:disabled{opacity:0.4;cursor:not-allowed;}\n<\/style>\n\n<div id=\"immogo-gen\">\n  <div class=\"ig-toprow\">\n    <h2 class=\"ig-heading\">AI listing generator<\/h2>\n    <div class=\"ig-lang-switcher\">\n      <button class=\"ig-lang-btn\" data-lang=\"fr\">FR<\/button>\n      <button class=\"ig-lang-btn\" data-lang=\"nl\">NL<\/button>\n      <button class=\"ig-lang-btn active\" data-lang=\"en\">EN<\/button>\n    <\/div>\n  <\/div>\n\n  <div class=\"ig-progress-bar\">\n    <div class=\"ig-progress-step active\" id=\"ig-step1\"><\/div>\n    <div class=\"ig-progress-step\" id=\"ig-step2\"><\/div>\n    <div class=\"ig-progress-step\" id=\"ig-step3\"><\/div>\n  <\/div>\n\n  <div class=\"ig-phase active\" id=\"ig-phase-form\">\n    <div class=\"ig-lang-notice\" id=\"ig-lang-notice\"><\/div>\n\n    <!-- Essentials: always visible -->\n    <div class=\"ig-essentials\">\n      <div class=\"ig-form-group\">\n        <label for=\"ig-prop-location\" id=\"ig-l-location\">Town and postal code<\/label>\n        <input type=\"text\" id=\"ig-prop-location\" placeholder=\"e.g. : Eymet 24500\">\n      <\/div>\n      <div class=\"ig-form-group\">\n        <label for=\"ig-prop-price\" id=\"ig-l-price\">Asking price (\u20ac)<\/label>\n        <input type=\"number\" id=\"ig-prop-price\" placeholder=\"ex : 395000\">\n      <\/div>\n    <\/div>\n\n    <!-- Path toggle -->\n    <div class=\"ig-path-toggle\">\n      <button class=\"ig-path-btn active\" id=\"ig-path-btn-paste\">\ud83d\udccb <span id=\"ig-path-label-paste\">I already have a text<\/span><\/button>\n      <button class=\"ig-path-btn\" id=\"ig-path-btn-scratch\">\u270f\ufe0f <span id=\"ig-path-label-scratch\">I'm starting from scratch<\/span><\/button>\n    <\/div>\n\n    <!-- Path 1: paste existing text -->\n    <div class=\"ig-path-section active\" id=\"ig-path-paste\">\n      <div class=\"ig-form-group full\">\n        <label for=\"ig-prop-desc\" id=\"ig-l-desc\">Paste your text below<\/label>\n        <div class=\"ig-field-hint\" id=\"ig-hint-paste\">The AI restructures your text, removes cliches and adds what's missing.<\/div>\n        <textarea id=\"ig-prop-desc\" style=\"min-height:160px;\" placeholder=\"Paste your existing listing here, even if imperfect. The AI does the rest. After receiving your results, you can ask the AI Agent to adapt content and style to your wishes.\"><\/textarea>\n      <\/div>\n    <\/div>\n\n    <!-- Path 2: structured fields -->\n    <div class=\"ig-path-section\" id=\"ig-path-scratch\">\n      <div class=\"ig-form-group full\" style=\"margin-bottom:1rem;\">\n        <label id=\"ig-l-intro\">Introduction and location<\/label>\n        <div class=\"ig-field-hint\" id=\"ig-hint-intro\">Property type, main assets, environment, peace, view, distances to shops and transport.<\/div>\n        <textarea id=\"ig-scratch-intro\" style=\"min-height:90px;\" placeholder=\"e.g. : Charming character house in a quiet village, 5 min walk to shops and 20 min from TGV station. Open views over the countryside.\"><\/textarea>\n      <\/div>\n      <div class=\"ig-form-group full\" style=\"margin-bottom:1rem;\">\n        <label id=\"ig-l-visit\">Description \/ property tour<\/label>\n        <div class=\"ig-field-hint\" id=\"ig-hint-visit\">Describe the rooms level by level. Areas, light, remarkable features.<\/div>\n        <textarea id=\"ig-scratch-visit\" style=\"min-height:90px;\" placeholder=\"e.g. : Ground floor: 40m2 living room with fireplace, open fitted kitchen. First floor: 3 bedrooms (15, 12, 10m2), bathroom with bath and shower.\"><\/textarea>\n      <\/div>\n      <div class=\"ig-form-group full\" style=\"margin-bottom:1rem;\">\n        <label id=\"ig-l-exterior\">Exterior and garden<\/label>\n        <div class=\"ig-field-hint\" id=\"ig-hint-exterior\">Garden, terrace, pool, garage, parking. Give dimensions and areas.<\/div>\n        <textarea id=\"ig-scratch-exterior\" style=\"min-height:80px;\" placeholder=\"e.g. : Landscaped garden of 1200m2 with no overlooking. Covered terrace 30m2. Double garage. Heated pool 8x4m.\"><\/textarea>\n      <\/div>\n      <div class=\"ig-form-group full\" style=\"margin-bottom:1rem;\">\n        <label id=\"ig-l-details\">Other information<\/label>\n        <div class=\"ig-field-hint\" id=\"ig-hint-details\">EPC, heating, year built, recent works, availability, property tax.<\/div>\n        <textarea id=\"ig-scratch-details\" style=\"min-height:70px;\" placeholder=\"e.g. : EPC C. Heat pump. Built in 1985, roof replaced 2020. Available immediately.\"><\/textarea>\n      <\/div>\n    <\/div>\n\n    <div class=\"ig-actions\" style=\"margin-top:1rem;\">\n      <button class=\"ig-btn-primary\" id=\"ig-btn-start\">Start AI interview<\/button>\n    <\/div>\n    <div class=\"ig-error\" id=\"ig-form-error\">Please fill in at least the town and a description.<\/div>\n  <\/div>\n\n  <div class=\"ig-phase\" id=\"ig-phase-chat\">\n    <div class=\"ig-section-label\" id=\"ig-label-interview\">AI interview<\/div>\n    <div class=\"ig-chat-thread\" id=\"ig-chat-thread\"><\/div>\n    <div class=\"ig-reply-row\">\n      <textarea class=\"ig-reply-input\" id=\"ig-reply-input\" placeholder=\"Your answer...\" rows=\"1\"><\/textarea>\n      <button class=\"ig-send-btn\" id=\"ig-send-btn\">&#8593;<\/button>\n    <\/div>\n    <div class=\"ig-error\" id=\"ig-chat-error\"><\/div>\n  <\/div>\n\n  <div class=\"ig-phase\" id=\"ig-phase-result\">\n    <div class=\"ig-section-label\" id=\"ig-label-result\">Your listing<\/div>\n    <div class=\"ig-banner\">\n      <div class=\"ig-banner-title\" id=\"ig-banner-title\">Your listing is ready. Here is how to publish it:<\/div>\n      <ol class=\"ig-banner-steps\" id=\"ig-banner-steps\">\n        <li><span class=\"ig-step-num\">1<\/span><span id=\"ig-step1-text\">Copy your text and save it somewhere (email to yourself, Notes, Word) \u2014 the page does not keep it.<\/span><\/li>\n        <li><span class=\"ig-step-num\">2<\/span><span id=\"ig-step2-text\">Create your Immogo account \u2014 from 17\u20ac\/month, no commission.<\/span><\/li>\n        <li><span class=\"ig-step-num\">3<\/span><span id=\"ig-step3-text\">Add your listing and paste your text into the form. We handle the FR and NL translations and monthly Facebook sharing.<\/span><\/li>\n      <\/ol>\n      <div style=\"display:flex;gap:8px;flex-wrap:wrap;align-items:center;\">\n        <a class=\"ig-immogo-btn accent\" href=\"https:\/\/forum.immogo.com\/fr\/membership-checkout\/\" target=\"_blank\" id=\"ig-banner-cta\">Create my Immogo account<\/a>\n        <a class=\"ig-immogo-btn\" href=\"https:\/\/forum.immogo.com\" target=\"_blank\" id=\"ig-banner-learn\">Learn more<\/a>\n      <\/div>\n      <div class=\"ig-translate-note\" id=\"ig-translate-note\" style=\"display:none;\"><\/div>\n    <\/div>\n    <div class=\"ig-result-card\">\n      <div class=\"ig-result-header\">\n        <div class=\"ig-result-title\" id=\"ig-result-title\">Your professional listing<\/div>\n        <div style=\"display:flex;gap:6px;flex-wrap:wrap;\">\n          <button class=\"ig-copy-btn\" id=\"ig-btn-copy\">Copy all<\/button>\n          <button class=\"ig-copy-btn\" id=\"ig-btn-translate\" style=\"display:none;\"><\/button>\n        <\/div>\n      <\/div>\n      <div id=\"ig-result-sections\"><\/div>\n    <\/div>\n    <div class=\"ig-refine-panel\">\n      <div class=\"ig-refine-label\" id=\"ig-refine-label\">Would you like to change something?<\/div>\n      <div class=\"ig-refine-hint\" id=\"ig-refine-hint\">Tell us what you'd like to change or add - the AI will refine the listing for you.<\/div>\n      <div class=\"ig-refine-row\">\n        <textarea class=\"ig-refine-input\" id=\"ig-refine-input\" placeholder=\"e.g. : The garden is 800m2, not 500m2. Add that the house is sold furnished.\"><\/textarea>\n        <button class=\"ig-refine-btn\" id=\"ig-refine-btn\">Refine \u2192<\/button>\n      <\/div>\n    <\/div>\n    <div class=\"ig-actions\">\n      <button class=\"ig-btn-primary\" id=\"ig-btn-regen\">Regenerate<\/button>\n      <button class=\"ig-btn-secondary\" id=\"ig-btn-restart\">New property<\/button>\n    <\/div>\n  <\/div>\n<\/div>\n\n<script>\nfunction igInit() {\n  if (document.getElementById('immogo-gen') === null) return;\n  if (window._immogoInitDone) return;\n  window._immogoInitDone = true;\n\nvar PROXY = 'https:\/\/immogo.com\/api\/anthropic-proxy.php';\n\n\/\/ System prompt is handled server-side by the proxy.\n\nvar T = {\n  fr: {\n    subtitle:\"Decrivez votre bien. L'IA vous pose les bonnes questions, puis redige une annonce professionnelle \u2014 sans cliches.\",\n    labelBasics:\"Informations de base\", labelInterview:\"Entretien avec l'IA\", labelResult:\"Annonce generee\",\n    lType:\"Type de bien\", lLocation:\"Commune et code postal\", lPrice:\"Prix demande (euros)\", lSize:\"Surface habitable (m2)\",\n    lRooms:\"Chambres\", lYear:\"Annee de construction\", lDesc:\"Decrivez votre bien, ou collez votre texte ci-dessous\",\n    btnStart:\"Lancer l'entretien IA\", formError:\"Veuillez remplir au moins la commune et une description.\",\n    replyPh:\"Votre reponse...\", resultTitle:\"Votre annonce professionnelle\",\n    btnCopy:\"Copier tout\", btnRegen:\"Regenerer\", btnRestart:\"Nouveau bien\", copied:\"Copie !\",\n    tags:{TITLE:\"Titre\",INTRO:\"Accroche\",VISIT:\"Visite\",EXTERIOR:\"Exterieur\",DETAILS:\"Infos techniques\",HEADER:\"\"},\n    bannerTitle:\"Votre annonce est prete. Voici comment la publier :\",\n    bannerText:\"\",\n    step1:\"Copiez votre texte et sauvegardez-le (email a vous-meme, Notes, Word) \u2014 la page ne le conserve pas.\",\n    step2:\"Creez votre compte Immogo \u2014 abonnement a partir de 17 euros\/mois, sans commission.\",\n    step3:\"Ajoutez votre annonce et collez votre texte dans le formulaire. Nous nous occupons des traductions NL et EN et du partage mensuel sur Facebook.\",\n    bannerCta:\"Creer mon compte Immogo\", bannerLearn:\"En savoir plus\",\n    langNotice:\"\", translateBtn:\"\", translateNote:\"\",\n    pathLabelPaste:\"J'ai deja un texte\", pathLabelScratch:\"Je pars de zero\",\n    hintPaste:\"L'IA restructure votre texte, elimine les cliches et ajoute ce qui manque.\",\n    lIntro:\"Introduction et situation\", hintIntro:\"Type de bien, atouts principaux, environnement, calme, vue, distances des commerces et transports.\",\n    lVisit:\"Description \/ visite du bien\", hintVisit:\"Decrivez les pieces niveau par niveau. Surfaces, lumiere, equipements remarquables.\",\n    lExterior:\"Exterieur et jardin\", hintExterior:\"Jardin, terrasse, piscine, garage, parking. Donnez les surfaces et dimensions.\",\n    lDetails:\"Autres informations\", hintDetails:\"DPE, chauffage, annee de construction, travaux recents, disponibilite, taxe fonciere.\",\n    refineLabel:\"Vous voulez modifier quelque chose ?\",\n    refineHint:\"Indiquez ce que vous souhaitez changer ou ajouter \u2014 l'IA affine l'annonce pour vous.\",\n    refinePlaceholder:\"ex : Le jardin fait 800m2, pas 500m2. Ajoutez que la maison est vendue meublee.\",\n    refineBtn:\"Affiner\"\n  },\n  nl: {\n    subtitle:\"Beschrijf uw woning. De AI stelt de juiste vragen en schrijft een professionele advertentie zonder cliches.\",\n    labelBasics:\"Basisinformatie\", labelInterview:\"Gesprek met de AI\", labelResult:\"Gegenereerde advertentie\",\n    lType:\"Type woning\", lLocation:\"Gemeente en postcode\", lPrice:\"Vraagprijs (euro)\", lSize:\"Bewoonbare oppervlakte (m2)\",\n    lRooms:\"Slaapkamers\", lYear:\"Bouwjaar\", lDesc:\"Beschrijf uw woning, of plak uw tekst hieronder\",\n    btnStart:\"Start het AI-gesprek\", formError:\"Vul minstens de gemeente en een beschrijving in.\",\n    replyPh:\"Uw antwoord...\", resultTitle:\"Uw professionele advertentie\",\n    btnCopy:\"Alles kopieren\", btnRegen:\"Opnieuw genereren\", btnRestart:\"Nieuwe woning\", copied:\"Gekopieerd!\",\n    tags:{TITLE:\"Titel\",INTRO:\"Inleiding\",VISIT:\"Rondleiding\",EXTERIOR:\"Buitenruimte\",DETAILS:\"Technische info\",HEADER:\"\"},\n    bannerTitle:\"Uw advertentie is klaar. Zo publiceert u hem:\",\n    bannerText:\"\",\n    step1:\"Kopieer uw tekst en sla hem op (e-mail aan uzelf, Notes, Word) \u2014 de pagina bewaart hem niet.\",\n    step2:\"Maak uw Immogo-account aan \u2014 abonnement vanaf 17 euro\/maand, zonder commissie.\",\n    step3:\"Voeg uw advertentie toe en plak uw tekst in het formulier. Wij zorgen voor de vertalingen en het maandelijkse delen op Facebook.\",\n    bannerCta:\"Mijn Immogo-account aanmaken\", bannerLearn:\"Meer info\",\n    langNotice:\"Uw advertentie wordt in het Nederlands opgesteld. Voor Immogo bieden we ook een Franse vertaling aan.\",\n    translateBtn:\"Vertalen naar het Frans\", translateNote:\"Immogo publiceert in het Frans \u2014 we vertalen uw advertentie.\",\n    pathLabelPaste:\"Ik heb al een tekst\", pathLabelScratch:\"Ik begin van nul\",\n    hintPaste:\"De AI herstructureert uw tekst, verwijdert cliches en vult aan wat ontbreekt.\",\n    lIntro:\"Introductie en ligging\", hintIntro:\"Type woning, voornaamste troeven, omgeving, rust, uitzicht, afstand tot winkels en openbaar vervoer.\",\n    lVisit:\"Beschrijving \/ rondleiding\", hintVisit:\"Beschrijf de kamers per verdieping. Oppervlakten, licht, opmerkelijke kenmerken.\",\n    lExterior:\"Buitenruimte en tuin\", hintExterior:\"Tuin, terras, zwembad, garage, parking. Geef afmetingen en oppervlakten.\",\n    lDetails:\"Overige informatie\", hintDetails:\"EPC, verwarming, bouwjaar, recente werken, beschikbaarheid, onroerende voorheffing.\",\n    refineLabel:\"Wilt u iets aanpassen?\",\n    refineHint:\"Geef aan wat u wilt wijzigen of toevoegen - de AI verfijnt de advertentie voor u.\",\n    refinePlaceholder:\"bijv. : De tuin is 800m2, niet 500m2. Voeg toe dat de woning gemeubileerd wordt verkocht.\",\n    refineBtn:\"Verfijnen\"\n  },\n  en: {\n    subtitle:\"Describe your property. The AI asks the right questions, then writes a professional listing - no cliches.\",\n    labelBasics:\"Basic information\", labelInterview:\"AI interview\", labelResult:\"Your listing\",\n    lType:\"Property type\", lLocation:\"Town and postal code\", lPrice:\"Asking price (euros)\", lSize:\"Living area (m2)\",\n    lRooms:\"Bedrooms\", lYear:\"Year built\", lDesc:\"Describe your property, or paste your text below\",\n    btnStart:\"Start AI interview\", formError:\"Please fill in at least the town and a description.\",\n    replyPh:\"Your answer...\", resultTitle:\"Your professional listing\",\n    btnCopy:\"Copy all\", btnRegen:\"Regenerate\", btnRestart:\"New property\", copied:\"Copied!\",\n    tags:{TITLE:\"Headline\",INTRO:\"Introduction\",VISIT:\"Property tour\",EXTERIOR:\"Exterior\",DETAILS:\"Technical details\",HEADER:\"\"},\n    bannerTitle:\"Your listing is ready. Here is how to publish it:\",\n    bannerText:\"\",\n    step1:\"Copy your text and save it somewhere (email to yourself, Notes, Word) \u2014 the page does not keep it.\",\n    step2:\"Create your Immogo account \u2014 from 17 euros\/month, no commission.\",\n    step3:\"Add your listing and paste your text into the form. We handle the FR and NL translations and monthly Facebook sharing.\",\n    bannerCta:\"Create my Immogo account\", bannerLearn:\"Learn more\",\n    langNotice:\"You are writing in English. Immogo publishes in French \u2014 we will offer a translation once ready.\",\n    translateBtn:\"Translate to French\", translateNote:\"Immogo publishes in French \u2014 we will translate your listing.\",\n    pathLabelPaste:\"I already have a text\", pathLabelScratch:\"I'm starting from scratch\",\n    hintPaste:\"The AI restructures your text, removes cliches and adds what's missing.\",\n    lIntro:\"Introduction and location\", hintIntro:\"Property type, main assets, environment, peace, view, distances to shops and transport.\",\n    lVisit:\"Description \/ property tour\", hintVisit:\"Describe the rooms level by level. Areas, light, remarkable features.\",\n    lExterior:\"Exterior and garden\", hintExterior:\"Garden, terrace, pool, garage, parking. Give dimensions and areas.\",\n    lDetails:\"Other information\", hintDetails:\"EPC, heating, year built, recent works, availability, property tax.\",\n    refineLabel:\"Would you like to change something?\",\n    refineHint:\"Tell us what you'd like to change or add - the AI will refine the listing for you.\",\n    refinePlaceholder:\"e.g. : The garden is 800m2, not 500m2. Add that the house is sold furnished.\",\n    refineBtn:\"Refine\"\n  }\n};\n\nvar lang = 'en';\nvar history = [];\nvar propData = {};\nvar loading = false;\nvar adText = '';\n\nfunction g(id) { return document.getElementById(id); }\n\nfunction applyT() {\n  var t = T[lang];\n  var map = {\n    \/\/ subtitle removed \u2014 replaced by static heading'ig-label-basics':'labelBasics','ig-label-interview':'labelInterview',\n    'ig-label-result':'labelResult','ig-l-type':'lType','ig-l-location':'lLocation','ig-l-price':'lPrice',\n    'ig-l-size':'lSize','ig-l-rooms':'lRooms','ig-l-year':'lYear','ig-l-desc':'lDesc',\n    'ig-btn-start':'btnStart','ig-form-error':'formError','ig-result-title':'resultTitle',\n    'ig-btn-copy':'btnCopy','ig-btn-regen':'btnRegen','ig-btn-restart':'btnRestart',\n    'ig-banner-title':'bannerTitle','ig-banner-cta':'bannerCta','ig-banner-learn':'bannerLearn'\n  };\n  var s1=g('ig-step1-text'); if(s1&&t.step1) s1.textContent=t.step1;\n  var s2=g('ig-step2-text'); if(s2&&t.step2) s2.textContent=t.step2;\n  var s3=g('ig-step3-text'); if(s3&&t.step3) s3.textContent=t.step3;\n  var memberLinks={'fr':'https:\/\/forum.immogo.com\/fr\/membership-checkout\/','nl':'https:\/\/forum.immogo.com\/nl\/lidmaatschap-afrekenen\/','en':'https:\/\/forum.immogo.com\/en\/membership-checkout\/'};\n  var ctaEl=g('ig-banner-cta'); if(ctaEl) ctaEl.href=memberLinks[lang]||memberLinks['fr'];\n  for (var id in map) { var el = g(id); if (el) el.textContent = t[map[id]] || ''; }\n  var ri = g('ig-reply-input'); if (ri) ri.placeholder = t.replyPh;\n  var oh = g('ig-opt-house'); if (oh) oh.textContent = lang==='nl' ? 'Huis' : lang==='en' ? 'House' : 'Maison';\n  var og = g('ig-opt-ground'); if (og) og.textContent = lang==='nl' ? 'Grond' : lang==='en' ? 'Land' : 'Terrain';\n  var oc = g('ig-opt-comm'); if (oc) oc.textContent = lang==='nl' ? 'Handelspand' : lang==='en' ? 'Commercial \/ Office' : 'Commerce \/ Bureau';\n  var n = g('ig-lang-notice');\n  if (n) { if (t.langNotice) { n.textContent = t.langNotice; n.classList.add('show'); } else { n.classList.remove('show'); n.textContent = ''; } }\n  var tb = g('ig-btn-translate');\n  if (tb) { if (lang !== 'fr' && t.translateBtn) { tb.textContent = t.translateBtn; tb.style.display = 'inline-block'; } else { tb.style.display = 'none'; } }\n  var tn = g('ig-translate-note');\n  if (tn) { if (lang !== 'fr' && t.translateNote) { tn.textContent = t.translateNote; tn.style.display = 'block'; } else { tn.style.display = 'none'; tn.textContent = ''; } }\n  \/\/ New path toggle and refine elements\n  var ppl = g('ig-path-label-paste'); if(ppl && t.pathLabelPaste) ppl.textContent = t.pathLabelPaste;\n  var psl = g('ig-path-label-scratch'); if(psl && t.pathLabelScratch) psl.textContent = t.pathLabelScratch;\n  var hp = g('ig-hint-paste'); if(hp && t.hintPaste) hp.textContent = t.hintPaste;\n  var li = g('ig-l-intro'); if(li && t.lIntro) li.textContent = t.lIntro;\n  var hi = g('ig-hint-intro'); if(hi && t.hintIntro) hi.textContent = t.hintIntro;\n  var lv = g('ig-l-visit'); if(lv && t.lVisit) lv.textContent = t.lVisit;\n  var hv = g('ig-hint-visit'); if(hv && t.hintVisit) hv.textContent = t.hintVisit;\n  var le = g('ig-l-exterior'); if(le && t.lExterior) le.textContent = t.lExterior;\n  var he = g('ig-hint-exterior'); if(he && t.hintExterior) he.textContent = t.hintExterior;\n  var ld = g('ig-l-details'); if(ld && t.lDetails) ld.textContent = t.lDetails;\n  var hd = g('ig-hint-details'); if(hd && t.hintDetails) hd.textContent = t.hintDetails;\n  var rl = g('ig-refine-label'); if(rl && t.refineLabel) rl.textContent = t.refineLabel;\n  var rh = g('ig-refine-hint'); if(rh && t.refineHint) rh.textContent = t.refineHint;\n  var ri2 = g('ig-refine-input'); if(ri2 && t.refinePlaceholder) ri2.placeholder = t.refinePlaceholder;\n  var rb = g('ig-refine-btn'); if(rb && t.refineBtn) rb.textContent = t.refineBtn;\n}\n\nfunction setLang(l) {\n  lang = l;\n  document.querySelectorAll('#immogo-gen .ig-lang-btn').forEach(function(b) {\n    b.classList.toggle('active', b.getAttribute('data-lang') === l);\n  });\n  applyT();\n}\n\nfunction showPhase(id) {\n  ['ig-phase-form','ig-phase-chat','ig-phase-result'].forEach(function(p) { g(p).classList.remove('active'); });\n  g(id).classList.add('active');\n  var map = {'ig-phase-form':0,'ig-phase-chat':1,'ig-phase-result':2};\n  var cur = map[id];\n  ['ig-step1','ig-step2','ig-step3'].forEach(function(s, i) {\n    var el = g(s); el.classList.remove('done','active');\n    if (i < cur) el.classList.add('done');\n    if (i === cur) el.classList.add('active');\n  });\n}\n\nfunction makeRefCode(location) {\n  var now = new Date();\n  var yy = now.getFullYear().toString().slice(2);\n  var mm = String(now.getMonth()+1).padStart(2,'0');\n  var dd = String(now.getDate()).padStart(2,'0');\n  var commune = (location||'').toLowerCase()\n    .normalize('NFD').replace(\/[\\u0300-\\u036f]\/g,'')\n    .split(\/[^a-z]+\/)[0]\n    .replace(\/[^a-z]\/g,'');\n  return 'ig' + yy + mm + dd + commune;\n}\n\nfunction propSummary() {\n  var refCode = makeRefCode(propData.location);\n  propData.refCode = refCode;\n  var base = 'DONNEES DU BIEN :\\n- Lieu : ' + (propData.location||'non precise') +\n    '\\n- Prix : ' + (propData.price ? propData.price+' euros' : 'non precise');\n\n  if (propData.path === 'scratch') {\n    base += '\\n\\nINTRODUCTION ET SITUATION :\\n' + (propData.intro||'') +\n      '\\n\\nDESCRIPTION \/ VISITE :\\n' + (propData.visit||'') +\n      '\\n\\nEXTERIEUR ET JARDIN :\\n' + (propData.exterior||'') +\n      '\\n\\nAUTRES INFORMATIONS :\\n' + (propData.details||'');\n  } else {\n    base += '\\n\\nTEXTE DU VENDEUR :\\n' + (propData.description||'');\n  }\n\n  base += '\\n\\nCODE DE REFERENCE UNIQUE A UTILISER : ' + refCode +\n    '\\nInsere ce code tel quel dans la section [INTRO], sur une ligne separee a la fin, precede de Ref. :';\n  return base;\n}\n\nvar currentPath = 'paste';\n\nfunction switchPath(path) {\n  currentPath = path;\n  g('ig-path-paste').classList.toggle('active', path === 'paste');\n  g('ig-path-scratch').classList.toggle('active', path === 'scratch');\n  g('ig-path-btn-paste').classList.toggle('active', path === 'paste');\n  g('ig-path-btn-scratch').classList.toggle('active', path === 'scratch');\n}\n\nfunction startInterview() {\n  var loc = g('ig-prop-location').value.trim();\n  var err = g('ig-form-error');\n  var hasContent = false;\n\n  if (currentPath === 'paste') {\n    var desc = g('ig-prop-desc').value.trim();\n    if (!loc || !desc) { err.classList.add('show'); return; }\n    propData = { path:'paste', location:loc, price:g('ig-prop-price').value, description:desc };\n    hasContent = true;\n  } else {\n    var intro = (g('ig-scratch-intro').value||'').trim();\n    var visit = (g('ig-scratch-visit').value||'').trim();\n    var exterior = (g('ig-scratch-exterior').value||'').trim();\n    var details = (g('ig-scratch-details').value||'').trim();\n    if (!loc || (!intro && !visit)) { err.classList.add('show'); return; }\n    propData = { path:'scratch', location:loc, price:g('ig-prop-price').value, intro:intro, visit:visit, exterior:exterior, details:details };\n    hasContent = true;\n  }\n\n  if (!hasContent) { err.classList.add('show'); return; }\n  err.classList.remove('show');\n  history = [];\n  g('ig-chat-thread').innerHTML = '';\n  showPhase('ig-phase-chat');\n  history.push({role:'user', content: propSummary() + '\\n\\nCommence l\\'entretien maintenant.'});\n  callAPI();\n}\n\nfunction sendReply() {\n  var inp = g('ig-reply-input');\n  var text = inp.value.trim();\n  if (!text || loading) return;\n  inp.value = ''; inp.style.height = '';\n  g('ig-chat-error').classList.remove('show');\n  addMsg('user', text);\n  history.push({role:'user', content:text});\n  callAPI();\n}\n\nfunction callAPI() {\n  if (loading) return;\n  loading = true; setSend(false);\n  var tid = addTyping();\n  fetch(PROXY, {\n    method:'POST',\n    headers:{'Content-Type':'application\/json'},\n    body: JSON.stringify({model:'claude-sonnet-4-6', max_tokens:4000, lang:lang, messages:history})\n  })\n  .then(function(r) { return r.json(); })\n  .then(function(d) {\n    removeTyping(tid);\n    if (d.error) { showErr(d.error.message || 'Erreur API'); loading=false; setSend(true); return; }\n    var reply = d.content.map(function(b){return b.text||'';}).join('');\n    history.push({role:'assistant', content:reply});\n    if (reply.indexOf('===AD_START===') > -1 && reply.indexOf('===AD_END===') > -1) {\n      var m = reply.match(\/===AD_START===([\\s\\S]*?)===AD_END===\/);\n      if (m) {\n        \/\/ Show any preamble message in chat before switching to result\n        var preamble = reply.slice(0, reply.indexOf('===AD_START===')).trim();\n        if (preamble) addMsg('ai', preamble);\n        adText = m[1].trim(); renderResult(adText); showPhase('ig-phase-result');\n      }\n    } else { addMsg('ai', reply); }\n    loading=false; setSend(true);\n  })\n  .catch(function(e) { removeTyping(tid); showErr('Erreur reseau : '+e.message); loading=false; setSend(true); });\n}\n\nfunction addMsg(role, text) {\n  var thread = g('ig-chat-thread');\n  var div = document.createElement('div'); div.className = 'ig-msg ' + role;\n  var av = document.createElement('div'); av.className = 'ig-avatar ' + (role==='ai' ? 'ai' : 'human'); av.textContent = role==='ai' ? 'i' : 'V';\n  var bub = document.createElement('div'); bub.className = 'ig-bubble'; bub.textContent = text;\n  div.appendChild(av); div.appendChild(bub); thread.appendChild(div); thread.scrollTop = thread.scrollHeight;\n}\n\nfunction addTyping() {\n  var thread = g('ig-chat-thread');\n  var div = document.createElement('div'); div.className = 'ig-msg ai'; div.id = 'ig-t-'+Date.now();\n  div.innerHTML = '<div class=\"ig-avatar ai\">i<\/div><div class=\"ig-bubble\"><div class=\"ig-typing\"><div class=\"ig-dot\"><\/div><div class=\"ig-dot\"><\/div><div class=\"ig-dot\"><\/div><\/div><\/div>';\n  thread.appendChild(div); thread.scrollTop = thread.scrollHeight; return div.id;\n}\n\nfunction removeTyping(id) { var el = g(id); if (el) el.remove(); }\nfunction setSend(v) { var s = g('ig-send-btn'); if (s) s.disabled = !v; }\nfunction showErr(msg) { var el = g('ig-chat-error'); if (el) { el.textContent = msg; el.classList.add('show'); } }\n\nfunction renderResult(text) {\n  var t = T[lang]; var c = g('ig-result-sections'); c.innerHTML = '';\n  \/\/ Strip any preamble text before the first section tag\n  var firstTag = text.search(\/\\[[A-Z]+\\]\/);\n  if (firstTag > 0) text = text.slice(firstTag);\n  var parts = text.split(\/\\[([A-Z]+)\\]\/);\n  for (var i = 1; i < parts.length; i += 2) {\n    var key = parts[i]; var content = (parts[i+1]||'').trim(); if (!content) continue;\n    var sec = document.createElement('div'); sec.className = 'ig-ad-section';\n    if (key === 'HEADER') {\n      sec.style.cssText = 'padding:1rem 1.25rem 0.75rem;border-bottom:1px solid #f0f0f0;';\n      var lines = content.split('\\n').filter(function(l){return l.trim();});\n      var loc = document.createElement('div');\n      loc.style.cssText = 'font-size:15px;font-weight:500;color:#444;';\n      loc.textContent = lines[0]||'';\n      var price = document.createElement('div');\n      price.style.cssText = 'font-size:22px;font-weight:700;color:#111;margin-top:2px;';\n      price.textContent = lines[1]||'';\n      sec.appendChild(loc); sec.appendChild(price); c.appendChild(sec);\n    } else {\n      var tag = document.createElement('div'); tag.className = 'ig-ad-tag'; tag.textContent = t.tags[key]||key;\n      var body = document.createElement('div'); body.className = 'ig-ad-content'+(key==='TITLE'?' headline':''); body.textContent = content;\n      sec.appendChild(tag); sec.appendChild(body); c.appendChild(sec);\n    }\n  }\n}\n\nfunction copyAll() {\n  var parts = [];\n  \/\/ Collect header (commune + price) from the HEADER section\n  var headerSec = document.querySelector('#immogo-gen .ig-ad-section');\n  if (headerSec) {\n    var headerLines = Array.from(headerSec.querySelectorAll('div')).map(function(d){ return d.textContent.trim(); }).filter(Boolean);\n    if (headerLines.length) parts.push(headerLines.join('\\n'));\n  }\n  \/\/ Collect the rest of the ad content\n  var secs = document.querySelectorAll('#immogo-gen .ig-ad-content');\n  Array.from(secs).forEach(function(s){ if (s.textContent.trim()) parts.push(s.textContent.trim()); });\n  var text = parts.join('\\n\\n');\n  navigator.clipboard.writeText(text).then(function() {\n    var btn = g('ig-btn-copy'); var orig = T[lang].btnCopy;\n    btn.textContent = T[lang].copied;\n    setTimeout(function(){ btn.textContent = orig; }, 2000);\n  });\n}\n\nfunction requestTranslation() {\n  var btn = g('ig-btn-translate'); btn.disabled = true; btn.textContent = '...';\n  fetch(PROXY, {\n    method:'POST', headers:{'Content-Type':'application\/json'},\n    body: JSON.stringify({model:'claude-sonnet-4-6', max_tokens:4000, lang:'fr',\n      messages:[{role:'user', content:'Traduis cette annonce en francais selon les regles Immogo. Garde exactement le meme format avec ===AD_START=== et ===AD_END===.\\n\\n'+adText}]})\n  })\n  .then(function(r){return r.json();})\n  .then(function(d){\n    if (!d.error) { var reply=d.content.map(function(b){return b.text||'';}).join(''); var m=reply.match(\/===AD_START===([\\s\\S]*?)===AD_END===\/); if(m){adText=m[1].trim();renderResult(adText);} }\n    btn.textContent = T[lang].translateBtn; btn.disabled = false;\n  })\n  .catch(function(){ btn.textContent = T[lang].translateBtn; btn.disabled = false; });\n}\n\nfunction regenerate() {\n  var msg = lang==='nl' ? 'Schrijf een alternatieve versie met een andere invalshoek.' : lang==='en' ? 'Write an alternative version with a different angle.' : 'Propose une version alternative avec un angle different, selon les memes regles.';\n  showPhase('ig-phase-chat'); history.push({role:'user',content:msg}); addMsg('user',msg); callAPI();\n}\n\nfunction refineAd() {\n  var inp = g('ig-refine-input');\n  var text = inp.value.trim();\n  if (!text || loading) return;\n  var msg = 'Voici les modifications souhait\u00e9es par le vendeur. Merci de produire une version finale corrig\u00e9e de l\\'annonce en tenant compte de ces ajustements :\\n\\n' + text +\n    '\\n\\nAnnonce actuelle :\\n' + adText +\n    '\\n\\nProduis la version corrig\u00e9e dans le m\u00eame format ===AD_START=== ... ===AD_END===.';\n  history.push({role:'user', content:msg});\n  inp.value = '';\n  g('ig-refine-btn').disabled = true;\n  showPhase('ig-phase-chat');\n  addMsg('user', text);\n  callAPI();\n}\n\nfunction restart() {\n  history=[]; propData={}; adText=''; currentPath='paste';\n  ['ig-prop-location','ig-prop-price','ig-prop-desc','ig-scratch-intro','ig-scratch-visit','ig-scratch-exterior','ig-scratch-details'].forEach(function(id){var el=g(id);if(el)el.value='';});\n  switchPath('paste');\n  g('ig-chat-thread').innerHTML=''; showPhase('ig-phase-form');\n}\n\n\/\/ Wire up all buttons via event listeners \u2014 no onclick attributes\ndocument.querySelectorAll('#immogo-gen .ig-lang-btn').forEach(function(btn) {\n  btn.addEventListener('click', function() { setLang(btn.getAttribute('data-lang')); });\n});\ng('ig-btn-start').addEventListener('click', startInterview);\ng('ig-send-btn').addEventListener('click', sendReply);\ng('ig-btn-copy').addEventListener('click', copyAll);\ng('ig-btn-translate').addEventListener('click', requestTranslation);\ng('ig-btn-regen').addEventListener('click', regenerate);\ng('ig-btn-restart').addEventListener('click', restart);\ng('ig-path-btn-paste').addEventListener('click', function() { switchPath('paste'); });\ng('ig-path-btn-scratch').addEventListener('click', function() { switchPath('scratch'); });\ng('ig-refine-btn').addEventListener('click', refineAd);\ng('ig-reply-input').addEventListener('keydown', function(e) {\n  if (e.key==='Enter' && !e.shiftKey) { e.preventDefault(); sendReply(); }\n  var ta = g('ig-reply-input'); ta.style.height='auto'; ta.style.height=Math.min(ta.scrollHeight,120)+'px';\n});\nvar ri3 = g('ig-refine-input'); if (ri3) { ri3.addEventListener('keydown', function(e) {\n  if (e.key==='Enter' && !e.shiftKey) { e.preventDefault(); refineAd(); }\n}); }\n\napplyT();\nsetSend(true);\n\n} \/\/ end igInit\n\n\/\/ Fire on DOMContentLoaded, or immediately if DOM already ready\nif (document.readyState === 'loading') {\n  document.addEventListener('DOMContentLoaded', igInit);\n} else {\n  igInit();\n}\n<\/script>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>A free expert writer at your service Writing a good real estate ad is harder than it looks. Most texts suffer from the same flaws: too many superlatives, not enough facts, clich\u00e9s that everyone recognizes and no one reads anymore. This AI tool has been trained with the editorial rules that Immogo applies to every [&hellip;]<\/p>\n","protected":false},"author":7,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"pmpro_default_level":"","footnotes":""},"class_list":["post-5532","page","type-page","status-publish","hentry","pmpro-has-access","beehive-post"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.8 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Ad generator with AI AI text generator<\/title>\n<meta name=\"description\" content=\"Create your ad using artificial intelligence (AI). Our robot editor asks you questions for the best result.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/immogo.com\/fr\/generateur-annonces-intelligence-artificielle\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Ad generator with AI AI text generator\" \/>\n<meta property=\"og:description\" content=\"Create your ad using artificial intelligence (AI). Our robot editor asks you questions for the best result.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/immogo.com\/fr\/generateur-annonces-intelligence-artificielle\/\" \/>\n<meta property=\"og:site_name\" content=\"Immogo\" \/>\n<meta property=\"article:modified_time\" content=\"2026-06-26T16:38:55+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"2 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/immogo.com\\\/fr\\\/generateur-annonces-intelligence-artificielle\\\/\",\"url\":\"https:\\\/\\\/immogo.com\\\/fr\\\/generateur-annonces-intelligence-artificielle\\\/\",\"name\":\"Ad generator with AI AI text generator\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/immogo.com\\\/fr\\\/#website\"},\"datePublished\":\"2026-04-17T17:15:38+00:00\",\"dateModified\":\"2026-06-26T16:38:55+00:00\",\"description\":\"Create your ad using artificial intelligence (AI). Our robot editor asks you questions for the best result.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/immogo.com\\\/fr\\\/generateur-annonces-intelligence-artificielle\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/immogo.com\\\/fr\\\/generateur-annonces-intelligence-artificielle\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/immogo.com\\\/fr\\\/generateur-annonces-intelligence-artificielle\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/immogo.com\\\/en\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Ad generator with AI\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/immogo.com\\\/fr\\\/#website\",\"url\":\"https:\\\/\\\/immogo.com\\\/fr\\\/\",\"name\":\"Immogo\",\"description\":\"Huizen in Frankrijk zonder makelaar\",\"publisher\":{\"@id\":\"https:\\\/\\\/immogo.com\\\/fr\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/immogo.com\\\/fr\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/immogo.com\\\/fr\\\/#organization\",\"name\":\"Immogo\",\"url\":\"https:\\\/\\\/immogo.com\\\/fr\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/immogo.com\\\/fr\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/immogo.com\\\/wp-content\\\/uploads\\\/2025\\\/07\\\/logo-2.png\",\"contentUrl\":\"https:\\\/\\\/immogo.com\\\/wp-content\\\/uploads\\\/2025\\\/07\\\/logo-2.png\",\"width\":220,\"height\":36,\"caption\":\"Immogo\"},\"image\":{\"@id\":\"https:\\\/\\\/immogo.com\\\/fr\\\/#\\\/schema\\\/logo\\\/image\\\/\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Ad generator with AI AI text generator","description":"Create your ad using artificial intelligence (AI). Our robot editor asks you questions for the best result.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/immogo.com\/fr\/generateur-annonces-intelligence-artificielle\/","og_locale":"en_US","og_type":"article","og_title":"Ad generator with AI AI text generator","og_description":"Create your ad using artificial intelligence (AI). Our robot editor asks you questions for the best result.","og_url":"https:\/\/immogo.com\/fr\/generateur-annonces-intelligence-artificielle\/","og_site_name":"Immogo","article_modified_time":"2026-06-26T16:38:55+00:00","twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"2 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/immogo.com\/fr\/generateur-annonces-intelligence-artificielle\/","url":"https:\/\/immogo.com\/fr\/generateur-annonces-intelligence-artificielle\/","name":"Ad generator with AI AI text generator","isPartOf":{"@id":"https:\/\/immogo.com\/fr\/#website"},"datePublished":"2026-04-17T17:15:38+00:00","dateModified":"2026-06-26T16:38:55+00:00","description":"Create your ad using artificial intelligence (AI). Our robot editor asks you questions for the best result.","breadcrumb":{"@id":"https:\/\/immogo.com\/fr\/generateur-annonces-intelligence-artificielle\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/immogo.com\/fr\/generateur-annonces-intelligence-artificielle\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/immogo.com\/fr\/generateur-annonces-intelligence-artificielle\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/immogo.com\/en\/"},{"@type":"ListItem","position":2,"name":"Ad generator with AI"}]},{"@type":"WebSite","@id":"https:\/\/immogo.com\/fr\/#website","url":"https:\/\/immogo.com\/fr\/","name":"Immogo","description":"Huizen in Frankrijk zonder makelaar","publisher":{"@id":"https:\/\/immogo.com\/fr\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/immogo.com\/fr\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/immogo.com\/fr\/#organization","name":"Immogo","url":"https:\/\/immogo.com\/fr\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/immogo.com\/fr\/#\/schema\/logo\/image\/","url":"https:\/\/immogo.com\/wp-content\/uploads\/2025\/07\/logo-2.png","contentUrl":"https:\/\/immogo.com\/wp-content\/uploads\/2025\/07\/logo-2.png","width":220,"height":36,"caption":"Immogo"},"image":{"@id":"https:\/\/immogo.com\/fr\/#\/schema\/logo\/image\/"}}]}},"_links":{"self":[{"href":"https:\/\/immogo.com\/en\/wp-json\/wp\/v2\/pages\/5532","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/immogo.com\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/immogo.com\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/immogo.com\/en\/wp-json\/wp\/v2\/users\/7"}],"replies":[{"embeddable":true,"href":"https:\/\/immogo.com\/en\/wp-json\/wp\/v2\/comments?post=5532"}],"version-history":[{"count":0,"href":"https:\/\/immogo.com\/en\/wp-json\/wp\/v2\/pages\/5532\/revisions"}],"wp:attachment":[{"href":"https:\/\/immogo.com\/en\/wp-json\/wp\/v2\/media?parent=5532"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}