• title:: Site forfaitdeal
  • project-name:: ForfaitDeal
  • primary-market:: ch
  • target-countries:: ch, fr
  • seo-scope:: national
  • agent-mode:: full_autonomy
  • summary
    • { “site_key”: “forfaitdeal”, “counts”: { “memory_entries”: 264, “lessons”: 91, “sop_documents”: 98, “events”: 340, “observations”: 472, “outcomes”: 81, “learning_sessions”: 71 }, “recent_lessons”: [ { “id”: 227, “site_key”: “forfaitdeal”, “category”: “ctr_optimization”, “lesson”: “Several visible pages have low CTR. Prioritize title, meta description, and intent alignment refreshes before creating net new content.”, “confidence”: “high”, “source”: “feedback_loop”, “status”: “validated”, “details_json”: { “pages”: [ { “ctr”: 0.0, “page”: “https://www.forfaitdeal.ch/blog/forfait-mobile-suisse-roaming-europe”, “clicks”: 0, “position”: 24.365853658536587, “top_query”: “roaming suisse”, “impressions”: 41 }, { “ctr”: 0.0, “page”: “https://www.forfaitdeal.ch/blog/portabilite-numero-mobile-suisse”, “clicks”: 0, “position”: 9.1, “top_query”: “conserver numero mobile”, “impressions”: 40 }, { “ctr”: 0.0, “page”: “https://www.forfaitdeal.ch/blog/forfait-data-suisse”, “clicks”: 0, “position”: 6.59375, “top_query”: "", “impressions”: 32 }, { “ctr”: 0.0, “page”: “https://www.forfaitdeal.ch/blog/comparatif-abonnement-mobile-suisse”, “clicks”: 0, “position”: 10.444444444444445, “top_query”: “comparatif operateurs mobile suisse”, “impressions”: 27 } ] }, “created_at”: “2026-06-20 00:00:20.134175+00:00”, “updated_at”: “2026-06-20 00:00:21.180812+00:00”, “details”: { “pages”: [ { “ctr”: 0.0, “page”: “https://www.forfaitdeal.ch/blog/forfait-mobile-suisse-roaming-europe”, “clicks”: 0, “position”: 24.365853658536587, “top_query”: “roaming suisse”, “impressions”: 41 }, { “ctr”: 0.0, “page”: “https://www.forfaitdeal.ch/blog/portabilite-numero-mobile-suisse”, “clicks”: 0, “position”: 9.1, “top_query”: “conserver numero mobile”, “impressions”: 40 }, { “ctr”: 0.0, “page”: “https://www.forfaitdeal.ch/blog/forfait-data-suisse”, “clicks”: 0, “position”: 6.59375, “top_query”: "", “impressions”: 32 }, { “ctr”: 0.0, “page”: “https://www.forfaitdeal.ch/blog/comparatif-abonnement-mobile-suisse”, “clicks”: 0, “position”: 10.444444444444445, “top_query”: “comparatif operateurs mobile suisse”, “impressions”: 27 } ] } }, { “id”: 224, “site_key”: “forfaitdeal”, “category”: “ctr_optimization”, “lesson”: “Several visible pages have low CTR. Prioritize title, meta description, and intent alignment refreshes before creating net new content.”, “confidence”: “high”, “source”: “feedback_loop”, “status”: “deprecated”, “details_json”: { “pages”: [ { “ctr”: 0.0, “page”: “https://www.forfaitdeal.ch/blog/forfait-mobile-suisse-roaming-europe”, “clicks”: 0, “position”: 22.914893617021278, “top_query”: “roaming suisse”, “impressions”: 47 }, { “ctr”: 0.0, “page”: “https://www.forfaitdeal.ch/blog/portabilite-numero-mobile-suisse”, “clicks”: 0, “position”: 9.0, “top_query”: “conserver numero mobile”, “impressions”: 41 }, { “ctr”: 0.0, “page”: “https://www.forfaitdeal.ch/blog/forfait-data-suisse”, “clicks”: 0, “position”: 6.666666666666667, “top_query”: "", “impressions”: 33 }, { “ctr”: 0.0, “page”: “https://www.forfaitdeal.ch/blog/comparatif-abonnement-mobile-suisse”, “clicks”: 0, “position”: 10.444444444444445, “top_query”: “comparatif operateurs mobile suisse”, “impressions”: 27 }, { “ctr”: 0.0, “page”: “https://www.forfaitdeal.ch/blog/swisscom-resiliation-abonnement”, “clicks”: 0, “position”: 10.238095238095237, “top_query”: "", “impressions”: 21 } ] }, “created_at”: “2026-06-19 00:00:22.392596+00:00”, “updated_at”: “2026-06-20 00:00:21.277894+00:00”, “details”: { “pages”: [ { “ctr”: 0.0, “page”: “https://www.forfaitdeal.ch/blog/forfait-mobile-suisse-roaming-europe”, “clicks”: 0, “position”: 22.914893617021278, “top_query”: “roaming suisse”, “impressions”: 47 }, { “ctr”: 0.0, “page”: “https://www.forfaitdeal.ch/blog/portabilite-numero-mobile-suisse”, “clicks”: 0, “position”: 9.0, “top_query”: “conserver numero mobile”, “impressions”: 41 }, { “ctr”: 0.0, “page”: “https://www.forfaitdeal.ch/blog/forfait-data-suisse”, “clicks”: 0, “position”: 6.666666666666667, “top_query”: "", “impressions”: 33 }, { “ctr”: 0.0, “page”: “https://www.forfaitdeal.ch/blog/comparatif-abonnement-mobile-suisse”, “clicks”: 0, “position”: 10.444444444444445, “top_query”: “comparatif operateurs mobile suisse”, “impressions”: 27 }, { “ctr”: 0.0, “page”: “https://www.forfaitdeal.ch/blog/swisscom-resiliation-abonnement”, “clicks”: 0, “position”: 10.238095238095237, “top_query”: "", “impressions”: 21 } ] } }, { “id”: 221, “site_key”: “forfaitdeal”, “category”: “ctr_optimization”, “lesson”: “Several visible pages have low CTR. Prioritize title, meta description, and intent alignment refreshes before creating net new content.”, “confidence”: “high”, “source”: “feedback_loop”, “status”: “deprecated”, “details_json”: { “pages”: [ { “ctr”: 0.0, “page”: “https://www.forfaitdeal.ch/blog/forfait-mobile-suisse-roaming-europe”, “clicks”: 0, “position”: 21.79245283018868, “top_query”: “roaming suisse”, “impressions”: 53 }, { “ctr”: 0.0, “page”: “https://www.forfaitdeal.ch/blog/portabilite-numero-mobile-suisse”, “clicks”: 0, “position”: 9.0, “top_query”: “comment changer d’opérateur mobile”, “impressions”: 48 }, { “ctr”: 0.0, “page”: “https://www.forfaitdeal.ch/blog/forfait-data-suisse”, “clicks”: 0, “position”: 6.676470588235294, “top_query”: "", “impressions”: 34 }, { “ctr”: 0.0, “page”: “https://www.forfaitdeal.ch/blog/swisscom-resiliation-abonnement”, “clicks”: 0, “position”: 10.217391304347826, “top_query”: “swisscom résiliation”, “impressions”: 23 } ] }, “created_at”: “2026-06-18 00:00:19.577737+00:00”, “updated_at”: “2026-06-19 00:00:23.646807+00:00”, “details”: { “pages”: [ { “ctr”: 0.0, “page”: “https://www.forfaitdeal.ch/blog/forfait-mobile-suisse-roaming-europe”, “clicks”: 0, “position”: 21.79245283018868, “top_query”: “roaming suisse”, “impressions”: 53 }, { “ctr”: 0.0, “page”: “https://www.forfaitdeal.ch/blog/portabilite-numero-mobile-suisse”, “clicks”: 0, “position”: 9.0, “top_query”: “comment changer d’opérateur mobile”, “impressions”: 48 }, { “ctr”: 0.0, “page”: “https://www.forfaitdeal.ch/blog/forfait-data-suisse”, “clicks”: 0, “position”: 6.676470588235294, “top_query”: "", “impressions”: 34 }, { “ctr”: 0.0, “page”: “https://www.forfaitdeal.ch/blog/swisscom-resiliation-abonnement”, “clicks”: 0, “position”: 10.217391304347826, “top_query”: “swisscom résiliation”, “impressions”: 23 } ] } }, { “id”: 218, “site_key”: “forfaitdeal”, “category”: “ctr_optimization”, “lesson”: “Several visible pages have low CTR. Prioritize title, meta description, and intent alignment refreshes before creating net new content.”, “confidence”: “high”, “source”: “feedback_loop”, “status”: “deprecated”, “details_json”: { “pages”: [ { “ctr”: 0.0, “page”: “https://www.forfaitdeal.ch/blog/portabilite-numero-mobile-suisse”, “clicks”: 0, “position”: 8.745762711864407, “top_query”: “comment changer d’opérateur mobile”, “impressions”: 59 }, { “ctr”: 0.0, “page”: “https://www.forfaitdeal.ch/blog/forfait-mobile-suisse-roaming-europe”, “clicks”: 0, “position”: 21.17543859649123, “top_query”: “roaming suisse”, “impressions”: 57 }, { “ctr”: 0.0, “page”: “https://www.forfaitdeal.ch/blog/forfait-data-suisse”, “clicks”: 0, “position”: 6.6875, “top_query”: "", “impressions”: 32 }, { “ctr”: 0.0, “page”: “https://www.forfaitdeal.ch/blog/swisscom-resiliation-abonnement”, “clicks”: 0, “position”: 10.333333333333334, “top_query”: “swisscom résiliation”, “impressions”: 30 } ] }, “created_at”: “2026-06-17 00:00:21.895600+00:00”, “updated_at”: “2026-06-18 00:00:20.846868+00:00”, “details”: { “pages”: [ { “ctr”: 0.0, “page”: “https://www.forfaitdeal.ch/blog/portabilite-numero-mobile-suisse”, “clicks”: 0, “position”: 8.745762711864407, “top_query”: “comment changer d’opérateur mobile”, “impressions”: 59 }, { “ctr”: 0.0, “page”: “https://www.forfaitdeal.ch/blog/forfait-mobile-suisse-roaming-europe”, “clicks”: 0, “position”: 21.17543859649123, “top_query”: “roaming suisse”, “impressions”: 57 }, { “ctr”: 0.0, “page”: “https://www.forfaitdeal.ch/blog/forfait-data-suisse”, “clicks”: 0, “position”: 6.6875, “top_query”: "", “impressions”: 32 }, { “ctr”: 0.0, “page”: “https://www.forfaitdeal.ch/blog/swisscom-resiliation-abonnement”, “clicks”: 0, “position”: 10.333333333333334, “top_query”: “swisscom résiliation”, “impressions”: 30 } ] } }, { “id”: 215, “site_key”: “forfaitdeal”, “category”: “ctr_optimization”, “lesson”: “Several visible pages have low CTR. Prioritize title, meta description, and intent alignment refreshes before creating net new content.”, “confidence”: “high”, “source”: “feedback_loop”, “status”: “deprecated”, “details_json”: { “pages”: [ { “ctr”: 0.0, “page”: “https://www.forfaitdeal.ch/blog/forfait-mobile-suisse-roaming-europe”, “clicks”: 0, “position”: 21.40625, “top_query”: “roaming suisse”, “impressions”: 64 }, { “ctr”: 0.0, “page”: “https://www.forfaitdeal.ch/blog/portabilite-numero-mobile-suisse”, “clicks”: 0, “position”: 8.779661016949152, “top_query”: “comment changer d’opérateur mobile”, “impressions”: 59 }, { “ctr”: 0.0, “page”: “https://www.forfaitdeal.ch/blog/swisscom-resiliation-abonnement”, “clicks”: 0, “position”: 10.421052631578947, “top_query”: “swisscom résiliation”, “impressions”: 38 }, { “ctr”: 0.0, “page”: “https://www.forfaitdeal.ch/blog/forfait-data-suisse”, “clicks”: 0, “position”: 6.6875, “top_query”: "", “impressions”: 32 } ] }, “created_at”: “2026-06-16 00:00:25.982596+00:00”, “updated_at”: “2026-06-17 00:00:23.153874+00:00”, “details”: { “pages”: [ { “ctr”: 0.0, “page”: “https://www.forfaitdeal.ch/blog/forfait-mobile-suisse-roaming-europe”, “clicks”: 0, “position”: 21.40625, “top_query”: “roaming suisse”, “impressions”: 64 }, { “ctr”: 0.0, “page”: “https://www.forfaitdeal.ch/blog/portabilite-numero-mobile-suisse”, “clicks”: 0, “position”: 8.779661016949152, “top_query”: “comment changer d’opérateur mobile”, “impressions”: 59 }, { “ctr”: 0.0, “page”: “https://www.forfaitdeal.ch/blog/swisscom-resiliation-abonnement”, “clicks”: 0, “position”: 10.421052631578947, “top_query”: “swisscom résiliation”, “impressions”: 38 }, { “ctr”: 0.0, “page”: “https://www.forfaitdeal.ch/blog/forfait-data-suisse”, “clicks”: 0, “position”: 6.6875, “top_query”: "", “impressions”: 32 } ] } } ], “recent_sops”: [ { “id”: 240, “site_key”: “forfaitdeal”, “scope”: “site”, “name”: “adaptive-feedback-playbook”, “version”: 39, “status”: “draft”, “content”: “1. Sync and review the latest GSC and queue feedback before planning new work.\n2. If low-CTR pages exist with meaningful impressions, prioritize refreshes before net new drafts.\n3. If the queue is saturated, shift effort from generation to review, optimization, and publishing throughput.\n4. If failures or weak publish outcomes exist, add a verification step before production actions.\n5. Re-measure outcomes after each major SEO action and log the result back into memory.”, “source”: “feedback_loop”, “created_at”: “2026-06-20 00:00:20.437584+00:00”, “updated_at”: “2026-06-20 00:00:20.437584+00:00”, “confidence_score”: 0, “confidence_label”: “low” }, { “id”: 237, “site_key”: “forfaitdeal”, “scope”: “site”, “name”: “learningseo-site-improvement-playbook”, “version”: 58, “status”: “draft”, “content”: “1. Before new draft creation, verify that the target intent is not already partially served by an existing URL.\n2. Block SOP confidence increases when the latest measured action in the same category is negative.\n3. Treat crawlability, indexation, and internal-link architecture as preconditions before content-scale actions.\n4. Every new or refreshed priority page should receive a deliberate internal-link plan from existing related pages.\n5. Automated actions must emit events, measurements, and postmortems by default.”, “source”: “learningseo_daily”, “created_at”: “2026-06-20 00:00:11.292656+00:00”, “updated_at”: “2026-06-20 00:00:11.292656+00:00”, “confidence_score”: 0, “confidence_label”: “low” }, { “id”: 1, “site_key”: “forfaitdeal”, “scope”: “site”, “name”: “content-refresh-playbook”, “version”: 1, “status”: “draft”, “content”: “1. Check GSC queries.\n2. Refresh title/H1.\n3. Add internal links.\n4. Re-measure after publication.”, “source”: “system”, “created_at”: “2026-04-24 12:53:15.224126+00:00”, “updated_at”: “2026-06-10 01:07:02.087096+00:00”, “confidence_score”: 0, “confidence_label”: “low” }, { “id”: 234, “site_key”: “forfaitdeal”, “scope”: “site”, “name”: “learningseo-site-improvement-playbook”, “version”: 57, “status”: “deprecated”, “content”: “1. Block SOP confidence increases when the latest measured action in the same category is negative.\n2. Treat crawlability, indexation, and internal-link architecture as preconditions before content-scale actions.\n3. Every new or refreshed priority page should receive a deliberate internal-link plan from existing related pages.\n4. Automated actions must emit events, measurements, and postmortems by default.”, “source”: “learningseo_daily”, “created_at”: “2026-06-19 00:00:13.357540+00:00”, “updated_at”: “2026-06-20 00:00:21.355644+00:00”, “confidence_score”: 0, “confidence_label”: “low” }, { “id”: 231, “site_key”: “forfaitdeal”, “scope”: “site”, “name”: “adaptive-feedback-playbook”, “version”: 38, “status”: “deprecated”, “content”: “1. Sync and review the latest GSC and queue feedback before planning new work.\n2. If low-CTR pages exist with meaningful impressions, prioritize refreshes before net new drafts.\n3. If the queue is saturated, shift effort from generation to review, optimization, and publishing throughput.\n4. If failures or weak publish outcomes exist, add a verification step before production actions.\n5. Re-measure outcomes after each major SEO action and log the result back into memory.”, “source”: “feedback_loop”, “created_at”: “2026-06-18 00:00:19.787730+00:00”, “updated_at”: “2026-06-20 00:00:21.351775+00:00”, “confidence_score”: 0, “confidence_label”: “low” } ] }
  • context-pack
    • { “site_key”: “forfaitdeal”, “task”: “logseq export”, “lessons”: [ { “id”: 227, “site_key”: “forfaitdeal”, “category”: “ctr_optimization”, “lesson”: “Several visible pages have low CTR. Prioritize title, meta description, and intent alignment refreshes before creating net new content.”, “confidence”: “high”, “source”: “feedback_loop”, “status”: “validated”, “details_json”: { “pages”: [ { “ctr”: 0.0, “page”: “https://www.forfaitdeal.ch/blog/forfait-mobile-suisse-roaming-europe”, “clicks”: 0, “position”: 24.365853658536587, “top_query”: “roaming suisse”, “impressions”: 41 }, { “ctr”: 0.0, “page”: “https://www.forfaitdeal.ch/blog/portabilite-numero-mobile-suisse”, “clicks”: 0, “position”: 9.1, “top_query”: “conserver numero mobile”, “impressions”: 40 }, { “ctr”: 0.0, “page”: “https://www.forfaitdeal.ch/blog/forfait-data-suisse”, “clicks”: 0, “position”: 6.59375, “top_query”: "", “impressions”: 32 }, { “ctr”: 0.0, “page”: “https://www.forfaitdeal.ch/blog/comparatif-abonnement-mobile-suisse”, “clicks”: 0, “position”: 10.444444444444445, “top_query”: “comparatif operateurs mobile suisse”, “impressions”: 27 } ] }, “created_at”: “2026-06-20 00:00:20.134175+00:00”, “updated_at”: “2026-06-20 00:00:21.180812+00:00”, “details”: { “pages”: [ { “ctr”: 0.0, “page”: “https://www.forfaitdeal.ch/blog/forfait-mobile-suisse-roaming-europe”, “clicks”: 0, “position”: 24.365853658536587, “top_query”: “roaming suisse”, “impressions”: 41 }, { “ctr”: 0.0, “page”: “https://www.forfaitdeal.ch/blog/portabilite-numero-mobile-suisse”, “clicks”: 0, “position”: 9.1, “top_query”: “conserver numero mobile”, “impressions”: 40 }, { “ctr”: 0.0, “page”: “https://www.forfaitdeal.ch/blog/forfait-data-suisse”, “clicks”: 0, “position”: 6.59375, “top_query”: "", “impressions”: 32 }, { “ctr”: 0.0, “page”: “https://www.forfaitdeal.ch/blog/comparatif-abonnement-mobile-suisse”, “clicks”: 0, “position”: 10.444444444444445, “top_query”: “comparatif operateurs mobile suisse”, “impressions”: 27 } ] } }, { “id”: 84, “site_key”: “forfaitdeal”, “category”: “throughput”, “lesson”: “Queue pressure is high. Reduce draft generation and prioritize review, refresh, and publishing throughput.”, “confidence”: “high”, “source”: “feedback_loop”, “status”: “validated”, “details_json”: { “failed_count”: 0, “queued_count”: 5 }, “created_at”: “2026-05-04 00:00:17.019909+00:00”, “updated_at”: “2026-05-04 00:00:17.572122+00:00”, “details”: { “failed_count”: 0, “queued_count”: 5 } } ], “sops”: [ { “id”: 240, “site_key”: “forfaitdeal”, “scope”: “site”, “name”: “adaptive-feedback-playbook”, “version”: 39, “status”: “draft”, “content”: “1. Sync and review the latest GSC and queue feedback before planning new work.\n2. If low-CTR pages exist with meaningful impressions, prioritize refreshes before net new drafts.\n3. If the queue is saturated, shift effort from generation to review, optimization, and publishing throughput.\n4. If failures or weak publish outcomes exist, add a verification step before production actions.\n5. Re-measure outcomes after each major SEO action and log the result back into memory.”, “source”: “feedback_loop”, “created_at”: “2026-06-20 00:00:20.437584+00:00”, “updated_at”: “2026-06-20 00:00:20.437584+00:00”, “confidence_score”: 0, “confidence_label”: “low” } ], “recent_memory”: [ { “id”: 409, “site_key”: “forfaitdeal”, “category”: “routine”, “action”: “content_pipeline”, “target”: “roaming-suisse-forfait”, “outcome”: “scheduled”, “quality”: “good”, “details_json”: { “draft”: { “path”: “/root/agents/seo-agent/data/drafts/generated/forfaitdeal/roaming-suisse-forfait.json”, “slug”: “roaming-suisse-forfait”, “title”: “Roaming suisse forfait : que faut-il vraiment vérifier en 2026 ?”, “quality”: { “ok”: true, “issues”: [], “warnings”: [], “section_count”: 11, “content_length”: 9972 } }, “topic”: “roaming suisse forfait”, “enqueue”: { “id”: 18, “slug”: “roaming-suisse-forfait”, “status”: “scheduled”, “site_key”: “forfaitdeal”, “published_at”: “2026-05-02”, “scheduled_at”: “2026-06-22T07:00:00+00:00” } }, “recorded_at”: “2026-06-20 00:01:03.401760+00:00”, “details”: { “draft”: { “path”: “/root/agents/seo-agent/data/drafts/generated/forfaitdeal/roaming-suisse-forfait.json”, “slug”: “roaming-suisse-forfait”, “title”: “Roaming suisse forfait : que faut-il vraiment vérifier en 2026 ?”, “quality”: { “ok”: true, “issues”: [], “warnings”: [], “section_count”: 11, “content_length”: 9972 } }, “topic”: “roaming suisse forfait”, “enqueue”: { “id”: 18, “slug”: “roaming-suisse-forfait”, “status”: “scheduled”, “site_key”: “forfaitdeal”, “published_at”: “2026-05-02”, “scheduled_at”: “2026-06-22T07:00:00+00:00” } } }, { “id”: 408, “site_key”: “forfaitdeal”, “category”: “routine”, “action”: “content_pipeline”, “target”: “meilleur-forfait-mobile-suisse”, “outcome”: “scheduled”, “quality”: “good”, “details_json”: { “draft”: { “path”: “/root/agents/seo-agent/data/drafts/generated/forfaitdeal/meilleur-forfait-mobile-suisse.json”, “slug”: “meilleur-forfait-mobile-suisse”, “title”: “Meilleur forfait mobile suisse : faut-il vraiment payer plus en 2026”, “quality”: { “ok”: true, “issues”: [], “warnings”: [], “section_count”: 11, “content_length”: 10178 } }, “topic”: “meilleur forfait mobile suisse”, “enqueue”: { “id”: 17, “slug”: “meilleur-forfait-mobile-suisse”, “status”: “scheduled”, “site_key”: “forfaitdeal”, “published_at”: “2026-05-02”, “scheduled_at”: “2026-06-22T07:00:00+00:00” } }, “recorded_at”: “2026-06-20 00:00:53.080112+00:00”, “details”: { “draft”: { “path”: “/root/agents/seo-agent/data/drafts/generated/forfaitdeal/meilleur-forfait-mobile-suisse.json”, “slug”: “meilleur-forfait-mobile-suisse”, “title”: “Meilleur forfait mobile suisse : faut-il vraiment payer plus en 2026”, “quality”: { “ok”: true, “issues”: [], “warnings”: [], “section_count”: 11, “content_length”: 10178 } }, “topic”: “meilleur forfait mobile suisse”, “enqueue”: { “id”: 17, “slug”: “meilleur-forfait-mobile-suisse”, “status”: “scheduled”, “site_key”: “forfaitdeal”, “published_at”: “2026-05-02”, “scheduled_at”: “2026-06-22T07:00:00+00:00” } } }, { “id”: 407, “site_key”: “forfaitdeal”, “category”: “routine”, “action”: “content_pipeline”, “target”: “comparatif-forfait-mobile-suisse”, “outcome”: “scheduled”, “quality”: “good”, “details_json”: { “draft”: { “path”: “/root/agents/seo-agent/data/drafts/generated/forfaitdeal/comparatif-forfait-mobile-suisse.json”, “slug”: “comparatif-forfait-mobile-suisse”, “title”: “Comparatif forfait mobile suisse : faut-il vraiment payer plus en”, “quality”: { “ok”: true, “issues”: [], “warnings”: [], “section_count”: 11, “content_length”: 10236 } }, “topic”: “comparatif forfait mobile suisse”, “enqueue”: { “id”: 15, “slug”: “comparatif-forfait-mobile-suisse”, “status”: “scheduled”, “site_key”: “forfaitdeal”, “published_at”: “2026-05-02”, “scheduled_at”: “2026-06-22T07:00:00+00:00” } }, “recorded_at”: “2026-06-20 00:00:42.843860+00:00”, “details”: { “draft”: { “path”: “/root/agents/seo-agent/data/drafts/generated/forfaitdeal/comparatif-forfait-mobile-suisse.json”, “slug”: “comparatif-forfait-mobile-suisse”, “title”: “Comparatif forfait mobile suisse : faut-il vraiment payer plus en”, “quality”: { “ok”: true, “issues”: [], “warnings”: [], “section_count”: 11, “content_length”: 10236 } }, “topic”: “comparatif forfait mobile suisse”, “enqueue”: { “id”: 15, “slug”: “comparatif-forfait-mobile-suisse”, “status”: “scheduled”, “site_key”: “forfaitdeal”, “published_at”: “2026-05-02”, “scheduled_at”: “2026-06-22T07:00:00+00:00” } } }, { “id”: 406, “site_key”: “forfaitdeal”, “category”: “routine”, “action”: “content_pipeline”, “target”: “forfait-mobile-suisse”, “outcome”: “scheduled”, “quality”: “good”, “details_json”: { “draft”: { “path”: “/root/agents/seo-agent/data/drafts/generated/forfaitdeal/forfait-mobile-suisse.json”, “slug”: “forfait-mobile-suisse”, “title”: “Forfait mobile suisse : faut-il vraiment payer plus en 2026 ?”, “quality”: { “ok”: true, “issues”: [], “warnings”: [], “section_count”: 11, “content_length”: 9953 } }, “topic”: “forfait mobile suisse”, “enqueue”: { “id”: 16, “slug”: “forfait-mobile-suisse”, “status”: “scheduled”, “site_key”: “forfaitdeal”, “published_at”: “2026-05-02”, “scheduled_at”: “2026-06-22T07:00:00+00:00” } }, “recorded_at”: “2026-06-20 00:00:32.589663+00:00”, “details”: { “draft”: { “path”: “/root/agents/seo-agent/data/drafts/generated/forfaitdeal/forfait-mobile-suisse.json”, “slug”: “forfait-mobile-suisse”, “title”: “Forfait mobile suisse : faut-il vraiment payer plus en 2026 ?”, “quality”: { “ok”: true, “issues”: [], “warnings”: [], “section_count”: 11, “content_length”: 9953 } }, “topic”: “forfait mobile suisse”, “enqueue”: { “id”: 16, “slug”: “forfait-mobile-suisse”, “status”: “scheduled”, “site_key”: “forfaitdeal”, “published_at”: “2026-05-02”, “scheduled_at”: “2026-06-22T07:00:00+00:00” } } }, { “id”: 405, “site_key”: “forfaitdeal”, “category”: “routine”, “action”: “daily_feedback_learning”, “target”: “forfaitdeal”, “outcome”: “2 lessons derived”, “quality”: “good”, “details_json”: { “sop”: { “sop”: { “id”: 240, “name”: “adaptive-feedback-playbook”, “scope”: “site”, “source”: “feedback_loop”, “status”: “draft”, “content”: “1. Sync and review the latest GSC and queue feedback before planning new work.\n2. If low-CTR pages exist with meaningful impressions, prioritize refreshes before net new drafts.\n3. If the queue is saturated, shift effort from generation to review, optimization, and publishing throughput.\n4. If failures or weak publish outcomes exist, add a verification step before production actions.\n5. Re-measure outcomes after each major SEO action and log the result back into memory.”, “version”: 39, “site_key”: “forfaitdeal”, “created_at”: “2026-06-20 00:00:20.437584+00:00”, “updated_at”: “2026-06-20 00:00:20.437584+00:00”, “confidence_label”: “low”, “confidence_score”: 0 }, “evidence”: { “lesson_count”: 20, “outcome_count”: 10, “observation_count”: 10 }, “site_key”: “forfaitdeal” }, “feedback”: { “site_key”: “forfaitdeal”, “gsc_pages”: 10, “queue_rows”: 17, “gsc_queries”: 9, “workflow_events”: 50 }, “business_feedback”: { “crawler”: { “ideas”: [], “issues”: [], “message”: “Erreur reseau Crawler MCP sur http://127.0.0.1:8866/mcp: HTTPConnectionPool(host=‘127.0.0.1’, port=8866): Max retries exceeded with url: /mcp (Caused by NewConnectionError(‘<urllib3.connection.HTTPConnection object at 0x75f1bc9233b0>: Failed to establish a new connection: [Errno 111] Connection refused’))”, “crawl_ok”: false, “acquisition_ok”: false }, “linkmap”: { “result”: {}, “message”: “Outil LinkMap introuvable pour pagerank.”, “pagerank_ok”: false, “strategy_ok”: false }, “site_key”: “forfaitdeal”, “available”: true, “seo_panel”: { “alerts”: [], “message”: “Erreur reseau SEO Panel MCP sur http://127.0.0.1:8865/mcp: HTTPConnectionPool(host=‘127.0.0.1’, port=8865): Max retries exceeded with url: /mcp (Caused by NewConnectionError(‘<urllib3.connection.HTTPConnection object at 0x75f1bc9cd8e0>: Failed to establish a new connection: [Errno 111] Connection refused’))”, “alerts_ok”: false, “overview_ok”: false, “health_score”: null }, “project_name”: “ForfaitDeal” } }, “recorded_at”: “2026-06-20 00:00:21.091215+00:00”, “details”: { “sop”: { “sop”: { “id”: 240, “name”: “adaptive-feedback-playbook”, “scope”: “site”, “source”: “feedback_loop”, “status”: “draft”, “content”: “1. Sync and review the latest GSC and queue feedback before planning new work.\n2. If low-CTR pages exist with meaningful impressions, prioritize refreshes before net new drafts.\n3. If the queue is saturated, shift effort from generation to review, optimization, and publishing throughput.\n4. If failures or weak publish outcomes exist, add a verification step before production actions.\n5. Re-measure outcomes after each major SEO action and log the result back into memory.”, “version”: 39, “site_key”: “forfaitdeal”, “created_at”: “2026-06-20 00:00:20.437584+00:00”, “updated_at”: “2026-06-20 00:00:20.437584+00:00”, “confidence_label”: “low”, “confidence_score”: 0 }, “evidence”: { “lesson_count”: 20, “outcome_count”: 10, “observation_count”: 10 }, “site_key”: “forfaitdeal” }, “feedback”: { “site_key”: “forfaitdeal”, “gsc_pages”: 10, “queue_rows”: 17, “gsc_queries”: 9, “workflow_events”: 50 }, “business_feedback”: { “crawler”: { “ideas”: [], “issues”: [], “message”: “Erreur reseau Crawler MCP sur http://127.0.0.1:8866/mcp: HTTPConnectionPool(host=‘127.0.0.1’, port=8866): Max retries exceeded with url: /mcp (Caused by NewConnectionError(‘<urllib3.connection.HTTPConnection object at 0x75f1bc9233b0>: Failed to establish a new connection: [Errno 111] Connection refused’))”, “crawl_ok”: false, “acquisition_ok”: false }, “linkmap”: { “result”: {}, “message”: “Outil LinkMap introuvable pour pagerank.”, “pagerank_ok”: false, “strategy_ok”: false }, “site_key”: “forfaitdeal”, “available”: true, “seo_panel”: { “alerts”: [], “message”: “Erreur reseau SEO Panel MCP sur http://127.0.0.1:8865/mcp: HTTPConnectionPool(host=‘127.0.0.1’, port=8865): Max retries exceeded with url: /mcp (Caused by NewConnectionError(‘<urllib3.connection.HTTPConnection object at 0x75f1bc9cd8e0>: Failed to establish a new connection: [Errno 111] Connection refused’))”, “alerts_ok”: false, “overview_ok”: false, “health_score”: null }, “project_name”: “ForfaitDeal” } } }, { “id”: 402, “site_key”: “forfaitdeal”, “category”: “routine”, “action”: “content_pipeline”, “target”: “roaming-suisse-forfait”, “outcome”: “scheduled”, “quality”: “good”, “details_json”: { “draft”: { “path”: “/root/agents/seo-agent/data/drafts/generated/forfaitdeal/roaming-suisse-forfait.json”, “slug”: “roaming-suisse-forfait”, “title”: “Roaming suisse forfait : que faut-il vraiment vérifier en 2026 ?”, “quality”: { “ok”: true, “issues”: [], “warnings”: [], “section_count”: 11, “content_length”: 9972 } }, “topic”: “roaming suisse forfait”, “enqueue”: { “id”: 18, “slug”: “roaming-suisse-forfait”, “status”: “scheduled”, “site_key”: “forfaitdeal”, “published_at”: “2026-05-02”, “scheduled_at”: “2026-06-19T07:00:00+00:00” } }, “recorded_at”: “2026-06-19 00:00:55.179561+00:00”, “details”: { “draft”: { “path”: “/root/agents/seo-agent/data/drafts/generated/forfaitdeal/roaming-suisse-forfait.json”, “slug”: “roaming-suisse-forfait”, “title”: “Roaming suisse forfait : que faut-il vraiment vérifier en 2026 ?”, “quality”: { “ok”: true, “issues”: [], “warnings”: [], “section_count”: 11, “content_length”: 9972 } }, “topic”: “roaming suisse forfait”, “enqueue”: { “id”: 18, “slug”: “roaming-suisse-forfait”, “status”: “scheduled”, “site_key”: “forfaitdeal”, “published_at”: “2026-05-02”, “scheduled_at”: “2026-06-19T07:00:00+00:00” } } }, { “id”: 401, “site_key”: “forfaitdeal”, “category”: “routine”, “action”: “content_pipeline”, “target”: “meilleur-forfait-mobile-suisse”, “outcome”: “scheduled”, “quality”: “good”, “details_json”: { “draft”: { “path”: “/root/agents/seo-agent/data/drafts/generated/forfaitdeal/meilleur-forfait-mobile-suisse.json”, “slug”: “meilleur-forfait-mobile-suisse”, “title”: “Meilleur forfait mobile suisse : faut-il vraiment payer plus en 2026”, “quality”: { “ok”: true, “issues”: [], “warnings”: [], “section_count”: 11, “content_length”: 10178 } }, “topic”: “meilleur forfait mobile suisse”, “enqueue”: { “id”: 17, “slug”: “meilleur-forfait-mobile-suisse”, “status”: “scheduled”, “site_key”: “forfaitdeal”, “published_at”: “2026-05-02”, “scheduled_at”: “2026-06-19T07:00:00+00:00” } }, “recorded_at”: “2026-06-19 00:00:54.966855+00:00”, “details”: { “draft”: { “path”: “/root/agents/seo-agent/data/drafts/generated/forfaitdeal/meilleur-forfait-mobile-suisse.json”, “slug”: “meilleur-forfait-mobile-suisse”, “title”: “Meilleur forfait mobile suisse : faut-il vraiment payer plus en 2026”, “quality”: { “ok”: true, “issues”: [], “warnings”: [], “section_count”: 11, “content_length”: 10178 } }, “topic”: “meilleur forfait mobile suisse”, “enqueue”: { “id”: 17, “slug”: “meilleur-forfait-mobile-suisse”, “status”: “scheduled”, “site_key”: “forfaitdeal”, “published_at”: “2026-05-02”, “scheduled_at”: “2026-06-19T07:00:00+00:00” } } } ], “recent_outcomes”: [ { “id”: 379, “site_key”: “forfaitdeal”, “outcome_type”: “gsc_baseline”, “subject_key”: “content-refresh:portabilite-numero-mobile-suisse”, “metric_name”: “position”, “metric_value”: 8.81132075471698, “payload_json”: { “row”: { “ctr”: 0.0, “page”: “https://www.forfaitdeal.ch/blog/portabilite-numero-mobile-suisse”, “clicks”: 0, “position”: 8.81132075471698, “top_query”: “comment changer d’opérateur mobile”, “impressions”: 53 }, “page_url”: “https://www.forfaitdeal.ch/blog/portabilite-numero-mobile-suisse” }, “recorded_at”: “2026-06-11 00:07:15.683730+00:00”, “payload”: { “row”: { “ctr”: 0.0, “page”: “https://www.forfaitdeal.ch/blog/portabilite-numero-mobile-suisse”, “clicks”: 0, “position”: 8.81132075471698, “top_query”: “comment changer d’opérateur mobile”, “impressions”: 53 }, “page_url”: “https://www.forfaitdeal.ch/blog/portabilite-numero-mobile-suisse” } }, { “id”: 378, “site_key”: “forfaitdeal”, “outcome_type”: “gsc_baseline”, “subject_key”: “content-refresh:portabilite-numero-mobile-suisse”, “metric_name”: “ctr”, “metric_value”: 0.0, “payload_json”: { “row”: { “ctr”: 0.0, “page”: “https://www.forfaitdeal.ch/blog/portabilite-numero-mobile-suisse”, “clicks”: 0, “position”: 8.81132075471698, “top_query”: “comment changer d’opérateur mobile”, “impressions”: 53 }, “page_url”: “https://www.forfaitdeal.ch/blog/portabilite-numero-mobile-suisse” }, “recorded_at”: “2026-06-11 00:07:15.673205+00:00”, “payload”: { “row”: { “ctr”: 0.0, “page”: “https://www.forfaitdeal.ch/blog/portabilite-numero-mobile-suisse”, “clicks”: 0, “position”: 8.81132075471698, “top_query”: “comment changer d’opérateur mobile”, “impressions”: 53 }, “page_url”: “https://www.forfaitdeal.ch/blog/portabilite-numero-mobile-suisse” } }, { “id”: 377, “site_key”: “forfaitdeal”, “outcome_type”: “gsc_baseline”, “subject_key”: “content-refresh:portabilite-numero-mobile-suisse”, “metric_name”: “impressions”, “metric_value”: 53.0, “payload_json”: { “row”: { “ctr”: 0.0, “page”: “https://www.forfaitdeal.ch/blog/portabilite-numero-mobile-suisse”, “clicks”: 0, “position”: 8.81132075471698, “top_query”: “comment changer d’opérateur mobile”, “impressions”: 53 }, “page_url”: “https://www.forfaitdeal.ch/blog/portabilite-numero-mobile-suisse” }, “recorded_at”: “2026-06-11 00:07:15.662992+00:00”, “payload”: { “row”: { “ctr”: 0.0, “page”: “https://www.forfaitdeal.ch/blog/portabilite-numero-mobile-suisse”, “clicks”: 0, “position”: 8.81132075471698, “top_query”: “comment changer d’opérateur mobile”, “impressions”: 53 }, “page_url”: “https://www.forfaitdeal.ch/blog/portabilite-numero-mobile-suisse” } }, { “id”: 376, “site_key”: “forfaitdeal”, “outcome_type”: “gsc_baseline”, “subject_key”: “content-refresh:portabilite-numero-mobile-suisse”, “metric_name”: “clicks”, “metric_value”: 0.0, “payload_json”: { “row”: { “ctr”: 0.0, “page”: “https://www.forfaitdeal.ch/blog/portabilite-numero-mobile-suisse”, “clicks”: 0, “position”: 8.81132075471698, “top_query”: “comment changer d’opérateur mobile”, “impressions”: 53 }, “page_url”: “https://www.forfaitdeal.ch/blog/portabilite-numero-mobile-suisse” }, “recorded_at”: “2026-06-11 00:07:15.653570+00:00”, “payload”: { “row”: { “ctr”: 0.0, “page”: “https://www.forfaitdeal.ch/blog/portabilite-numero-mobile-suisse”, “clicks”: 0, “position”: 8.81132075471698, “top_query”: “comment changer d’opérateur mobile”, “impressions”: 53 }, “page_url”: “https://www.forfaitdeal.ch/blog/portabilite-numero-mobile-suisse” } }, { “id”: 375, “site_key”: “forfaitdeal”, “outcome_type”: “gsc_baseline”, “subject_key”: “refresh:portabilite-numero-mobile-suisse”, “metric_name”: “position”, “metric_value”: 8.81132075471698, “payload_json”: { “row”: { “ctr”: 0.0, “page”: “https://www.forfaitdeal.ch/blog/portabilite-numero-mobile-suisse”, “clicks”: 0, “position”: 8.81132075471698, “top_query”: “comment changer d’opérateur mobile”, “impressions”: 53 }, “page_url”: “https://www.forfaitdeal.ch/blog/portabilite-numero-mobile-suisse” }, “recorded_at”: “2026-06-11 00:07:15.578789+00:00”, “payload”: { “row”: { “ctr”: 0.0, “page”: “https://www.forfaitdeal.ch/blog/portabilite-numero-mobile-suisse”, “clicks”: 0, “position”: 8.81132075471698, “top_query”: “comment changer d’opérateur mobile”, “impressions”: 53 }, “page_url”: “https://www.forfaitdeal.ch/blog/portabilite-numero-mobile-suisse” } } ], “recent_observations”: [ { “id”: 1655, “site_key”: “forfaitdeal”, “source_type”: “workflow_state”, “subject_key”: “recent_events”, “payload_json”: { “events”: [ { “type”: “gsc_sync”, “payload”: { “pages_7d”: 6, “pages_28d”: 10, “queries_7d”: 1, “queries_28d”: 9, “page_query_28d”: 9 }, “recorded_at”: “2026-06-18T12:15:06.078755Z” }, { “type”: “gsc_sync”, “payload”: { “pages_7d”: 6, “pages_28d”: 10, “queries_7d”: 1, “queries_28d”: 9, “page_query_28d”: 9 }, “recorded_at”: “2026-06-18T18:15:06.022318Z” }, { “type”: “hermes_daily_feedback_learning”, “payload”: { “sop_name”: “adaptive-feedback-playbook”, “lessons_created”: 2 }, “recorded_at”: “2026-06-19T00:00:23.214402Z” }, { “type”: “hermes_content_pipeline”, “payload”: { “slug”: “forfait-mobile-suisse”, “topic”: “forfait mobile suisse”, “queue_status”: “scheduled” }, “recorded_at”: “2026-06-19T00:00:34.373244Z” }, { “type”: “hermes_content_pipeline”, “payload”: { “slug”: “comparatif-forfait-mobile-suisse”, “topic”: “comparatif forfait mobile suisse”, “queue_status”: “scheduled” }, “recorded_at”: “2026-06-19T00:00:44.587189Z” }, { “type”: “hermes_content_pipeline”, “payload”: { “slug”: “meilleur-forfait-mobile-suisse”, “topic”: “meilleur forfait mobile suisse”, “queue_status”: “scheduled” }, “recorded_at”: “2026-06-19T00:00:54.950530Z” }, { “type”: “hermes_content_pipeline”, “payload”: { “slug”: “roaming-suisse-forfait”, “topic”: “roaming suisse forfait”, “queue_status”: “scheduled” }, “recorded_at”: “2026-06-19T00:00:55.159054Z” }, { “type”: “gsc_sync”, “payload”: { “pages_7d”: 6, “pages_28d”: 10, “queries_7d”: 1, “queries_28d”: 9, “page_query_28d”: 9 }, “recorded_at”: “2026-06-19T06:15:05.677469Z” }, { “type”: “gsc_sync”, “payload”: { “pages_7d”: 6, “pages_28d”: 10, “queries_7d”: 1, “queries_28d”: 9, “page_query_28d”: 9 }, “recorded_at”: “2026-06-19T12:15:06.312306Z” }, { “type”: “gsc_sync”, “payload”: { “pages_7d”: 6, “pages_28d”: 10, “queries_7d”: 1, “queries_28d”: 9, “page_query_28d”: 9 }, “recorded_at”: “2026-06-19T18:15:05.535218Z” } ] }, “recorded_at”: “2026-06-20 00:00:16.933205+00:00”, “payload”: { “events”: [ { “type”: “gsc_sync”, “payload”: { “pages_7d”: 6, “pages_28d”: 10, “queries_7d”: 1, “queries_28d”: 9, “page_query_28d”: 9 }, “recorded_at”: “2026-06-18T12:15:06.078755Z” }, { “type”: “gsc_sync”, “payload”: { “pages_7d”: 6, “pages_28d”: 10, “queries_7d”: 1, “queries_28d”: 9, “page_query_28d”: 9 }, “recorded_at”: “2026-06-18T18:15:06.022318Z” }, { “type”: “hermes_daily_feedback_learning”, “payload”: { “sop_name”: “adaptive-feedback-playbook”, “lessons_created”: 2 }, “recorded_at”: “2026-06-19T00:00:23.214402Z” }, { “type”: “hermes_content_pipeline”, “payload”: { “slug”: “forfait-mobile-suisse”, “topic”: “forfait mobile suisse”, “queue_status”: “scheduled” }, “recorded_at”: “2026-06-19T00:00:34.373244Z” }, { “type”: “hermes_content_pipeline”, “payload”: { “slug”: “comparatif-forfait-mobile-suisse”, “topic”: “comparatif forfait mobile suisse”, “queue_status”: “scheduled” }, “recorded_at”: “2026-06-19T00:00:44.587189Z” }, { “type”: “hermes_content_pipeline”, “payload”: { “slug”: “meilleur-forfait-mobile-suisse”, “topic”: “meilleur forfait mobile suisse”, “queue_status”: “scheduled” }, “recorded_at”: “2026-06-19T00:00:54.950530Z” }, { “type”: “hermes_content_pipeline”, “payload”: { “slug”: “roaming-suisse-forfait”, “topic”: “roaming suisse forfait”, “queue_status”: “scheduled” }, “recorded_at”: “2026-06-19T00:00:55.159054Z” }, { “type”: “gsc_sync”, “payload”: { “pages_7d”: 6, “pages_28d”: 10, “queries_7d”: 1, “queries_28d”: 9, “page_query_28d”: 9 }, “recorded_at”: “2026-06-19T06:15:05.677469Z” }, { “type”: “gsc_sync”, “payload”: { “pages_7d”: 6, “pages_28d”: 10, “queries_7d”: 1, “queries_28d”: 9, “page_query_28d”: 9 }, “recorded_at”: “2026-06-19T12:15:06.312306Z” }, { “type”: “gsc_sync”, “payload”: { “pages_7d”: 6, “pages_28d”: 10, “queries_7d”: 1, “queries_28d”: 9, “page_query_28d”: 9 }, “recorded_at”: “2026-06-19T18:15:05.535218Z” } ] } }, { “id”: 1654, “site_key”: “forfaitdeal”, “source_type”: “queue_state”, “subject_key”: “recent_queue”, “payload_json”: { “recent_rows”: [ { “id”: 230, “slug”: “roaming-suisse”, “error”: “Vercel: ERROR — Command “npm run build” exited with 1\nLogs : https://vercel.com/anges-projects-a4da2420/comparateur-mobile/6gck8h49Ck4eZgEk5V5jpb84HTJ9”, “status”: “failed”, “attempts”: 0, “vercel_ok”: 0, “gsc_indexed”: 0, “published_at”: null, “scheduled_at”: “2026-05-13T07:00:00+00:00” }, { “id”: 103, “slug”: “forfait-mobile-famille-suisse”, “error”: “Vercel: ERROR — Command “npm run build” exited with 1\nLogs : https://vercel.com/anges-projects-a4da2420/comparateur-mobile/Dd6FLxAvJ7UjydbnkhWKSuJ3XJtC”, “status”: “failed”, “attempts”: 0, “vercel_ok”: 0, “gsc_indexed”: 0, “published_at”: null, “scheduled_at”: “2026-05-08T07:00:00+00:00” }, { “id”: 102, “slug”: “portabilite-numero-mobile-suisse”, “error”: “Vercel: ERROR — Command “npm run build” exited with 1\nLogs : https://vercel.com/anges-projects-a4da2420/comparateur-mobile/6zomyRRv68WhLxRpiJFMtjmgsxPP”, “status”: “failed”, “attempts”: 0, “vercel_ok”: 0, “gsc_indexed”: 0, “published_at”: null, “scheduled_at”: “2026-05-07T07:00:00+00:00” }, { “id”: 101, “slug”: “swisscom-resiliation-abonnement”, “error”: “Vercel: ERROR — Command “npm run build” exited with 1\nLogs : https://vercel.com/anges-projects-a4da2420/comparateur-mobile/GNScGHTdsrig2WoRZQsoutLjsMXq”, “status”: “failed”, “attempts”: 0, “vercel_ok”: 0, “gsc_indexed”: 0, “published_at”: null, “scheduled_at”: “2026-05-06T07:00:00+00:00” }, { “id”: 100, “slug”: “quel-abonnement-swisscom-choisir”, “error”: “Vercel: ERROR — Command “npm run build” exited with 1\nLogs : https://vercel.com/anges-projects-a4da2420/comparateur-mobile/bT9eWtPkK875DkLHcj1vV21i7xC7”, “status”: “failed”, “attempts”: 0, “vercel_ok”: 0, “gsc_indexed”: 0, “published_at”: null, “scheduled_at”: “2026-05-05T07:00:00+00:00” }, { “id”: 99, “slug”: “mvno-swisscom”, “error”: “Vercel: ERROR — Command “npm run build” exited with 1\nLogs : https://vercel.com/anges-projects-a4da2420/comparateur-mobile/34hpo31aSd4WgYCmgXXpepK453Hq”, “status”: “failed”, “attempts”: 0, “vercel_ok”: 0, “gsc_indexed”: 0, “published_at”: null, “scheduled_at”: “2026-05-04T07:00:00+00:00” }, { “id”: 89, “slug”: “comparatif-abonnement-mobile-suisse”, “error”: null, “status”: “published”, “attempts”: 0, “vercel_ok”: 0, “gsc_indexed”: 0, “published_at”: “2026-04-21”, “scheduled_at”: null }, { “id”: 88, “slug”: “abonnement-mobile”, “error”: null, “status”: “published”, “attempts”: 0, “vercel_ok”: 0, “gsc_indexed”: 0, “published_at”: “2026-03-31”, “scheduled_at”: null }, { “id”: 23, “slug”: “forfait-mobile-suisse-roaming-europe”, “error”: null, “status”: “published”, “attempts”: 0, “vercel_ok”: 0, “gsc_indexed”: 0, “published_at”: “2026-04-21”, “scheduled_at”: null }, { “id”: 22, “slug”: “forfait-mobile-sans-engagement-suisse”, “error”: null, “status”: “published”, “attempts”: 0, “vercel_ok”: 0, “gsc_indexed”: 0, “published_at”: “2026-04-21”, “scheduled_at”: null }, { “id”: 21, “slug”: “forfait-mobile-5g-suisse”, “error”: null, “status”: “published”, “attempts”: 0, “vercel_ok”: 0, “gsc_indexed”: 0, “published_at”: “2026-04-21”, “scheduled_at”: null }, { “id”: 20, “slug”: “forfait-esim-suisse”, “error”: null, “status”: “published”, “attempts”: 0, “vercel_ok”: 0, “gsc_indexed”: 0, “published_at”: “2026-04-21”, “scheduled_at”: null }, { “id”: 19, “slug”: “forfait-data-suisse”, “error”: null, “status”: “published”, “attempts”: 0, “vercel_ok”: 0, “gsc_indexed”: 0, “published_at”: “2026-04-21”, “scheduled_at”: null }, { “id”: 18, “slug”: “roaming-suisse-forfait”, “error”: null, “status”: “published”, “attempts”: 0, “vercel_ok”: 0, “gsc_indexed”: 0, “published_at”: “2026-05-02”, “scheduled_at”: null }, { “id”: 17, “slug”: “meilleur-forfait-mobile-suisse”, “error”: null, “status”: “published”, “attempts”: 0, “vercel_ok”: 0, “gsc_indexed”: 0, “published_at”: “2026-05-02”, “scheduled_at”: null }, { “id”: 16, “slug”: “forfait-mobile-suisse”, “error”: null, “status”: “published”, “attempts”: 0, “vercel_ok”: 0, “gsc_indexed”: 0, “published_at”: “2026-05-02”, “scheduled_at”: null }, { “id”: 15, “slug”: “comparatif-forfait-mobile-suisse”, “error”: null, “status”: “published”, “attempts”: 0, “vercel_ok”: 0, “gsc_indexed”: 0, “published_at”: “2026-05-02”, “scheduled_at”: null } ] }, “recorded_at”: “2026-06-20 00:00:16.906579+00:00”, “payload”: { “recent_rows”: [ { “id”: 230, “slug”: “roaming-suisse”, “error”: “Vercel: ERROR — Command “npm run build” exited with 1\nLogs : https://vercel.com/anges-projects-a4da2420/comparateur-mobile/6gck8h49Ck4eZgEk5V5jpb84HTJ9”, “status”: “failed”, “attempts”: 0, “vercel_ok”: 0, “gsc_indexed”: 0, “published_at”: null, “scheduled_at”: “2026-05-13T07:00:00+00:00” }, { “id”: 103, “slug”: “forfait-mobile-famille-suisse”, “error”: “Vercel: ERROR — Command “npm run build” exited with 1\nLogs : https://vercel.com/anges-projects-a4da2420/comparateur-mobile/Dd6FLxAvJ7UjydbnkhWKSuJ3XJtC”, “status”: “failed”, “attempts”: 0, “vercel_ok”: 0, “gsc_indexed”: 0, “published_at”: null, “scheduled_at”: “2026-05-08T07:00:00+00:00” }, { “id”: 102, “slug”: “portabilite-numero-mobile-suisse”, “error”: “Vercel: ERROR — Command “npm run build” exited with 1\nLogs : https://vercel.com/anges-projects-a4da2420/comparateur-mobile/6zomyRRv68WhLxRpiJFMtjmgsxPP”, “status”: “failed”, “attempts”: 0, “vercel_ok”: 0, “gsc_indexed”: 0, “published_at”: null, “scheduled_at”: “2026-05-07T07:00:00+00:00” }, { “id”: 101, “slug”: “swisscom-resiliation-abonnement”, “error”: “Vercel: ERROR — Command “npm run build” exited with 1\nLogs : https://vercel.com/anges-projects-a4da2420/comparateur-mobile/GNScGHTdsrig2WoRZQsoutLjsMXq”, “status”: “failed”, “attempts”: 0, “vercel_ok”: 0, “gsc_indexed”: 0, “published_at”: null, “scheduled_at”: “2026-05-06T07:00:00+00:00” }, { “id”: 100, “slug”: “quel-abonnement-swisscom-choisir”, “error”: “Vercel: ERROR — Command “npm run build” exited with 1\nLogs : https://vercel.com/anges-projects-a4da2420/comparateur-mobile/bT9eWtPkK875DkLHcj1vV21i7xC7”, “status”: “failed”, “attempts”: 0, “vercel_ok”: 0, “gsc_indexed”: 0, “published_at”: null, “scheduled_at”: “2026-05-05T07:00:00+00:00” }, { “id”: 99, “slug”: “mvno-swisscom”, “error”: “Vercel: ERROR — Command “npm run build” exited with 1\nLogs : https://vercel.com/anges-projects-a4da2420/comparateur-mobile/34hpo31aSd4WgYCmgXXpepK453Hq”, “status”: “failed”, “attempts”: 0, “vercel_ok”: 0, “gsc_indexed”: 0, “published_at”: null, “scheduled_at”: “2026-05-04T07:00:00+00:00” }, { “id”: 89, “slug”: “comparatif-abonnement-mobile-suisse”, “error”: null, “status”: “published”, “attempts”: 0, “vercel_ok”: 0, “gsc_indexed”: 0, “published_at”: “2026-04-21”, “scheduled_at”: null }, { “id”: 88, “slug”: “abonnement-mobile”, “error”: null, “status”: “published”, “attempts”: 0, “vercel_ok”: 0, “gsc_indexed”: 0, “published_at”: “2026-03-31”, “scheduled_at”: null }, { “id”: 23, “slug”: “forfait-mobile-suisse-roaming-europe”, “error”: null, “status”: “published”, “attempts”: 0, “vercel_ok”: 0, “gsc_indexed”: 0, “published_at”: “2026-04-21”, “scheduled_at”: null }, { “id”: 22, “slug”: “forfait-mobile-sans-engagement-suisse”, “error”: null, “status”: “published”, “attempts”: 0, “vercel_ok”: 0, “gsc_indexed”: 0, “published_at”: “2026-04-21”, “scheduled_at”: null }, { “id”: 21, “slug”: “forfait-mobile-5g-suisse”, “error”: null, “status”: “published”, “attempts”: 0, “vercel_ok”: 0, “gsc_indexed”: 0, “published_at”: “2026-04-21”, “scheduled_at”: null }, { “id”: 20, “slug”: “forfait-esim-suisse”, “error”: null, “status”: “published”, “attempts”: 0, “vercel_ok”: 0, “gsc_indexed”: 0, “published_at”: “2026-04-21”, “scheduled_at”: null }, { “id”: 19, “slug”: “forfait-data-suisse”, “error”: null, “status”: “published”, “attempts”: 0, “vercel_ok”: 0, “gsc_indexed”: 0, “published_at”: “2026-04-21”, “scheduled_at”: null }, { “id”: 18, “slug”: “roaming-suisse-forfait”, “error”: null, “status”: “published”, “attempts”: 0, “vercel_ok”: 0, “gsc_indexed”: 0, “published_at”: “2026-05-02”, “scheduled_at”: null }, { “id”: 17, “slug”: “meilleur-forfait-mobile-suisse”, “error”: null, “status”: “published”, “attempts”: 0, “vercel_ok”: 0, “gsc_indexed”: 0, “published_at”: “2026-05-02”, “scheduled_at”: null }, { “id”: 16, “slug”: “forfait-mobile-suisse”, “error”: null, “status”: “published”, “attempts”: 0, “vercel_ok”: 0, “gsc_indexed”: 0, “published_at”: “2026-05-02”, “scheduled_at”: null }, { “id”: 15, “slug”: “comparatif-forfait-mobile-suisse”, “error”: null, “status”: “published”, “attempts”: 0, “vercel_ok”: 0, “gsc_indexed”: 0, “published_at”: “2026-05-02”, “scheduled_at”: null } ] } }, { “id”: 1653, “site_key”: “forfaitdeal”, “source_type”: “gsc_snapshot”, “subject_key”: “pages_28d”, “payload_json”: { “saved_at”: “2026-06-19T18:15:05.528962Z”, “top_pages”: [ { “ctr”: 0.0, “page”: “https://www.forfaitdeal.ch/blog/forfait-mobile-suisse-roaming-europe”, “clicks”: 0, “position”: 24.365853658536587, “top_query”: “roaming suisse”, “impressions”: 41 }, { “ctr”: 0.0, “page”: “https://www.forfaitdeal.ch/blog/portabilite-numero-mobile-suisse”, “clicks”: 0, “position”: 9.1, “top_query”: “conserver numero mobile”, “impressions”: 40 }, { “ctr”: 0.0, “page”: “https://www.forfaitdeal.ch/blog/forfait-data-suisse”, “clicks”: 0, “position”: 6.59375, “top_query”: "", “impressions”: 32 }, { “ctr”: 0.0, “page”: “https://www.forfaitdeal.ch/blog/comparatif-abonnement-mobile-suisse”, “clicks”: 0, “position”: 10.444444444444445, “top_query”: “comparatif operateurs mobile suisse”, “impressions”: 27 }, { “ctr”: 0.041666666666666664, “page”: “https://www.forfaitdeal.ch/blog/swisscom-resiliation-abonnement”, “clicks”: 1, “position”: 10.041666666666666, “top_query”: "", “impressions”: 24 } ], “top_queries”: [ { “ctr”: 0.0, “query”: “roaming suisse”, “clicks”: 0, “position”: 15.882352941176471, “impressions”: 17 }, { “ctr”: 0.0, “query”: “forfait mobile france suisse”, “clicks”: 0, “position”: 61.666666666666664, “impressions”: 9 }, { “ctr”: 0.0, “query”: “comparatif abonnement mobile suisse”, “clicks”: 0, “position”: 18.666666666666668, “impressions”: 3 }, { “ctr”: 0.0, “query”: “comparateur forfait mobile suisse”, “clicks”: 0, “position”: 29.0, “impressions”: 2 }, { “ctr”: 0.0, “query”: “suisse roaming”, “clicks”: 0, “position”: 13.0, “impressions”: 2 }, { “ctr”: 0.0, “query”: “abonnements mobiles pas chers”, “clicks”: 0, “position”: 58.0, “impressions”: 1 }, { “ctr”: 0.0, “query”: “comparatif operateurs mobile suisse”, “clicks”: 0, “position”: 15.0, “impressions”: 1 }, { “ctr”: 0.0, “query”: “conserver numero mobile”, “clicks”: 0, “position”: 12.0, “impressions”: 1 }, { “ctr”: 0.0, “query”: “forfait mobile suisse comparatif”, “clicks”: 0, “position”: 11.0, “impressions”: 1 } ] }, “recorded_at”: “2026-06-20 00:00:16.819706+00:00”, “payload”: { “saved_at”: “2026-06-19T18:15:05.528962Z”, “top_pages”: [ { “ctr”: 0.0, “page”: “https://www.forfaitdeal.ch/blog/forfait-mobile-suisse-roaming-europe”, “clicks”: 0, “position”: 24.365853658536587, “top_query”: “roaming suisse”, “impressions”: 41 }, { “ctr”: 0.0, “page”: “https://www.forfaitdeal.ch/blog/portabilite-numero-mobile-suisse”, “clicks”: 0, “position”: 9.1, “top_query”: “conserver numero mobile”, “impressions”: 40 }, { “ctr”: 0.0, “page”: “https://www.forfaitdeal.ch/blog/forfait-data-suisse”, “clicks”: 0, “position”: 6.59375, “top_query”: "", “impressions”: 32 }, { “ctr”: 0.0, “page”: “https://www.forfaitdeal.ch/blog/comparatif-abonnement-mobile-suisse”, “clicks”: 0, “position”: 10.444444444444445, “top_query”: “comparatif operateurs mobile suisse”, “impressions”: 27 }, { “ctr”: 0.041666666666666664, “page”: “https://www.forfaitdeal.ch/blog/swisscom-resiliation-abonnement”, “clicks”: 1, “position”: 10.041666666666666, “top_query”: "", “impressions”: 24 } ], “top_queries”: [ { “ctr”: 0.0, “query”: “roaming suisse”, “clicks”: 0, “position”: 15.882352941176471, “impressions”: 17 }, { “ctr”: 0.0, “query”: “forfait mobile france suisse”, “clicks”: 0, “position”: 61.666666666666664, “impressions”: 9 }, { “ctr”: 0.0, “query”: “comparatif abonnement mobile suisse”, “clicks”: 0, “position”: 18.666666666666668, “impressions”: 3 }, { “ctr”: 0.0, “query”: “comparateur forfait mobile suisse”, “clicks”: 0, “position”: 29.0, “impressions”: 2 }, { “ctr”: 0.0, “query”: “suisse roaming”, “clicks”: 0, “position”: 13.0, “impressions”: 2 }, { “ctr”: 0.0, “query”: “abonnements mobiles pas chers”, “clicks”: 0, “position”: 58.0, “impressions”: 1 }, { “ctr”: 0.0, “query”: “comparatif operateurs mobile suisse”, “clicks”: 0, “position”: 15.0, “impressions”: 1 }, { “ctr”: 0.0, “query”: “conserver numero mobile”, “clicks”: 0, “position”: 12.0, “impressions”: 1 }, { “ctr”: 0.0, “query”: “forfait mobile suisse comparatif”, “clicks”: 0, “position”: 11.0, “impressions”: 1 } ] } }, { “id”: 1647, “site_key”: “forfaitdeal”, “source_type”: “learningseo_site_feedback”, “subject_key”: “forfaitdeal”, “payload_json”: { “site_key”: “forfaitdeal”, “project_name”: “ForfaitDeal”, “applied_topics”: [ “fundamentals”, “execution”, “technical”, “content”, “links”, “automation” ], “contradictions”: [ “Negative measured outcomes still exist. SOP confidence should not be raised until remeasurement confirms recovery.” ], “sop_candidates”: [ “Before new draft creation, verify that the target intent is not already partially served by an existing URL.”, “Block SOP confidence increases when the latest measured action in the same category is negative.”, “Treat crawlability, indexation, and internal-link architecture as preconditions before content-scale actions.”, “Every new or refreshed priority page should receive a deliberate internal-link plan from existing related pages.”, “Automated actions must emit events, measurements, and postmortems by default.” ], “lessons_created”: 6 }, “recorded_at”: “2026-06-20 00:00:11.370837+00:00”, “payload”: { “site_key”: “forfaitdeal”, “project_name”: “ForfaitDeal”, “applied_topics”: [ “fundamentals”, “execution”, “technical”, “content”, “links”, “automation” ], “contradictions”: [ “Negative measured outcomes still exist. SOP confidence should not be raised until remeasurement confirms recovery.” ], “sop_candidates”: [ “Before new draft creation, verify that the target intent is not already partially served by an existing URL.”, “Block SOP confidence increases when the latest measured action in the same category is negative.”, “Treat crawlability, indexation, and internal-link architecture as preconditions before content-scale actions.”, “Every new or refreshed priority page should receive a deliberate internal-link plan from existing related pages.”, “Automated actions must emit events, measurements, and postmortems by default.” ], “lessons_created”: 6 } }, { “id”: 1638, “site_key”: “forfaitdeal”, “source_type”: “technical_remediation”, “subject_key”: “forfaitdeal”, “payload_json”: { “ok”: true, “errors”: [], “actions”: [ { “type”: “optimize_lcp”, “value”: 2737.4, “metric”: “lcp_ms”, “target”: “https://www.forfaitdeal.ch”, “priority”: “high”, “threshold”: 2500, “recommended_changes”: [ “Identifier l’élément LCP mobile sur la home via PageSpeed/Lighthouse.”, “Optimiser l’image ou le bloc hero responsable: format WebP/AVIF, dimensions adaptées, compression.”, “Précharger ou prioriser uniquement l’asset LCP critique et différer les médias non critiques.”, “Réduire CSS/JS bloquant au-dessus de la ligne de flottaison.” ] } ], “changed”: false, “attempted”: true, “deployment”: { “ok”: true, “detail”: “no_change”, “checked”: false } }, “recorded_at”: “2026-06-19 00:04:11.365184+00:00”, “payload”: { “ok”: true, “errors”: [], “actions”: [ { “type”: “optimize_lcp”, “value”: 2737.4, “metric”: “lcp_ms”, “target”: “https://www.forfaitdeal.ch”, “priority”: “high”, “threshold”: 2500, “recommended_changes”: [ “Identifier l’élément LCP mobile sur la home via PageSpeed/Lighthouse.”, “Optimiser l’image ou le bloc hero responsable: format WebP/AVIF, dimensions adaptées, compression.”, “Précharger ou prioriser uniquement l’asset LCP critique et différer les médias non critiques.”, “Réduire CSS/JS bloquant au-dessus de la ligne de flottaison.” ] } ], “changed”: false, “attempted”: true, “deployment”: { “ok”: true, “detail”: “no_change”, “checked”: false } } }, { “id”: 1637, “site_key”: “forfaitdeal”, “source_type”: “technical_audit”, “subject_key”: “forfaitdeal”, “payload_json”: { “gsc”: { “ok”: true, “checked”: true, “message”: “Connexion GSC OK”, “payload”: { “sample_rows”: 1, “properties_count”: 5, “resolved_property”: “sc-domain:forfaitdeal.ch” }, “sitemap_url”: “https://www.forfaitdeal.ch/sitemap.xml”, “sitemap_submission_ready”: true }, “pages”: [ { “ok”: true, “url”: “https://www.forfaitdeal.ch”, “error”: "", “noindex”: false, “canonical”: “https://www.forfaitdeal.ch/”, “final_url”: “https://www.forfaitdeal.ch/”, “indexable”: true, “redirected”: false, “robots_meta”: "", “status_code”: 200, “x_robots_tag”: "", “redirect_chain”: [], “robots_allowed”: true, “canonical_present”: true, “canonical_matches_url”: true }, { “ok”: true, “url”: “https://www.forfaitdeal.ch/blog”, “error”: "", “noindex”: false, “canonical”: “https://www.forfaitdeal.ch/blog”, “final_url”: “https://www.forfaitdeal.ch/blog”, “indexable”: true, “redirected”: false, “robots_meta”: "", “status_code”: 200, “x_robots_tag”: "", “redirect_chain”: [], “robots_allowed”: true, “canonical_present”: true, “canonical_matches_url”: true } ], “robots”: { “ok”: true, “url”: “https://www.forfaitdeal.ch/robots.txt”, “error”: "", “sitemaps”: [ “https://www.forfaitdeal.ch/sitemap.xml” ], “blocks_all”: false, “rules_text”: “User-agent: *\nAllow: /\n\nSitemap: https://www.forfaitdeal.ch/sitemap.xml\n”, “status_code”: 200 }, “status”: “ok”, “checked”: true, “sitemap”: { “ok”: true, “checked”: [ { “ok”: true, “url”: “https://www.forfaitdeal.ch/sitemap.xml”, “error”: "", “root_tag”: “urlset”, “url_count”: 24, “valid_xml”: true, “status_code”: 200, “child_checked”: [], “child_sitemaps”: [], “listed_sample_urls”: [ “https://www.forfaitdeal.ch/”, “https://www.forfaitdeal.ch/comparateur”, “https://www.forfaitdeal.ch/abonnement-mobile-suisse”, “https://www.forfaitdeal.ch/comparateur-abonnement-mobile-suisse”, “https://www.forfaitdeal.ch/forfait-mobile-suisse”, “https://www.forfaitdeal.ch/forfait-mobile-sans-engagement”, “https://www.forfaitdeal.ch/forfait-mobile-5g-suisse”, “https://www.forfaitdeal.ch/roaming-suisse”, “https://www.forfaitdeal.ch/blog”, “https://www.forfaitdeal.ch/methodologie”, “https://www.forfaitdeal.ch/confidentialite”, “https://www.forfaitdeal.ch/blog/roaming-suisse”, “https://www.forfaitdeal.ch/blog/forfait-mobile-famille-suisse”, “https://www.forfaitdeal.ch/blog/portabilite-numero-mobile-suisse”, “https://www.forfaitdeal.ch/blog/swisscom-resiliation-abonnement”, “https://www.forfaitdeal.ch/blog/quel-abonnement-swisscom-choisir”, “https://www.forfaitdeal.ch/blog/mvno-swisscom”, “https://www.forfaitdeal.ch/blog/forfait-mobile-5g-suisse”, “https://www.forfaitdeal.ch/blog/forfait-data-suisse”, “https://www.forfaitdeal.ch/blog/forfait-mobile-sans-engagement-suisse”, “https://www.forfaitdeal.ch/blog/forfait-esim-suisse”, “https://www.forfaitdeal.ch/blog/forfait-mobile-suisse-roaming-europe”, “https://www.forfaitdeal.ch/blog/comparatif-abonnement-mobile-suisse”, “https://www.forfaitdeal.ch/blog/abonnement-mobile” ] } ], “selected”: { “ok”: true, “url”: “https://www.forfaitdeal.ch/sitemap.xml”, “error”: "", “root_tag”: “urlset”, “url_count”: 24, “valid_xml”: true, “status_code”: 200, “child_checked”: [], “child_sitemaps”: [], “listed_sample_urls”: [ “https://www.forfaitdeal.ch/”, “https://www.forfaitdeal.ch/comparateur”, “https://www.forfaitdeal.ch/abonnement-mobile-suisse”, “https://www.forfaitdeal.ch/comparateur-abonnement-mobile-suisse”, “https://www.forfaitdeal.ch/forfait-mobile-suisse”, “https://www.forfaitdeal.ch/forfait-mobile-sans-engagement”, “https://www.forfaitdeal.ch/forfait-mobile-5g-suisse”, “https://www.forfaitdeal.ch/roaming-suisse”, “https://www.forfaitdeal.ch/blog”, “https://www.forfaitdeal.ch/methodologie”, “https://www.forfaitdeal.ch/confidentialite”, “https://www.forfaitdeal.ch/blog/roaming-suisse”, “https://www.forfaitdeal.ch/blog/forfait-mobile-famille-suisse”, “https://www.forfaitdeal.ch/blog/portabilite-numero-mobile-suisse”, “https://www.forfaitdeal.ch/blog/swisscom-resiliation-abonnement”, “https://www.forfaitdeal.ch/blog/quel-abonnement-swisscom-choisir”, “https://www.forfaitdeal.ch/blog/mvno-swisscom”, “https://www.forfaitdeal.ch/blog/forfait-mobile-5g-suisse”, “https://www.forfaitdeal.ch/blog/forfait-data-suisse”, “https://www.forfaitdeal.ch/blog/forfait-mobile-sans-engagement-suisse”, “https://www.forfaitdeal.ch/blog/forfait-esim-suisse”, “https://www.forfaitdeal.ch/blog/forfait-mobile-suisse-roaming-europe”, “https://www.forfaitdeal.ch/blog/comparatif-abonnement-mobile-suisse”, “https://www.forfaitdeal.ch/blog/abonnement-mobile” ] } }, “site_key”: “forfaitdeal”, “warnings”: [ “URL GSC redirigée: https://www.forfaitdeal.ch/blog/abonnement-mobile-suisse https://www.forfaitdeal.ch/blog/abonnement-mobile”, “LCP mobile élevé (2737 ms)” ], “pagespeed”: { “ok”: true, “cls”: 0.066347, “inp_ms”: 115.0, “lcp_ms”: 2737.3987083751185, “mobile”: { “ok”: true, “cls”: 0.066347, “inp_ms”: 115.0, “lcp_ms”: 2737.3987083751185, “source”: “pagespeed_insights”, “strategy”: “mobile”, “performance_score”: 91.0 }, “source”: “pagespeed_insights”, “desktop”: { “ok”: true, “cls”: 0.009877, “inp_ms”: 69.0, “lcp_ms”: 688.3989305364001, “source”: “pagespeed_insights”, “strategy”: “desktop”, “performance_score”: 100.0 }, “strategy”: “mobile”, “performance_score”: 91.0 }, “gsc_live_urls”: { “urls”: [ { “ok”: true, “ctr”: 0.0, “url”: “https://www.forfaitdeal.ch/blog/forfait-mobile-suisse-roaming-europe”, “error”: "", “clicks”: 0, “position”: 22.914893617021278, “canonical”: “https://www.forfaitdeal.ch/blog/forfait-mobile-suisse-roaming-europe”, “final_url”: “https://www.forfaitdeal.ch/blog/forfait-mobile-suisse-roaming-europe”, “indexable”: true, “top_query”: “roaming suisse”, “redirected”: false, “impressions”: 47, “status_code”: 200 }, { “ok”: true, “ctr”: 0.0, “url”: “https://www.forfaitdeal.ch/blog/portabilite-numero-mobile-suisse”, “error”: "", “clicks”: 0, “position”: 9.0, “canonical”: “https://www.forfaitdeal.ch/blog/portabilite-numero-mobile-suisse”, “final_url”: “https://www.forfaitdeal.ch/blog/portabilite-numero-mobile-suisse”, “indexable”: true, “top_query”: “conserver numero mobile”, “redirected”: false, “impressions”: 41, “status_code”: 200 }, { “ok”: true, “ctr”: 0.0, “url”: “https://www.forfaitdeal.ch/blog/forfait-data-suisse”, “error”: "", “clicks”: 0, “position”: 6.666666666666667, “canonical”: “https://www.forfaitdeal.ch/blog/forfait-data-suisse”, “final_url”: “https://www.forfaitdeal.ch/blog/forfait-data-suisse”, “indexable”: true, “top_query”: "", “redirected”: false, “impressions”: 33, “status_code”: 200 }, { “ok”: true, “ctr”: 0.0, “url”: “https://www.forfaitdeal.ch/blog/comparatif-abonnement-mobile-suisse”, “error”: "", “clicks”: 0, “position”: 10.444444444444445, “canonical”: “https://www.forfaitdeal.ch/blog/comparatif-abonnement-mobile-suisse”, “final_url”: “https://www.forfaitdeal.ch/blog/comparatif-abonnement-mobile-suisse”, “indexable”: true, “top_query”: “comparatif operateurs mobile suisse”, “redirected”: false, “impressions”: 27, “status_code”: 200 }, { “ok”: true, “ctr”: 0.0, “url”: “https://www.forfaitdeal.ch/blog/swisscom-resiliation-abonnement”, “error”: "", “clicks”: 0, “position”: 10.238095238095237, “canonical”: “https://www.forfaitdeal.ch/blog/swisscom-resiliation-abonnement”, “final_url”: “https://www.forfaitdeal.ch/blog/swisscom-resiliation-abonnement”, “indexable”: true, “top_query”: "", “redirected”: false, “impressions”: 21, “status_code”: 200 }, { “ok”: true, “ctr”: 0.0, “url”: “https://www.forfaitdeal.ch/blog/abonnement-mobile-suisse”, “error”: "", “clicks”: 0, “position”: 9.133333333333333, “canonical”: “https://www.forfaitdeal.ch/blog/abonnement-mobile”, “final_url”: “https://www.forfaitdeal.ch/blog/abonnement-mobile”, “indexable”: true, “top_query”: "", “redirected”: true, “impressions”: 15, “status_code”: 200 }, { “ok”: true, “ctr”: 0.0, “url”: “https://www.forfaitdeal.ch/blog”, “error”: "", “clicks”: 0, “position”: 15.9, “canonical”: “https://www.forfaitdeal.ch/blog”, “final_url”: “https://www.forfaitdeal.ch/blog”, “indexable”: true, “top_query”: “comparatif abonnement mobile suisse”, “redirected”: false, “impressions”: 10, “status_code”: 200 }, { “ok”: true, “ctr”: 0.0, “url”: “https://www.forfaitdeal.ch/blog/forfait-mobile-5g-suisse”, “error”: "", “clicks”: 0, “position”: 12.4, “canonical”: “https://www.forfaitdeal.ch/blog/forfait-mobile-5g-suisse”, “final_url”: “https://www.forfaitdeal.ch/blog/forfait-mobile-5g-suisse”, “indexable”: true, “top_query”: "", “redirected”: false, “impressions”: 5, “status_code”: 200 }, { “ok”: true, “ctr”: 0.0, “url”: “https://www.forfaitdeal.ch/blog/abonnement-mobile”, “error”: "", “clicks”: 0, “position”: 31.0, “canonical”: “https://www.forfaitdeal.ch/blog/abonnement-mobile”, “final_url”: “https://www.forfaitdeal.ch/blog/abonnement-mobile”, “indexable”: true, “top_query”: “abonnements mobiles pas chers”, “redirected”: false, “impressions”: 3, “status_code”: 200 }, { “ok”: true, “ctr”: 0.0, “url”: “https://www.forfaitdeal.ch/blog/forfait-mobile-sans-engagement-suisse”, “error”: "", “clicks”: 0, “position”: 9.5, “canonical”: “https://www.forfaitdeal.ch/blog/forfait-mobile-sans-engagement-suisse”, “final_url”: “https://www.forfaitdeal.ch/blog/forfait-mobile-sans-engagement-suisse”, “indexable”: true, “top_query”: "", “redirected”: false, “impressions”: 2, “status_code”: 200 } ], “source”: “gsc_pages_28d”, “checked”: true, “broken_urls”: [], “broken_count”: 0, “checked_count”: 10, “redirected_urls”: [ { “ok”: true, “ctr”: 0.0, “url”: “https://www.forfaitdeal.ch/blog/abonnement-mobile-suisse”, “error”: "", “clicks”: 0, “position”: 9.133333333333333, “canonical”: “https://www.forfaitdeal.ch/blog/abonnement-mobile”, “final_url”: “https://www.forfaitdeal.ch/blog/abonnement-mobile”, “indexable”: true, “top_query”: "", “redirected”: true, “impressions”: 15, “status_code”: 200 } ], “redirected_count”: 1, “snapshot_saved_at”: “2026-06-18T18:15:06.017801Z” }, “blocking_issues”: [], “safe_to_optimize”: true, “sitemap_coverage”: { “checked”: true, “missing_urls”: [], “expected_urls”: [ “https://www.forfaitdeal.ch”, “https://www.forfaitdeal.ch/blog” ], “listed_url_sample_size”: 24 }, “deployment_health”: { “checked”: false }, “technical_health_score”: 90 }, “recorded_at”: “2026-06-19 00:04:09.983422+00:00”, “payload”: { “gsc”: { “ok”: true, “checked”: true, “message”: “Connexion GSC OK”, “payload”: { “sample_rows”: 1, “properties_count”: 5, “resolved_property”: “sc-domain:forfaitdeal.ch” }, “sitemap_url”: “https://www.forfaitdeal.ch/sitemap.xml”, “sitemap_submission_ready”: true }, “pages”: [ { “ok”: true, “url”: “https://www.forfaitdeal.ch”, “error”: "", “noindex”: false, “canonical”: “https://www.forfaitdeal.ch/”, “final_url”: “https://www.forfaitdeal.ch/”, “indexable”: true, “redirected”: false, “robots_meta”: "", “status_code”: 200, “x_robots_tag”: "", “redirect_chain”: [], “robots_allowed”: true, “canonical_present”: true, “canonical_matches_url”: true }, { “ok”: true, “url”: “https://www.forfaitdeal.ch/blog”, “error”: "", “noindex”: false, “canonical”: “https://www.forfaitdeal.ch/blog”, “final_url”: “https://www.forfaitdeal.ch/blog”, “indexable”: true, “redirected”: false, “robots_meta”: "", “status_code”: 200, “x_robots_tag”: "", “redirect_chain”: [], “robots_allowed”: true, “canonical_present”: true, “canonical_matches_url”: true } ], “robots”: { “ok”: true, “url”: “https://www.forfaitdeal.ch/robots.txt”, “error”: "", “sitemaps”: [ “https://www.forfaitdeal.ch/sitemap.xml” ], “blocks_all”: false, “rules_text”: “User-agent: *\nAllow: /\n\nSitemap: https://www.forfaitdeal.ch/sitemap.xml\n”, “status_code”: 200 }, “status”: “ok”, “checked”: true, “sitemap”: { “ok”: true, “checked”: [ { “ok”: true, “url”: “https://www.forfaitdeal.ch/sitemap.xml”, “error”: "", “root_tag”: “urlset”, “url_count”: 24, “valid_xml”: true, “status_code”: 200, “child_checked”: [], “child_sitemaps”: [], “listed_sample_urls”: [ “https://www.forfaitdeal.ch/”, “https://www.forfaitdeal.ch/comparateur”, “https://www.forfaitdeal.ch/abonnement-mobile-suisse”, “https://www.forfaitdeal.ch/comparateur-abonnement-mobile-suisse”, “https://www.forfaitdeal.ch/forfait-mobile-suisse”, “https://www.forfaitdeal.ch/forfait-mobile-sans-engagement”, “https://www.forfaitdeal.ch/forfait-mobile-5g-suisse”, “https://www.forfaitdeal.ch/roaming-suisse”, “https://www.forfaitdeal.ch/blog”, “https://www.forfaitdeal.ch/methodologie”, “https://www.forfaitdeal.ch/confidentialite”, “https://www.forfaitdeal.ch/blog/roaming-suisse”, “https://www.forfaitdeal.ch/blog/forfait-mobile-famille-suisse”, “https://www.forfaitdeal.ch/blog/portabilite-numero-mobile-suisse”, “https://www.forfaitdeal.ch/blog/swisscom-resiliation-abonnement”, “https://www.forfaitdeal.ch/blog/quel-abonnement-swisscom-choisir”, “https://www.forfaitdeal.ch/blog/mvno-swisscom”, “https://www.forfaitdeal.ch/blog/forfait-mobile-5g-suisse”, “https://www.forfaitdeal.ch/blog/forfait-data-suisse”, “https://www.forfaitdeal.ch/blog/forfait-mobile-sans-engagement-suisse”, “https://www.forfaitdeal.ch/blog/forfait-esim-suisse”, “https://www.forfaitdeal.ch/blog/forfait-mobile-suisse-roaming-europe”, “https://www.forfaitdeal.ch/blog/comparatif-abonnement-mobile-suisse”, “https://www.forfaitdeal.ch/blog/abonnement-mobile” ] } ], “selected”: { “ok”: true, “url”: “https://www.forfaitdeal.ch/sitemap.xml”, “error”: "", “root_tag”: “urlset”, “url_count”: 24, “valid_xml”: true, “status_code”: 200, “child_checked”: [], “child_sitemaps”: [], “listed_sample_urls”: [ “https://www.forfaitdeal.ch/”, “https://www.forfaitdeal.ch/comparateur”, “https://www.forfaitdeal.ch/abonnement-mobile-suisse”, “https://www.forfaitdeal.ch/comparateur-abonnement-mobile-suisse”, “https://www.forfaitdeal.ch/forfait-mobile-suisse”, “https://www.forfaitdeal.ch/forfait-mobile-sans-engagement”, “https://www.forfaitdeal.ch/forfait-mobile-5g-suisse”, “https://www.forfaitdeal.ch/roaming-suisse”, “https://www.forfaitdeal.ch/blog”, “https://www.forfaitdeal.ch/methodologie”, “https://www.forfaitdeal.ch/confidentialite”, “https://www.forfaitdeal.ch/blog/roaming-suisse”, “https://www.forfaitdeal.ch/blog/forfait-mobile-famille-suisse”, “https://www.forfaitdeal.ch/blog/portabilite-numero-mobile-suisse”, “https://www.forfaitdeal.ch/blog/swisscom-resiliation-abonnement”, “https://www.forfaitdeal.ch/blog/quel-abonnement-swisscom-choisir”, “https://www.forfaitdeal.ch/blog/mvno-swisscom”, “https://www.forfaitdeal.ch/blog/forfait-mobile-5g-suisse”, “https://www.forfaitdeal.ch/blog/forfait-data-suisse”, “https://www.forfaitdeal.ch/blog/forfait-mobile-sans-engagement-suisse”, “https://www.forfaitdeal.ch/blog/forfait-esim-suisse”, “https://www.forfaitdeal.ch/blog/forfait-mobile-suisse-roaming-europe”, “https://www.forfaitdeal.ch/blog/comparatif-abonnement-mobile-suisse”, “https://www.forfaitdeal.ch/blog/abonnement-mobile” ] } }, “site_key”: “forfaitdeal”, “warnings”: [ “URL GSC redirigée: https://www.forfaitdeal.ch/blog/abonnement-mobile-suisse https://www.forfaitdeal.ch/blog/abonnement-mobile”, “LCP mobile élevé (2737 ms)” ], “pagespeed”: { “ok”: true, “cls”: 0.066347, “inp_ms”: 115.0, “lcp_ms”: 2737.3987083751185, “mobile”: { “ok”: true, “cls”: 0.066347, “inp_ms”: 115.0, “lcp_ms”: 2737.3987083751185, “source”: “pagespeed_insights”, “strategy”: “mobile”, “performance_score”: 91.0 }, “source”: “pagespeed_insights”, “desktop”: { “ok”: true, “cls”: 0.009877, “inp_ms”: 69.0, “lcp_ms”: 688.3989305364001, “source”: “pagespeed_insights”, “strategy”: “desktop”, “performance_score”: 100.0 }, “strategy”: “mobile”, “performance_score”: 91.0 }, “gsc_live_urls”: { “urls”: [ { “ok”: true, “ctr”: 0.0, “url”: “https://www.forfaitdeal.ch/blog/forfait-mobile-suisse-roaming-europe”, “error”: "", “clicks”: 0, “position”: 22.914893617021278, “canonical”: “https://www.forfaitdeal.ch/blog/forfait-mobile-suisse-roaming-europe”, “final_url”: “https://www.forfaitdeal.ch/blog/forfait-mobile-suisse-roaming-europe”, “indexable”: true, “top_query”: “roaming suisse”, “redirected”: false, “impressions”: 47, “status_code”: 200 }, { “ok”: true, “ctr”: 0.0, “url”: “https://www.forfaitdeal.ch/blog/portabilite-numero-mobile-suisse”, “error”: "", “clicks”: 0, “position”: 9.0, “canonical”: “https://www.forfaitdeal.ch/blog/portabilite-numero-mobile-suisse”, “final_url”: “https://www.forfaitdeal.ch/blog/portabilite-numero-mobile-suisse”, “indexable”: true, “top_query”: “conserver numero mobile”, “redirected”: false, “impressions”: 41, “status_code”: 200 }, { “ok”: true, “ctr”: 0.0, “url”: “https://www.forfaitdeal.ch/blog/forfait-data-suisse”, “error”: "", “clicks”: 0, “position”: 6.666666666666667, “canonical”: “https://www.forfaitdeal.ch/blog/forfait-data-suisse”, “final_url”: “https://www.forfaitdeal.ch/blog/forfait-data-suisse”, “indexable”: true, “top_query”: "", “redirected”: false, “impressions”: 33, “status_code”: 200 }, { “ok”: true, “ctr”: 0.0, “url”: “https://www.forfaitdeal.ch/blog/comparatif-abonnement-mobile-suisse”, “error”: "", “clicks”: 0, “position”: 10.444444444444445, “canonical”: “https://www.forfaitdeal.ch/blog/comparatif-abonnement-mobile-suisse”, “final_url”: “https://www.forfaitdeal.ch/blog/comparatif-abonnement-mobile-suisse”, “indexable”: true, “top_query”: “comparatif operateurs mobile suisse”, “redirected”: false, “impressions”: 27, “status_code”: 200 }, { “ok”: true, “ctr”: 0.0, “url”: “https://www.forfaitdeal.ch/blog/swisscom-resiliation-abonnement”, “error”: "", “clicks”: 0, “position”: 10.238095238095237, “canonical”: “https://www.forfaitdeal.ch/blog/swisscom-resiliation-abonnement”, “final_url”: “https://www.forfaitdeal.ch/blog/swisscom-resiliation-abonnement”, “indexable”: true, “top_query”: "", “redirected”: false, “impressions”: 21, “status_code”: 200 }, { “ok”: true, “ctr”: 0.0, “url”: “https://www.forfaitdeal.ch/blog/abonnement-mobile-suisse”, “error”: "", “clicks”: 0, “position”: 9.133333333333333, “canonical”: “https://www.forfaitdeal.ch/blog/abonnement-mobile”, “final_url”: “https://www.forfaitdeal.ch/blog/abonnement-mobile”, “indexable”: true, “top_query”: "", “redirected”: true, “impressions”: 15, “status_code”: 200 }, { “ok”: true, “ctr”: 0.0, “url”: “https://www.forfaitdeal.ch/blog”, “error”: "", “clicks”: 0, “position”: 15.9, “canonical”: “https://www.forfaitdeal.ch/blog”, “final_url”: “https://www.forfaitdeal.ch/blog”, “indexable”: true, “top_query”: “comparatif abonnement mobile suisse”, “redirected”: false, “impressions”: 10, “status_code”: 200 }, { “ok”: true, “ctr”: 0.0, “url”: “https://www.forfaitdeal.ch/blog/forfait-mobile-5g-suisse”, “error”: "", “clicks”: 0, “position”: 12.4, “canonical”: “https://www.forfaitdeal.ch/blog/forfait-mobile-5g-suisse”, “final_url”: “https://www.forfaitdeal.ch/blog/forfait-mobile-5g-suisse”, “indexable”: true, “top_query”: "", “redirected”: false, “impressions”: 5, “status_code”: 200 }, { “ok”: true, “ctr”: 0.0, “url”: “https://www.forfaitdeal.ch/blog/abonnement-mobile”, “error”: "", “clicks”: 0, “position”: 31.0, “canonical”: “https://www.forfaitdeal.ch/blog/abonnement-mobile”, “final_url”: “https://www.forfaitdeal.ch/blog/abonnement-mobile”, “indexable”: true, “top_query”: “abonnements mobiles pas chers”, “redirected”: false, “impressions”: 3, “status_code”: 200 }, { “ok”: true, “ctr”: 0.0, “url”: “https://www.forfaitdeal.ch/blog/forfait-mobile-sans-engagement-suisse”, “error”: "", “clicks”: 0, “position”: 9.5, “canonical”: “https://www.forfaitdeal.ch/blog/forfait-mobile-sans-engagement-suisse”, “final_url”: “https://www.forfaitdeal.ch/blog/forfait-mobile-sans-engagement-suisse”, “indexable”: true, “top_query”: "", “redirected”: false, “impressions”: 2, “status_code”: 200 } ], “source”: “gsc_pages_28d”, “checked”: true, “broken_urls”: [], “broken_count”: 0, “checked_count”: 10, “redirected_urls”: [ { “ok”: true, “ctr”: 0.0, “url”: “https://www.forfaitdeal.ch/blog/abonnement-mobile-suisse”, “error”: "", “clicks”: 0, “position”: 9.133333333333333, “canonical”: “https://www.forfaitdeal.ch/blog/abonnement-mobile”, “final_url”: “https://www.forfaitdeal.ch/blog/abonnement-mobile”, “indexable”: true, “top_query”: "", “redirected”: true, “impressions”: 15, “status_code”: 200 } ], “redirected_count”: 1, “snapshot_saved_at”: “2026-06-18T18:15:06.017801Z” }, “blocking_issues”: [], “safe_to_optimize”: true, “sitemap_coverage”: { “checked”: true, “missing_urls”: [], “expected_urls”: [ “https://www.forfaitdeal.ch”, “https://www.forfaitdeal.ch/blog” ], “listed_url_sample_size”: 24 }, “deployment_health”: { “checked”: false }, “technical_health_score”: 90 } }, { “id”: 1630, “site_key”: “forfaitdeal”, “source_type”: “workflow_state”, “subject_key”: “recent_events”, “payload_json”: { “events”: [ { “type”: “gsc_sync”, “payload”: { “pages_7d”: 7, “pages_28d”: 10, “queries_7d”: 2, “queries_28d”: 11, “page_query_28d”: 11 }, “recorded_at”: “2026-06-17T12:15:05.983018Z” }, { “type”: “gsc_sync”, “payload”: { “pages_7d”: 7, “pages_28d”: 10, “queries_7d”: 2, “queries_28d”: 11, “page_query_28d”: 11 }, “recorded_at”: “2026-06-17T18:15:05.891984Z” }, { “type”: “hermes_daily_feedback_learning”, “payload”: { “sop_name”: “adaptive-feedback-playbook”, “lessons_created”: 2 }, “recorded_at”: “2026-06-18T00:00:20.523429Z” }, { “type”: “hermes_content_pipeline”, “payload”: { “slug”: “forfait-mobile-suisse”, “topic”: “forfait mobile suisse”, “queue_status”: “scheduled” }, “recorded_at”: “2026-06-18T00:00:31.952416Z” }, { “type”: “hermes_content_pipeline”, “payload”: { “slug”: “comparatif-forfait-mobile-suisse”, “topic”: “comparatif forfait mobile suisse”, “queue_status”: “scheduled” }, “recorded_at”: “2026-06-18T00:00:42.286258Z” }, { “type”: “hermes_content_pipeline”, “payload”: { “slug”: “meilleur-forfait-mobile-suisse”, “topic”: “meilleur forfait mobile suisse”, “queue_status”: “scheduled” }, “recorded_at”: “2026-06-18T00:00:42.510532Z” }, { “type”: “hermes_content_pipeline”, “payload”: { “slug”: “roaming-suisse-forfait”, “topic”: “roaming suisse forfait”, “queue_status”: “scheduled” }, “recorded_at”: “2026-06-18T00:00:42.780154Z” }, { “type”: “gsc_sync”, “payload”: { “pages_7d”: 6, “pages_28d”: 10, “queries_7d”: 1, “queries_28d”: 9, “page_query_28d”: 9 }, “recorded_at”: “2026-06-18T06:15:06.043658Z” }, { “type”: “gsc_sync”, “payload”: { “pages_7d”: 6, “pages_28d”: 10, “queries_7d”: 1, “queries_28d”: 9, “page_query_28d”: 9 }, “recorded_at”: “2026-06-18T12:15:06.078755Z” }, { “type”: “gsc_sync”, “payload”: { “pages_7d”: 6, “pages_28d”: 10, “queries_7d”: 1, “queries_28d”: 9, “page_query_28d”: 9 }, “recorded_at”: “2026-06-18T18:15:06.022318Z” } ] }, “recorded_at”: “2026-06-19 00:00:19.913694+00:00”, “payload”: { “events”: [ { “type”: “gsc_sync”, “payload”: { “pages_7d”: 7, “pages_28d”: 10, “queries_7d”: 2, “queries_28d”: 11, “page_query_28d”: 11 }, “recorded_at”: “2026-06-17T12:15:05.983018Z” }, { “type”: “gsc_sync”, “payload”: { “pages_7d”: 7, “pages_28d”: 10, “queries_7d”: 2, “queries_28d”: 11, “page_query_28d”: 11 }, “recorded_at”: “2026-06-17T18:15:05.891984Z” }, { “type”: “hermes_daily_feedback_learning”, “payload”: { “sop_name”: “adaptive-feedback-playbook”, “lessons_created”: 2 }, “recorded_at”: “2026-06-18T00:00:20.523429Z” }, { “type”: “hermes_content_pipeline”, “payload”: { “slug”: “forfait-mobile-suisse”, “topic”: “forfait mobile suisse”, “queue_status”: “scheduled” }, “recorded_at”: “2026-06-18T00:00:31.952416Z” }, { “type”: “hermes_content_pipeline”, “payload”: { “slug”: “comparatif-forfait-mobile-suisse”, “topic”: “comparatif forfait mobile suisse”, “queue_status”: “scheduled” }, “recorded_at”: “2026-06-18T00:00:42.286258Z” }, { “type”: “hermes_content_pipeline”, “payload”: { “slug”: “meilleur-forfait-mobile-suisse”, “topic”: “meilleur forfait mobile suisse”, “queue_status”: “scheduled” }, “recorded_at”: “2026-06-18T00:00:42.510532Z” }, { “type”: “hermes_content_pipeline”, “payload”: { “slug”: “roaming-suisse-forfait”, “topic”: “roaming suisse forfait”, “queue_status”: “scheduled” }, “recorded_at”: “2026-06-18T00:00:42.780154Z” }, { “type”: “gsc_sync”, “payload”: { “pages_7d”: 6, “pages_28d”: 10, “queries_7d”: 1, “queries_28d”: 9, “page_query_28d”: 9 }, “recorded_at”: “2026-06-18T06:15:06.043658Z” }, { “type”: “gsc_sync”, “payload”: { “pages_7d”: 6, “pages_28d”: 10, “queries_7d”: 1, “queries_28d”: 9, “page_query_28d”: 9 }, “recorded_at”: “2026-06-18T12:15:06.078755Z” }, { “type”: “gsc_sync”, “payload”: { “pages_7d”: 6, “pages_28d”: 10, “queries_7d”: 1, “queries_28d”: 9, “page_query_28d”: 9 }, “recorded_at”: “2026-06-18T18:15:06.022318Z” } ] } } ], “live_state”: { “queue”: { “by_status”: { “failed”: 6, “published”: 11 }, “recent_items”: [ { “id”: 230, “slug”: “roaming-suisse”, “status”: “failed”, “scheduled_at”: “2026-05-13T07:00:00+00:00”, “published_at”: null, “error”: “Vercel: ERROR — Command “npm run build” exited with 1\nLogs : https://vercel.com/anges-projects-a4da2420/comparateur-mobile/6gck8h49Ck4eZgEk5V5jpb84HTJ9”, “attempts”: 0 }, { “id”: 103, “slug”: “forfait-mobile-famille-suisse”, “status”: “failed”, “scheduled_at”: “2026-05-08T07:00:00+00:00”, “published_at”: null, “error”: “Vercel: ERROR — Command “npm run build” exited with 1\nLogs : https://vercel.com/anges-projects-a4da2420/comparateur-mobile/Dd6FLxAvJ7UjydbnkhWKSuJ3XJtC”, “attempts”: 0 }, { “id”: 102, “slug”: “portabilite-numero-mobile-suisse”, “status”: “failed”, “scheduled_at”: “2026-05-07T07:00:00+00:00”, “published_at”: null, “error”: “Vercel: ERROR — Command “npm run build” exited with 1\nLogs : https://vercel.com/anges-projects-a4da2420/comparateur-mobile/6zomyRRv68WhLxRpiJFMtjmgsxPP”, “attempts”: 0 }, { “id”: 101, “slug”: “swisscom-resiliation-abonnement”, “status”: “failed”, “scheduled_at”: “2026-05-06T07:00:00+00:00”, “published_at”: null, “error”: “Vercel: ERROR — Command “npm run build” exited with 1\nLogs : https://vercel.com/anges-projects-a4da2420/comparateur-mobile/GNScGHTdsrig2WoRZQsoutLjsMXq”, “attempts”: 0 }, { “id”: 100, “slug”: “quel-abonnement-swisscom-choisir”, “status”: “failed”, “scheduled_at”: “2026-05-05T07:00:00+00:00”, “published_at”: null, “error”: “Vercel: ERROR — Command “npm run build” exited with 1\nLogs : https://vercel.com/anges-projects-a4da2420/comparateur-mobile/bT9eWtPkK875DkLHcj1vV21i7xC7”, “attempts”: 0 } ] }, “gsc”: { “saved_at”: “2026-06-19T18:15:05.528962Z”, “top_pages”: [ { “page”: “https://www.forfaitdeal.ch/blog/forfait-mobile-suisse-roaming-europe”, “clicks”: 0, “impressions”: 41, “ctr”: 0.0, “position”: 24.365853658536587, “top_query”: “roaming suisse” }, { “page”: “https://www.forfaitdeal.ch/blog/portabilite-numero-mobile-suisse”, “clicks”: 0, “impressions”: 40, “ctr”: 0.0, “position”: 9.1, “top_query”: “conserver numero mobile” }, { “page”: “https://www.forfaitdeal.ch/blog/forfait-data-suisse”, “clicks”: 0, “impressions”: 32, “ctr”: 0.0, “position”: 6.59375, “top_query”: "" } ], “top_queries”: [ { “query”: “roaming suisse”, “clicks”: 0, “impressions”: 17, “ctr”: 0.0, “position”: 15.882352941176471 }, { “query”: “forfait mobile france suisse”, “clicks”: 0, “impressions”: 9, “ctr”: 0.0, “position”: 61.666666666666664 }, { “query”: “comparatif abonnement mobile suisse”, “clicks”: 0, “impressions”: 3, “ctr”: 0.0, “position”: 18.666666666666668 }, { “query”: “comparateur forfait mobile suisse”, “clicks”: 0, “impressions”: 2, “ctr”: 0.0, “position”: 29.0 }, { “query”: “suisse roaming”, “clicks”: 0, “impressions”: 2, “ctr”: 0.0, “position”: 13.0 } ] }, “workflow”: { “updated_at”: “2026-06-20T00:01:03.333718Z”, “recent_events”: [ { “type”: “hermes_daily_feedback_learning”, “payload”: { “lessons_created”: 2, “sop_name”: “adaptive-feedback-playbook” }, “recorded_at”: “2026-06-20T00:00:20.955885Z” }, { “type”: “hermes_content_pipeline”, “payload”: { “topic”: “forfait mobile suisse”, “slug”: “forfait-mobile-suisse”, “queue_status”: “scheduled” }, “recorded_at”: “2026-06-20T00:00:32.527217Z” }, { “type”: “hermes_content_pipeline”, “payload”: { “topic”: “comparatif forfait mobile suisse”, “slug”: “comparatif-forfait-mobile-suisse”, “queue_status”: “scheduled” }, “recorded_at”: “2026-06-20T00:00:42.814182Z” }, { “type”: “hermes_content_pipeline”, “payload”: { “topic”: “meilleur forfait mobile suisse”, “slug”: “meilleur-forfait-mobile-suisse”, “queue_status”: “scheduled” }, “recorded_at”: “2026-06-20T00:00:53.063243Z” }, { “type”: “hermes_content_pipeline”, “payload”: { “topic”: “roaming suisse forfait”, “slug”: “roaming-suisse-forfait”, “queue_status”: “scheduled” }, “recorded_at”: “2026-06-20T00:01:03.333556Z” } ] } }, “site_context”: { “site_key”: “forfaitdeal”, “project_name”: “ForfaitDeal”, “project_type”: “repo_files”, “site_url”: “https://www.forfaitdeal.ch”, “base_url”: “https://www.forfaitdeal.ch/blog”, “gsc_property”: “sc-domain:forfaitdeal.ch”, “gsc_blog_prefix”: “https://www.forfaitdeal.ch/blog”, “agent_mode”: “full_autonomy”, “operator_policy”: “agent_driven”, “primary_market”: “ch”, “target_countries”: [ “ch”, “fr” ], “seo_scope”: “national”, “competitors”: [ { “label”: “Comparis Mobile”, “url”: “https://fr.comparis.ch/telecom/mobile”, “notes”: "" }, { “label”: “Moneyland Mobile”, “url”: “https://www.moneyland.ch/fr/abonnement-mobile-comparatif”, “notes”: "" } ], “editorial_policy”: { “queue_target_max”: 10, “queue_resume_threshold”: 2, “publish_timezone”: “Europe/Paris”, “publish_hour_local”: 9, “publish_weekdays_only”: true, “max_daily_publishes”: 1, “keyword_min_volume”: 50, “keyword_max_difficulty”: 45 }, “image_policy”: { “style_guardrail”: “editorial_photo”, “subject_focus”: “product_objects”, “allow_humans”: “limited”, “fallback_enabled”: true, “max_prompt_variants”: 5, “min_quality_score”: 70 }, “features”: { “gsc_enabled”: true, “writer_gsc_enabled”: true, “gsc_opportunities_enabled”: true, “seo_panel_enabled”: true, “crawler_enabled”: true, “linkmap_enabled”: true } } }
  • feedback
    • { “what_learned”: [], “tests_next_week”: [ “rerun refresh/publish changes only with explicit baseline and delayed remeasurement”, “test one low-risk refresh on a visible low-CTR page and measure the delta” ] }
  • linked-pages