{
"site_key": "club48sa",
"task": "obsidian export",
"lessons": [
{
"id": 171,
"site_key": "club48sa",
"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.club48sa.ch/blog/club-deal-immobilier",
"clicks": 0,
"position": 8.424242424242424,
"top_query": "rendement club deal immobilier",
"impressions": 33
}
]
},
"created_at": "2026-06-01 00:01:06.329687+00:00",
"updated_at": "2026-06-01 00:01:06.655601+00:00",
"details": {
"pages": [
{
"ctr": 0.0,
"page": "https://www.club48sa.ch/blog/club-deal-immobilier",
"clicks": 0,
"position": 8.424242424242424,
"top_query": "rendement club deal immobilier",
"impressions": 33
}
]
}
}
],
"sops": [
{
"id": 146,
"site_key": "club48sa",
"scope": "site",
"name": "adaptive-feedback-playbook",
"version": 7,
"status": "validated",
"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-05-31 00:01:11.281428+00:00",
"updated_at": "2026-06-01 00:01:06.681375+00:00",
"confidence_score": 0,
"confidence_label": "low"
}
],
"recent_memory": [
{
"id": 277,
"site_key": "club48sa",
"category": "routine",
"action": "daily_feedback_learning",
"target": "club48sa",
"outcome": "1 lessons derived",
"quality": "good",
"details_json": {
"sop": {
"sop": {
"id": 146,
"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": 7,
"site_key": "club48sa",
"created_at": "2026-05-31 00:01:11.281428+00:00",
"updated_at": "2026-06-01 00:01:06.388777+00:00",
"confidence_label": "low",
"confidence_score": 0
},
"evidence": {
"lesson_count": 19,
"outcome_count": 0,
"observation_count": 10
},
"site_key": "club48sa"
},
"feedback": {
"site_key": "club48sa",
"gsc_pages": 7,
"queue_rows": 0,
"gsc_queries": 15,
"workflow_events": 38
},
"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 0x71b7c15d3530>: 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": "club48sa",
"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 0x71b7bf9d0a10>: Failed to establish a new connection: [Errno 111] Connection refused'))",
"alerts_ok": false,
"overview_ok": false,
"health_score": null
},
"project_name": "Club 48 SA"
}
},
"recorded_at": "2026-06-01 00:01:06.608457+00:00",
"details": {
"sop": {
"sop": {
"id": 146,
"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": 7,
"site_key": "club48sa",
"created_at": "2026-05-31 00:01:11.281428+00:00",
"updated_at": "2026-06-01 00:01:06.388777+00:00",
"confidence_label": "low",
"confidence_score": 0
},
"evidence": {
"lesson_count": 19,
"outcome_count": 0,
"observation_count": 10
},
"site_key": "club48sa"
},
"feedback": {
"site_key": "club48sa",
"gsc_pages": 7,
"queue_rows": 0,
"gsc_queries": 15,
"workflow_events": 38
},
"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 0x71b7c15d3530>: 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": "club48sa",
"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 0x71b7bf9d0a10>: Failed to establish a new connection: [Errno 111] Connection refused'))",
"alerts_ok": false,
"overview_ok": false,
"health_score": null
},
"project_name": "Club 48 SA"
}
}
},
{
"id": 270,
"site_key": "club48sa",
"category": "routine",
"action": "daily_feedback_learning",
"target": "club48sa",
"outcome": "1 lessons derived",
"quality": "good",
"details_json": {
"sop": {
"sop": {
"id": 146,
"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": 7,
"site_key": "club48sa",
"created_at": "2026-05-31 00:01:11.281428+00:00",
"updated_at": "2026-05-31 00:01:11.281428+00:00",
"confidence_label": "low",
"confidence_score": 0
},
"evidence": {
"lesson_count": 18,
"outcome_count": 0,
"observation_count": 10
},
"site_key": "club48sa"
},
"feedback": {
"site_key": "club48sa",
"gsc_pages": 7,
"queue_rows": 0,
"gsc_queries": 15,
"workflow_events": 37
},
"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 0x7a6ba66bb380>: 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": "club48sa",
"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 0x7a6ba8bdd010>: Failed to establish a new connection: [Errno 111] Connection refused'))",
"alerts_ok": false,
"overview_ok": false,
"health_score": null
},
"project_name": "Club 48 SA"
}
},
"recorded_at": "2026-05-31 00:01:11.497838+00:00",
"details": {
"sop": {
"sop": {
"id": 146,
"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": 7,
"site_key": "club48sa",
"created_at": "2026-05-31 00:01:11.281428+00:00",
"updated_at": "2026-05-31 00:01:11.281428+00:00",
"confidence_label": "low",
"confidence_score": 0
},
"evidence": {
"lesson_count": 18,
"outcome_count": 0,
"observation_count": 10
},
"site_key": "club48sa"
},
"feedback": {
"site_key": "club48sa",
"gsc_pages": 7,
"queue_rows": 0,
"gsc_queries": 15,
"workflow_events": 37
},
"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 0x7a6ba66bb380>: 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": "club48sa",
"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 0x7a6ba8bdd010>: Failed to establish a new connection: [Errno 111] Connection refused'))",
"alerts_ok": false,
"overview_ok": false,
"health_score": null
},
"project_name": "Club 48 SA"
}
}
},
{
"id": 263,
"site_key": "club48sa",
"category": "routine",
"action": "daily_feedback_learning",
"target": "club48sa",
"outcome": "1 lessons derived",
"quality": "good",
"details_json": {
"sop": {
"sop": {
"id": 137,
"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": 6,
"site_key": "club48sa",
"created_at": "2026-05-29 00:00:57.725559+00:00",
"updated_at": "2026-05-30 00:01:05.924479+00:00",
"confidence_label": "low",
"confidence_score": 0
},
"evidence": {
"lesson_count": 17,
"outcome_count": 0,
"observation_count": 10
},
"site_key": "club48sa"
},
"feedback": {
"site_key": "club48sa",
"gsc_pages": 7,
"queue_rows": 0,
"gsc_queries": 15,
"workflow_events": 35
},
"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 0x75c6348209e0>: 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": "club48sa",
"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 0x75c636fc3b90>: Failed to establish a new connection: [Errno 111] Connection refused'))",
"alerts_ok": false,
"overview_ok": false,
"health_score": null
},
"project_name": "Club 48 SA"
}
},
"recorded_at": "2026-05-30 00:01:06.117417+00:00",
"details": {
"sop": {
"sop": {
"id": 137,
"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": 6,
"site_key": "club48sa",
"created_at": "2026-05-29 00:00:57.725559+00:00",
"updated_at": "2026-05-30 00:01:05.924479+00:00",
"confidence_label": "low",
"confidence_score": 0
},
"evidence": {
"lesson_count": 17,
"outcome_count": 0,
"observation_count": 10
},
"site_key": "club48sa"
},
"feedback": {
"site_key": "club48sa",
"gsc_pages": 7,
"queue_rows": 0,
"gsc_queries": 15,
"workflow_events": 35
},
"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 0x75c6348209e0>: 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": "club48sa",
"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 0x75c636fc3b90>: Failed to establish a new connection: [Errno 111] Connection refused'))",
"alerts_ok": false,
"overview_ok": false,
"health_score": null
},
"project_name": "Club 48 SA"
}
}
},
{
"id": 256,
"site_key": "club48sa",
"category": "routine",
"action": "daily_feedback_learning",
"target": "club48sa",
"outcome": "1 lessons derived",
"quality": "good",
"details_json": {
"sop": {
"sop": {
"id": 137,
"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": 6,
"site_key": "club48sa",
"created_at": "2026-05-29 00:00:57.725559+00:00",
"updated_at": "2026-05-29 00:00:57.725559+00:00",
"confidence_label": "low",
"confidence_score": 0
},
"evidence": {
"lesson_count": 16,
"outcome_count": 0,
"observation_count": 10
},
"site_key": "club48sa"
},
"feedback": {
"site_key": "club48sa",
"gsc_pages": 7,
"queue_rows": 0,
"gsc_queries": 15,
"workflow_events": 34
},
"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 0x74e8fabd4a10>: 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": "club48sa",
"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 0x74e8f8ed5d30>: Failed to establish a new connection: [Errno 111] Connection refused'))",
"alerts_ok": false,
"overview_ok": false,
"health_score": null
},
"project_name": "Club 48 SA"
}
},
"recorded_at": "2026-05-29 00:00:57.974769+00:00",
"details": {
"sop": {
"sop": {
"id": 137,
"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": 6,
"site_key": "club48sa",
"created_at": "2026-05-29 00:00:57.725559+00:00",
"updated_at": "2026-05-29 00:00:57.725559+00:00",
"confidence_label": "low",
"confidence_score": 0
},
"evidence": {
"lesson_count": 16,
"outcome_count": 0,
"observation_count": 10
},
"site_key": "club48sa"
},
"feedback": {
"site_key": "club48sa",
"gsc_pages": 7,
"queue_rows": 0,
"gsc_queries": 15,
"workflow_events": 34
},
"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 0x74e8fabd4a10>: 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": "club48sa",
"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 0x74e8f8ed5d30>: Failed to establish a new connection: [Errno 111] Connection refused'))",
"alerts_ok": false,
"overview_ok": false,
"health_score": null
},
"project_name": "Club 48 SA"
}
}
},
{
"id": 249,
"site_key": "club48sa",
"category": "routine",
"action": "daily_feedback_learning",
"target": "club48sa",
"outcome": "1 lessons derived",
"quality": "good",
"details_json": {
"sop": {
"sop": {
"id": 128,
"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": 5,
"site_key": "club48sa",
"created_at": "2026-05-27 00:01:06.259702+00:00",
"updated_at": "2026-05-28 00:01:06.214149+00:00",
"confidence_label": "low",
"confidence_score": 0
},
"evidence": {
"lesson_count": 15,
"outcome_count": 0,
"observation_count": 10
},
"site_key": "club48sa"
},
"feedback": {
"site_key": "club48sa",
"gsc_pages": 7,
"queue_rows": 0,
"gsc_queries": 15,
"workflow_events": 33
},
"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 0x7570a46ff830>: 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": "club48sa",
"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 0x7570a46fe8a0>: Failed to establish a new connection: [Errno 111] Connection refused'))",
"alerts_ok": false,
"overview_ok": false,
"health_score": null
},
"project_name": "Club 48 SA"
}
},
"recorded_at": "2026-05-28 00:01:06.443279+00:00",
"details": {
"sop": {
"sop": {
"id": 128,
"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": 5,
"site_key": "club48sa",
"created_at": "2026-05-27 00:01:06.259702+00:00",
"updated_at": "2026-05-28 00:01:06.214149+00:00",
"confidence_label": "low",
"confidence_score": 0
},
"evidence": {
"lesson_count": 15,
"outcome_count": 0,
"observation_count": 10
},
"site_key": "club48sa"
},
"feedback": {
"site_key": "club48sa",
"gsc_pages": 7,
"queue_rows": 0,
"gsc_queries": 15,
"workflow_events": 33
},
"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 0x7570a46ff830>: 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": "club48sa",
"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 0x7570a46fe8a0>: Failed to establish a new connection: [Errno 111] Connection refused'))",
"alerts_ok": false,
"overview_ok": false,
"health_score": null
},
"project_name": "Club 48 SA"
}
}
}
],
"recent_outcomes": [],
"recent_observations": [
{
"id": 1139,
"site_key": "club48sa",
"source_type": "technical_remediation",
"subject_key": "club48sa",
"payload_json": {
"ok": true,
"errors": [],
"actions": [
{
"type": "optimize_lcp",
"value": 4753.1,
"metric": "lcp_ms",
"target": "https://www.club48sa.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-01 00:06:34.247218+00:00",
"payload": {
"ok": true,
"errors": [],
"actions": [
{
"type": "optimize_lcp",
"value": 4753.1,
"metric": "lcp_ms",
"target": "https://www.club48sa.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": 1138,
"site_key": "club48sa",
"source_type": "technical_audit",
"subject_key": "club48sa",
"payload_json": {
"gsc": {
"ok": true,
"checked": true,
"message": "Connexion GSC OK",
"payload": {
"sample_rows": 1,
"properties_count": 5,
"resolved_property": "https://www.club48sa.ch"
},
"sitemap_url": "https://www.club48sa.ch/sitemap.xml",
"sitemap_submission_ready": true
},
"pages": [
{
"ok": true,
"url": "https://www.club48sa.ch",
"error": "",
"noindex": false,
"canonical": "https://www.club48sa.ch",
"final_url": "https://www.club48sa.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
}
],
"robots": {
"ok": true,
"url": "https://www.club48sa.ch/robots.txt",
"error": "",
"sitemaps": [
"https://www.club48sa.ch/sitemap.xml"
],
"blocks_all": false,
"rules_text": "User-Agent: *\nAllow: /\n\nSitemap: https://www.club48sa.ch/sitemap.xml\n",
"status_code": 200
},
"status": "ok",
"checked": true,
"sitemap": {
"ok": true,
"checked": [
{
"ok": true,
"url": "https://www.club48sa.ch/sitemap.xml",
"error": "",
"root_tag": "urlset",
"url_count": 18,
"valid_xml": true,
"status_code": 200,
"child_checked": [],
"child_sitemaps": [],
"listed_sample_urls": [
"https://www.club48sa.ch/",
"https://www.club48sa.ch/blog",
"https://www.club48sa.ch/contact",
"https://www.club48sa.ch/mentions-legales",
"https://www.club48sa.ch/blog/off-market-suisse-geneve",
"https://www.club48sa.ch/blog/recevoir-opportunites-immobilieres-off-market",
"https://www.club48sa.ch/blog/dossier-immobilier-off-market-qualifie",
"https://www.club48sa.ch/blog/acces-investisseur-off-market",
"https://www.club48sa.ch/blog/opportunite-investissement-prive",
"https://www.club48sa.ch/blog/club-investisseurs",
"https://www.club48sa.ch/blog/investissement-off-market",
"https://www.club48sa.ch/blog/club-deal-immobilier-prive",
"https://www.club48sa.ch/blog/club-investissement-prive",
"https://www.club48sa.ch/blog/reconnaissance-de-dette-suisse-investissement",
"https://www.club48sa.ch/blog/investir-immobilier-europe-suisse-france",
"https://www.club48sa.ch/blog/rendement-immobilier-8-15-pourcent",
"https://www.club48sa.ch/blog/investissement-immobilier-off-market",
"https://www.club48sa.ch/blog/club-deal-immobilier"
]
}
],
"selected": {
"ok": true,
"url": "https://www.club48sa.ch/sitemap.xml",
"error": "",
"root_tag": "urlset",
"url_count": 18,
"valid_xml": true,
"status_code": 200,
"child_checked": [],
"child_sitemaps": [],
"listed_sample_urls": [
"https://www.club48sa.ch/",
"https://www.club48sa.ch/blog",
"https://www.club48sa.ch/contact",
"https://www.club48sa.ch/mentions-legales",
"https://www.club48sa.ch/blog/off-market-suisse-geneve",
"https://www.club48sa.ch/blog/recevoir-opportunites-immobilieres-off-market",
"https://www.club48sa.ch/blog/dossier-immobilier-off-market-qualifie",
"https://www.club48sa.ch/blog/acces-investisseur-off-market",
"https://www.club48sa.ch/blog/opportunite-investissement-prive",
"https://www.club48sa.ch/blog/club-investisseurs",
"https://www.club48sa.ch/blog/investissement-off-market",
"https://www.club48sa.ch/blog/club-deal-immobilier-prive",
"https://www.club48sa.ch/blog/club-investissement-prive",
"https://www.club48sa.ch/blog/reconnaissance-de-dette-suisse-investissement",
"https://www.club48sa.ch/blog/investir-immobilier-europe-suisse-france",
"https://www.club48sa.ch/blog/rendement-immobilier-8-15-pourcent",
"https://www.club48sa.ch/blog/investissement-immobilier-off-market",
"https://www.club48sa.ch/blog/club-deal-immobilier"
]
}
},
"site_key": "club48sa",
"warnings": [
"LCP mobile élevé (4753 ms)"
],
"pagespeed": {
"ok": true,
"cls": 0.0,
"inp_ms": 106.0,
"lcp_ms": 4753.0872009025625,
"mobile": {
"ok": true,
"cls": 0.0,
"inp_ms": 106.0,
"lcp_ms": 4753.0872009025625,
"source": "pagespeed_insights",
"strategy": "mobile",
"performance_score": 76.0
},
"source": "pagespeed_insights",
"desktop": {
"ok": true,
"cls": 0.0,
"inp_ms": 77.0,
"lcp_ms": 418.39723844464066,
"source": "pagespeed_insights",
"strategy": "desktop",
"performance_score": 100.0
},
"strategy": "mobile",
"performance_score": 76.0
},
"gsc_live_urls": {
"urls": [
{
"ok": true,
"ctr": 0.0,
"url": "https://www.club48sa.ch/blog/club-deal-immobilier",
"error": "",
"clicks": 0,
"position": 8.424242424242424,
"canonical": "https://www.club48sa.ch/blog/club-deal-immobilier",
"final_url": "https://www.club48sa.ch/blog/club-deal-immobilier",
"indexable": true,
"top_query": "rendement club deal immobilier",
"redirected": false,
"impressions": 33,
"status_code": 200
},
{
"ok": true,
"ctr": 0.25,
"url": "https://www.club48sa.ch/",
"error": "",
"clicks": 7,
"position": 4.214285714285714,
"canonical": "https://www.club48sa.ch",
"final_url": "https://www.club48sa.ch/",
"indexable": true,
"top_query": "club 48 sa",
"redirected": false,
"impressions": 28,
"status_code": 200
},
{
"ok": true,
"ctr": 0.047619047619047616,
"url": "https://www.club48sa.ch/blog/reconnaissance-de-dette-suisse-investissement",
"error": "",
"clicks": 1,
"position": 10.19047619047619,
"canonical": "https://www.club48sa.ch/blog/reconnaissance-de-dette-suisse-investissement",
"final_url": "https://www.club48sa.ch/blog/reconnaissance-de-dette-suisse-investissement",
"indexable": true,
"top_query": "reconnaissance de dette suisse",
"redirected": false,
"impressions": 21,
"status_code": 200
},
{
"ok": true,
"ctr": 0.0,
"url": "https://www.club48sa.ch/blog/investir-immobilier-europe-suisse-france",
"error": "",
"clicks": 0,
"position": 8.933333333333334,
"canonical": "https://www.club48sa.ch/blog/investir-immobilier-europe-suisse-france",
"final_url": "https://www.club48sa.ch/blog/investir-immobilier-europe-suisse-france",
"indexable": true,
"top_query": "europe immobilier",
"redirected": false,
"impressions": 15,
"status_code": 200
},
{
"ok": true,
"ctr": 0.07692307692307693,
"url": "https://www.club48sa.ch/blog/rendement-immobilier-8-15-pourcent",
"error": "",
"clicks": 1,
"position": 6.0,
"canonical": "https://www.club48sa.ch/blog/rendement-immobilier-8-15-pourcent",
"final_url": "https://www.club48sa.ch/blog/rendement-immobilier-8-15-pourcent",
"indexable": true,
"top_query": "rendement 15",
"redirected": false,
"impressions": 13,
"status_code": 200
},
{
"ok": true,
"ctr": 0.0,
"url": "https://www.club48sa.ch/blog/investissement-immobilier-off-market",
"error": "",
"clicks": 0,
"position": 15.166666666666666,
"canonical": "https://www.club48sa.ch/blog/investissement-immobilier-off-market",
"final_url": "https://www.club48sa.ch/blog/investissement-immobilier-off-market",
"indexable": true,
"top_query": "achat appartement off-market genève",
"redirected": false,
"impressions": 6,
"status_code": 200
},
{
"ok": true,
"ctr": 0.0,
"url": "https://www.club48sa.ch/blog",
"error": "",
"clicks": 0,
"position": 7.0,
"canonical": "https://www.club48sa.ch/blog",
"final_url": "https://www.club48sa.ch/blog",
"indexable": true,
"top_query": "club 48 sa",
"redirected": false,
"impressions": 2,
"status_code": 200
}
],
"source": "gsc_pages_28d",
"checked": true,
"broken_urls": [],
"broken_count": 0,
"checked_count": 7,
"redirected_urls": [],
"redirected_count": 0,
"snapshot_saved_at": "2026-05-22T10:09:06.487422Z"
},
"blocking_issues": [],
"safe_to_optimize": true,
"sitemap_coverage": {
"checked": true,
"missing_urls": [],
"expected_urls": [
"https://www.club48sa.ch"
],
"listed_url_sample_size": 18
},
"deployment_health": {
"checked": false
},
"technical_health_score": 90
},
"recorded_at": "2026-06-01 00:06:33.576436+00:00",
"payload": {
"gsc": {
"ok": true,
"checked": true,
"message": "Connexion GSC OK",
"payload": {
"sample_rows": 1,
"properties_count": 5,
"resolved_property": "https://www.club48sa.ch"
},
"sitemap_url": "https://www.club48sa.ch/sitemap.xml",
"sitemap_submission_ready": true
},
"pages": [
{
"ok": true,
"url": "https://www.club48sa.ch",
"error": "",
"noindex": false,
"canonical": "https://www.club48sa.ch",
"final_url": "https://www.club48sa.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
}
],
"robots": {
"ok": true,
"url": "https://www.club48sa.ch/robots.txt",
"error": "",
"sitemaps": [
"https://www.club48sa.ch/sitemap.xml"
],
"blocks_all": false,
"rules_text": "User-Agent: *\nAllow: /\n\nSitemap: https://www.club48sa.ch/sitemap.xml\n",
"status_code": 200
},
"status": "ok",
"checked": true,
"sitemap": {
"ok": true,
"checked": [
{
"ok": true,
"url": "https://www.club48sa.ch/sitemap.xml",
"error": "",
"root_tag": "urlset",
"url_count": 18,
"valid_xml": true,
"status_code": 200,
"child_checked": [],
"child_sitemaps": [],
"listed_sample_urls": [
"https://www.club48sa.ch/",
"https://www.club48sa.ch/blog",
"https://www.club48sa.ch/contact",
"https://www.club48sa.ch/mentions-legales",
"https://www.club48sa.ch/blog/off-market-suisse-geneve",
"https://www.club48sa.ch/blog/recevoir-opportunites-immobilieres-off-market",
"https://www.club48sa.ch/blog/dossier-immobilier-off-market-qualifie",
"https://www.club48sa.ch/blog/acces-investisseur-off-market",
"https://www.club48sa.ch/blog/opportunite-investissement-prive",
"https://www.club48sa.ch/blog/club-investisseurs",
"https://www.club48sa.ch/blog/investissement-off-market",
"https://www.club48sa.ch/blog/club-deal-immobilier-prive",
"https://www.club48sa.ch/blog/club-investissement-prive",
"https://www.club48sa.ch/blog/reconnaissance-de-dette-suisse-investissement",
"https://www.club48sa.ch/blog/investir-immobilier-europe-suisse-france",
"https://www.club48sa.ch/blog/rendement-immobilier-8-15-pourcent",
"https://www.club48sa.ch/blog/investissement-immobilier-off-market",
"https://www.club48sa.ch/blog/club-deal-immobilier"
]
}
],
"selected": {
"ok": true,
"url": "https://www.club48sa.ch/sitemap.xml",
"error": "",
"root_tag": "urlset",
"url_count": 18,
"valid_xml": true,
"status_code": 200,
"child_checked": [],
"child_sitemaps": [],
"listed_sample_urls": [
"https://www.club48sa.ch/",
"https://www.club48sa.ch/blog",
"https://www.club48sa.ch/contact",
"https://www.club48sa.ch/mentions-legales",
"https://www.club48sa.ch/blog/off-market-suisse-geneve",
"https://www.club48sa.ch/blog/recevoir-opportunites-immobilieres-off-market",
"https://www.club48sa.ch/blog/dossier-immobilier-off-market-qualifie",
"https://www.club48sa.ch/blog/acces-investisseur-off-market",
"https://www.club48sa.ch/blog/opportunite-investissement-prive",
"https://www.club48sa.ch/blog/club-investisseurs",
"https://www.club48sa.ch/blog/investissement-off-market",
"https://www.club48sa.ch/blog/club-deal-immobilier-prive",
"https://www.club48sa.ch/blog/club-investissement-prive",
"https://www.club48sa.ch/blog/reconnaissance-de-dette-suisse-investissement",
"https://www.club48sa.ch/blog/investir-immobilier-europe-suisse-france",
"https://www.club48sa.ch/blog/rendement-immobilier-8-15-pourcent",
"https://www.club48sa.ch/blog/investissement-immobilier-off-market",
"https://www.club48sa.ch/blog/club-deal-immobilier"
]
}
},
"site_key": "club48sa",
"warnings": [
"LCP mobile élevé (4753 ms)"
],
"pagespeed": {
"ok": true,
"cls": 0.0,
"inp_ms": 106.0,
"lcp_ms": 4753.0872009025625,
"mobile": {
"ok": true,
"cls": 0.0,
"inp_ms": 106.0,
"lcp_ms": 4753.0872009025625,
"source": "pagespeed_insights",
"strategy": "mobile",
"performance_score": 76.0
},
"source": "pagespeed_insights",
"desktop": {
"ok": true,
"cls": 0.0,
"inp_ms": 77.0,
"lcp_ms": 418.39723844464066,
"source": "pagespeed_insights",
"strategy": "desktop",
"performance_score": 100.0
},
"strategy": "mobile",
"performance_score": 76.0
},
"gsc_live_urls": {
"urls": [
{
"ok": true,
"ctr": 0.0,
"url": "https://www.club48sa.ch/blog/club-deal-immobilier",
"error": "",
"clicks": 0,
"position": 8.424242424242424,
"canonical": "https://www.club48sa.ch/blog/club-deal-immobilier",
"final_url": "https://www.club48sa.ch/blog/club-deal-immobilier",
"indexable": true,
"top_query": "rendement club deal immobilier",
"redirected": false,
"impressions": 33,
"status_code": 200
},
{
"ok": true,
"ctr": 0.25,
"url": "https://www.club48sa.ch/",
"error": "",
"clicks": 7,
"position": 4.214285714285714,
"canonical": "https://www.club48sa.ch",
"final_url": "https://www.club48sa.ch/",
"indexable": true,
"top_query": "club 48 sa",
"redirected": false,
"impressions": 28,
"status_code": 200
},
{
"ok": true,
"ctr": 0.047619047619047616,
"url": "https://www.club48sa.ch/blog/reconnaissance-de-dette-suisse-investissement",
"error": "",
"clicks": 1,
"position": 10.19047619047619,
"canonical": "https://www.club48sa.ch/blog/reconnaissance-de-dette-suisse-investissement",
"final_url": "https://www.club48sa.ch/blog/reconnaissance-de-dette-suisse-investissement",
"indexable": true,
"top_query": "reconnaissance de dette suisse",
"redirected": false,
"impressions": 21,
"status_code": 200
},
{
"ok": true,
"ctr": 0.0,
"url": "https://www.club48sa.ch/blog/investir-immobilier-europe-suisse-france",
"error": "",
"clicks": 0,
"position": 8.933333333333334,
"canonical": "https://www.club48sa.ch/blog/investir-immobilier-europe-suisse-france",
"final_url": "https://www.club48sa.ch/blog/investir-immobilier-europe-suisse-france",
"indexable": true,
"top_query": "europe immobilier",
"redirected": false,
"impressions": 15,
"status_code": 200
},
{
"ok": true,
"ctr": 0.07692307692307693,
"url": "https://www.club48sa.ch/blog/rendement-immobilier-8-15-pourcent",
"error": "",
"clicks": 1,
"position": 6.0,
"canonical": "https://www.club48sa.ch/blog/rendement-immobilier-8-15-pourcent",
"final_url": "https://www.club48sa.ch/blog/rendement-immobilier-8-15-pourcent",
"indexable": true,
"top_query": "rendement 15",
"redirected": false,
"impressions": 13,
"status_code": 200
},
{
"ok": true,
"ctr": 0.0,
"url": "https://www.club48sa.ch/blog/investissement-immobilier-off-market",
"error": "",
"clicks": 0,
"position": 15.166666666666666,
"canonical": "https://www.club48sa.ch/blog/investissement-immobilier-off-market",
"final_url": "https://www.club48sa.ch/blog/investissement-immobilier-off-market",
"indexable": true,
"top_query": "achat appartement off-market genève",
"redirected": false,
"impressions": 6,
"status_code": 200
},
{
"ok": true,
"ctr": 0.0,
"url": "https://www.club48sa.ch/blog",
"error": "",
"clicks": 0,
"position": 7.0,
"canonical": "https://www.club48sa.ch/blog",
"final_url": "https://www.club48sa.ch/blog",
"indexable": true,
"top_query": "club 48 sa",
"redirected": false,
"impressions": 2,
"status_code": 200
}
],
"source": "gsc_pages_28d",
"checked": true,
"broken_urls": [],
"broken_count": 0,
"checked_count": 7,
"redirected_urls": [],
"redirected_count": 0,
"snapshot_saved_at": "2026-05-22T10:09:06.487422Z"
},
"blocking_issues": [],
"safe_to_optimize": true,
"sitemap_coverage": {
"checked": true,
"missing_urls": [],
"expected_urls": [
"https://www.club48sa.ch"
],
"listed_url_sample_size": 18
},
"deployment_health": {
"checked": false
},
"technical_health_score": 90
}
},
{
"id": 1130,
"site_key": "club48sa",
"source_type": "learningseo_weekly_review",
"subject_key": "club48sa",
"payload_json": {
"tests_next_week": [
"test one low-risk refresh on a visible low-CTR page and measure the delta"
],
"confirmed_by_practice": 0,
"contradicted_by_results": 0
},
"recorded_at": "2026-06-01 00:03:04.418151+00:00",
"payload": {
"tests_next_week": [
"test one low-risk refresh on a visible low-CTR page and measure the delta"
],
"confirmed_by_practice": 0,
"contradicted_by_results": 0
}
},
{
"id": 1126,
"site_key": "club48sa",
"source_type": "workflow_state",
"subject_key": "recent_events",
"payload_json": {
"events": [
{
"type": "hermes_content_lifecycle",
"payload": {
"merge_count": 0,
"watch_count": 0,
"create_count": 0,
"deleted_count": 0,
"optimize_count": 0
},
"recorded_at": "2026-05-24T20:15:23.093949Z"
},
{
"type": "hermes_daily_feedback_learning",
"payload": {
"sop_name": "adaptive-feedback-playbook",
"lessons_created": 1
},
"recorded_at": "2026-05-25T00:01:04.708380Z"
},
{
"type": "hermes_daily_feedback_learning",
"payload": {
"sop_name": "adaptive-feedback-playbook",
"lessons_created": 1
},
"recorded_at": "2026-05-26T00:00:50.281999Z"
},
{
"type": "hermes_daily_feedback_learning",
"payload": {
"sop_name": "adaptive-feedback-playbook",
"lessons_created": 1
},
"recorded_at": "2026-05-27T00:01:06.423335Z"
},
{
"type": "hermes_content_lifecycle",
"payload": {
"merge_count": 0,
"watch_count": 0,
"create_count": 0,
"deleted_count": 0,
"optimize_count": 0
},
"recorded_at": "2026-05-27T20:30:23.001571Z"
},
{
"type": "hermes_daily_feedback_learning",
"payload": {
"sop_name": "adaptive-feedback-playbook",
"lessons_created": 1
},
"recorded_at": "2026-05-28T00:01:06.424216Z"
},
{
"type": "hermes_daily_feedback_learning",
"payload": {
"sop_name": "adaptive-feedback-playbook",
"lessons_created": 1
},
"recorded_at": "2026-05-29T00:00:57.942455Z"
},
{
"type": "hermes_daily_feedback_learning",
"payload": {
"sop_name": "adaptive-feedback-playbook",
"lessons_created": 1
},
"recorded_at": "2026-05-30T00:01:06.103224Z"
},
{
"type": "hermes_content_lifecycle",
"payload": {
"merge_count": 0,
"watch_count": 0,
"create_count": 0,
"deleted_count": 0,
"optimize_count": 0
},
"recorded_at": "2026-05-30T20:30:43.280248Z"
},
{
"type": "hermes_daily_feedback_learning",
"payload": {
"sop_name": "adaptive-feedback-playbook",
"lessons_created": 1
},
"recorded_at": "2026-05-31T00:01:11.475811Z"
}
]
},
"recorded_at": "2026-06-01 00:01:04.115577+00:00",
"payload": {
"events": [
{
"type": "hermes_content_lifecycle",
"payload": {
"merge_count": 0,
"watch_count": 0,
"create_count": 0,
"deleted_count": 0,
"optimize_count": 0
},
"recorded_at": "2026-05-24T20:15:23.093949Z"
},
{
"type": "hermes_daily_feedback_learning",
"payload": {
"sop_name": "adaptive-feedback-playbook",
"lessons_created": 1
},
"recorded_at": "2026-05-25T00:01:04.708380Z"
},
{
"type": "hermes_daily_feedback_learning",
"payload": {
"sop_name": "adaptive-feedback-playbook",
"lessons_created": 1
},
"recorded_at": "2026-05-26T00:00:50.281999Z"
},
{
"type": "hermes_daily_feedback_learning",
"payload": {
"sop_name": "adaptive-feedback-playbook",
"lessons_created": 1
},
"recorded_at": "2026-05-27T00:01:06.423335Z"
},
{
"type": "hermes_content_lifecycle",
"payload": {
"merge_count": 0,
"watch_count": 0,
"create_count": 0,
"deleted_count": 0,
"optimize_count": 0
},
"recorded_at": "2026-05-27T20:30:23.001571Z"
},
{
"type": "hermes_daily_feedback_learning",
"payload": {
"sop_name": "adaptive-feedback-playbook",
"lessons_created": 1
},
"recorded_at": "2026-05-28T00:01:06.424216Z"
},
{
"type": "hermes_daily_feedback_learning",
"payload": {
"sop_name": "adaptive-feedback-playbook",
"lessons_created": 1
},
"recorded_at": "2026-05-29T00:00:57.942455Z"
},
{
"type": "hermes_daily_feedback_learning",
"payload": {
"sop_name": "adaptive-feedback-playbook",
"lessons_created": 1
},
"recorded_at": "2026-05-30T00:01:06.103224Z"
},
{
"type": "hermes_content_lifecycle",
"payload": {
"merge_count": 0,
"watch_count": 0,
"create_count": 0,
"deleted_count": 0,
"optimize_count": 0
},
"recorded_at": "2026-05-30T20:30:43.280248Z"
},
{
"type": "hermes_daily_feedback_learning",
"payload": {
"sop_name": "adaptive-feedback-playbook",
"lessons_created": 1
},
"recorded_at": "2026-05-31T00:01:11.475811Z"
}
]
}
},
{
"id": 1125,
"site_key": "club48sa",
"source_type": "queue_state",
"subject_key": "recent_queue",
"payload_json": {
"recent_rows": []
},
"recorded_at": "2026-06-01 00:01:04.094143+00:00",
"payload": {
"recent_rows": []
}
}
],
"live_state": {
"queue": {
"by_status": {},
"recent_items": []
},
"gsc": {
"saved_at": "2026-05-22T10:09:06.487422Z",
"top_pages": [
{
"page": "https://www.club48sa.ch/blog/club-deal-immobilier",
"clicks": 0,
"impressions": 33,
"ctr": 0.0,
"position": 8.424242424242424,
"top_query": "rendement club deal immobilier"
},
{
"page": "https://www.club48sa.ch/",
"clicks": 7,
"impressions": 28,
"ctr": 0.25,
"position": 4.214285714285714,
"top_query": "club 48 sa"
},
{
"page": "https://www.club48sa.ch/blog/reconnaissance-de-dette-suisse-investissement",
"clicks": 1,
"impressions": 21,
"ctr": 0.047619047619047616,
"position": 10.19047619047619,
"top_query": "reconnaissance de dette suisse"
}
],
"top_queries": [
{
"query": "club 48 sa",
"clicks": 2,
"impressions": 11,
"ctr": 0.18181818181818182,
"position": 4.181818181818182
},
{
"query": "rendement 15",
"clicks": 0,
"impressions": 5,
"ctr": 0.0,
"position": 8.2
},
{
"query": "club 48",
"clicks": 2,
"impressions": 4,
"ctr": 0.5,
"position": 5.0
},
{
"query": "rendement club deal immobilier",
"clicks": 0,
"impressions": 4,
"ctr": 0.0,
"position": 8.25
},
{
"query": "club48",
"clicks": 0,
"impressions": 3,
"ctr": 0.0,
"position": 8.0
}
]
},
"workflow": {
"updated_at": "2026-06-01T00:01:06.589992Z",
"recent_events": [
{
"type": "hermes_daily_feedback_learning",
"payload": {
"lessons_created": 1,
"sop_name": "adaptive-feedback-playbook"
},
"recorded_at": "2026-05-29T00:00:57.942455Z"
},
{
"type": "hermes_daily_feedback_learning",
"payload": {
"lessons_created": 1,
"sop_name": "adaptive-feedback-playbook"
},
"recorded_at": "2026-05-30T00:01:06.103224Z"
},
{
"type": "hermes_content_lifecycle",
"payload": {
"optimize_count": 0,
"create_count": 0,
"merge_count": 0,
"watch_count": 0,
"deleted_count": 0
},
"recorded_at": "2026-05-30T20:30:43.280248Z"
},
{
"type": "hermes_daily_feedback_learning",
"payload": {
"lessons_created": 1,
"sop_name": "adaptive-feedback-playbook"
},
"recorded_at": "2026-05-31T00:01:11.475811Z"
},
{
"type": "hermes_daily_feedback_learning",
"payload": {
"lessons_created": 1,
"sop_name": "adaptive-feedback-playbook"
},
"recorded_at": "2026-06-01T00:01:06.589802Z"
}
]
}
},
"site_context": {
"site_key": "club48sa",
"project_name": "Club 48 SA",
"project_type": "repo_files",
"site_url": "https://www.club48sa.ch",
"base_url": "https://www.club48sa.ch",
"gsc_property": "https://www.club48sa.ch",
"gsc_blog_prefix": "https://www.club48sa.ch",
"agent_mode": "full_autonomy",
"operator_policy": "agent_driven",
"primary_market": "ch",
"target_countries": [
"ch",
"fr"
],
"seo_scope": "national",
"competitors": [],
"editorial_policy": {
"queue_target_max": 0,
"queue_resume_threshold": 0,
"publish_timezone": "Europe/Paris",
"publish_hour_local": 9,
"publish_weekdays_only": true,
"max_daily_publishes": 0,
"keyword_min_volume": 50,
"keyword_max_difficulty": 45
},
"image_policy": {
"style_guardrail": "editorial_photo",
"subject_focus": "premium_real_estate_objects",
"allow_humans": "limited",
"fallback_enabled": true,
"max_prompt_variants": 5,
"min_quality_score": 72
},
"features": {
"gsc_enabled": true,
"writer_gsc_enabled": false,
"gsc_opportunities_enabled": true,
"seo_panel_enabled": true,
"crawler_enabled": true,
"linkmap_enabled": true
}
}
}