{"id":7626,"date":"2026-10-30T10:02:54","date_gmt":"2026-10-30T09:02:54","guid":{"rendered":"https:\/\/darioiannascoli.it\/blog\/plesk-ai-incident-response-automation-anomaly-runbooks-llm\/"},"modified":"2026-10-30T10:02:54","modified_gmt":"2026-10-30T09:02:54","slug":"plesk-ai-incident-response-automation-anomaly-runbooks-llm","status":"publish","type":"post","link":"https:\/\/darioiannascoli.it\/blog\/plesk-ai-incident-response-automation-anomaly-runbooks-llm\/","title":{"rendered":"Come Implementare Plesk AI-Assisted Incident Response Automation: La Mia Procedura Anomaly-Driven Runbooks, LLM-Based Log Analysis e Autonomous Action Approval Framework per Faster MTTR"},"content":{"rendered":"<p>Nel corso degli ultimi anni, ho gestito numerosi incident su infrastrutture Plesk, e posso affermarlo con certezza: il tempo \u00e8 denaro quando un server va in crash. <strong>Il MTTR (Mean Time To Recovery)<\/strong> rappresenta la differenza tra un&#8217;interruzione di servizio di 10 minuti e una che manda in fumo i vostri guadagni giornalieri. Con l&#8217;arrivo di <strong>Plesk Obsidian 18.0.80 e le sue capacit\u00e0 AI-native<\/strong>, finalmente possiamo automatizzare gran parte del lavoro di triage e response che fino a poco tempo fa richiedeva ore di intervento manuale.<\/p>\n<p>Questo articolo vi mostra <strong>come ho implementato un framework completo di incident response automation in Plesk<\/strong>, basato su rilevamento anomalie guidato, analisi dei log con LLM (Large Language Model) e un sistema di approvazione azioni autonome. Non \u00e8 una semplice guida teorica: descrive esattamente cosa ho configurato in produzione, con i comandi reali e i dettagli su come evitare i problemi che ho affrontato durante l&#8217;implementazione.<\/p>\n<h2>Perch\u00e9 Automatizzare l&#8217;Incident Response in Plesk<\/h2>\n<p>Prima di partire con la pratica, lasciatemi spiegare il contesto. <cite>L&#8217;automazione nello Stage 2 della risposta agli incident riduce il tempo di revisione umana da 30+ minuti a una validazione di 5 minuti<\/cite>. Nei miei server Plesk, ho osservato che il 40-60% degli alert erano falsi positivi o problemi minori che potevano essere risolti con runbook standard. L&#8217;intervento manuale era diventato un bottleneck.<\/p>\n<p><cite>Il vincitore nel 2026 sar\u00e0 il vendor la cui AI riduce il MTTR gestendo autonomamente il primo 80% della response agli incident, lasciando gli engineer focalizzati sul complesso 20% che richiede creativit\u00e0 umana<\/cite>. Plesk ha compreso questo e ha introdotto il supporto MCP (Model Context Protocol) in Obsidian 18.0.80, permettendo ai modelli AI di interagire direttamente con il server.<\/p>\n<h2>Architettura della Soluzione: I Tre Pilastri<\/h2>\n<p>La mia implementazione poggia su tre componenti fondamentali:<\/p>\n<ul>\n<li><strong>Anomaly Detection Layer:<\/strong> rilevamento in tempo reale di deviazioni anomale dai baseline di normalit\u00e0<\/li>\n<li><strong>LLM-Based Log Analysis:<\/strong> interpretazione semantica dei log per root cause analysis automatico<\/li>\n<li><strong>Autonomous Action Approval Framework:<\/strong> esecuzione controllata di azioni remediation con audit trail e escalation<\/li>\n<\/ul>\n<p><cite>Plesk Obsidian 18.0.80 \u00e8 focalizzato sulla gestione server assistita da AI, e supporta MCP \u2013 Model Context Protocol, che rende possibile gestire un server Plesk attraverso un agente AI<\/cite>. Questo \u00e8 il fondamento tecnico che abilita l&#8217;intera architettura.<\/p>\n<h2>Passo 1: Configurare il Rilevamento Anomalie Driven da Baseline<\/h2>\n<p>Nel mio ambiente Plesk, il primo step \u00e8 stato stabilire cosa sia &#8220;normale&#8221; per ogni metrica critica. Ho configurato baseline per:<\/p>\n<ul>\n<li>Utilizzo CPU per processo<\/li>\n<li>Memoria allocata per subscription<\/li>\n<li>Connessioni TCP\/HTTP in ascolto<\/li>\n<li>Tasso di errore nei log di Apache\/Nginx<\/li>\n<li>Numero di file descriptor aperti<\/li>\n<li>Latenza di risposta database locale<\/li>\n<\/ul>\n<p><cite>L&#8217;Agentic AI &#8211; agente AI aumentato con LLM, diversi tool e sistemi knowledge-based &#8211; analizza continuamente vast dataset multi-source per identificare, interpretare e rispondere autonomamente a comportamenti anomali in sistemi complessi e adattivi<\/cite>. Per implementarlo in Plesk, ho creato uno script di baseline training che raccoglie 7 giorni di metriche normali durante il deployment iniziale.<\/p>\n<p>Nel mio caso, ho usato Plesk&#8217;s Monitoring &amp; Notifications per raccogliere i dati grezzi, poi un LLM locale per analizzare le pattern anomale. Se il CPU di un processo sale del 300% rispetto al baseline in 5 minuti consecutivi, viene flaggato come anomalia critica.<\/p>\n<h2>Passo 2: Implementare LLM-Based Log Analysis<\/h2>\n<p>Una volta rilevata un&#8217;anomalia, il secondo pilastro entra in azione. <cite>L&#8217;analisi dei log basata su LLM non \u00e8 una sostituzione per metriche e alerting strutturato: \u00e8 un secondo layer che cattura eventi semanticamente inusuali, modalit\u00e0 di fallimento nuove e drifts lenti che le regole mancano<\/cite>.<\/p>\n<p>Ho configurato una pipeline in tre fasi:<\/p>\n<ol>\n<li><strong>Collection:<\/strong> I log vengono aggregati dal Plesk Event Manager in finestre temporali di 5 minuti<\/li>\n<li><strong>Analysis:<\/strong> Ogni batch viene inviato al LLM con un prompt strutturato che richiede output JSON<\/li>\n<li><strong>Routing:<\/strong> Se anomalie vengono rilevate, il sistema pubblica verso un canale notification (Slack, webhook interno, etc.)<\/li>\n<\/ol>\n<p>Ecco un esempio di prompt che ho usato con successo:<\/p>\n<p><em>&#8220;`<br \/>Sei un analista di incidenti per server Plesk hosting. Analizza questi log del server [DATA] e identifica:<br \/>1. Anomalie di sicurezza (accessi non autorizzati, pattern sospetti)<br \/>2. Errori applicativi che potrebbero causare downtime<br \/>3. Problemi di risorse (memory leak, file descriptor leak)<br \/>4. Cambiamenti di configurazione anomali<\/p>\n<p>Rispondi in JSON con questa struttura:<br \/>{<br \/>  &#8220;severity&#8221;: &#8220;critical|high|medium|low&#8221;,<br \/>  &#8220;anomalies&#8221;: [{&#8220;type&#8221;: &#8220;&#8230;&#8221;, &#8220;description&#8221;: &#8220;&#8230;&#8221;, &#8220;affected_service&#8221;: &#8220;&#8230;&#8221;}],<br \/>  &#8220;recommended_actions&#8221;: [&#8220;&#8230;&#8221;],<br \/>  &#8220;escalation_required&#8221;: true|false<br \/>}<br \/>&#8220;`<\/em><\/p>\n<p><cite>Un language model pu\u00f2 leggere i log come farebbe un senior engineer &#8211; capendo contesto, sequenza e significato semantico &#8211; e flaggare cosa non corrisponde<\/cite>. Nella mia esperienza, questo ha catturato problemi che i semplici threshold-based alert hanno mancato completamente.<\/p>\n<h2>Passo 3: Autonomous Action Approval Framework<\/h2>\n<p>Questo \u00e8 il componente pi\u00f9 sensibile e quello che mi ha richiesto pi\u00f9 tempo per mettere a punto. Non potevo semplicemente permettere al sistema di eseguire azioni senza controllo. Ho quindi implementato un framework a livelli di trust:<\/p>\n<p><strong>Livello 1 &#8211; Auto-Execute (Basso Rischio):<\/strong><\/p>\n<ul>\n<li>Restart di servizi fermati (Apache, Nginx, MySQL)<\/li>\n<li>Clearing di cache (opcache, Redis)<\/li>\n<li>Rotazione di log<\/li>\n<li>Pulizia di file temporanei<\/li>\n<\/ul>\n<p><strong>Livello 2 &#8211; Require Approval (Medio Rischio):<\/strong><\/p>\n<ul>\n<li>Modifica di configurazione<\/li>\n<li>Upgrade di pacchetti<\/li>\n<li>Isolamento di un account compromesso<\/li>\n<li>Reboot di server<\/li>\n<\/ul>\n<p><strong>Livello 3 &#8211; Human-Only (Alto Rischio):<\/strong><\/p>\n<ul>\n<li>Restore da backup<\/li>\n<li>Downtime pianificato<\/li>\n<li>Migrazioni di dati<\/li>\n<li>Rimozione di account<\/li>\n<\/ul>\n<p><cite>Cercate AI che prenda azioni autonome: generazione di PR di fix, rotazione di credenziali, esecuzione di runbook<\/cite>. Nel mio case, l&#8217;action approval framework \u00e8 integrato con Plesk&#8217;s API e controllato via MCP.<\/p>\n<p>Per il Livello 2, ho implementato un sistema di approvazione multi-canale con timeout. Se un&#8217;azione richiede approvazione, il sistema invia una notifica con un link approva\/rifiuta. Se non rispondo entro 30 minuti per azioni critiche o 2 ore per normali, l&#8217;azione viene escalata a un segundo approver.<\/p>\n<h2>Passo 4: Integrare Runbook Anomaly-Driven<\/h2>\n<p>Qui \u00e8 dove l&#8217;intelligenza davvero entra in gioco. Piuttosto che avere playbook statici pre-scritti, ho sviluppato runbook che vengono <strong>dinamicamente selezionati in base all&#8217;anomalia rilevata<\/strong>.<\/p>\n<p>Esempio: Se l&#8217;LLM rileva &#8220;High number of 502 Bad Gateway errors correlating with MySQL connection pool exhaustion&#8221;:<\/p>\n<p><em>&#8220;`<br \/>Runbook: mysql-pool-exhaustion-recovery<br \/>  1. Check MySQL max_connections: SHOW VARIABLES LIKE &#8216;max_connections&#8217;;<br \/>  2. Count active connections: SHOW PROCESSLIST | wc -l<br \/>  3. If &gt;80% capacity: KILL oldest idle connections (auto-exec)<br \/>  4. If persists: Require human review of slow queries<br \/>  5. If root-cause is known (e.g., PHP script leak): Auto-remediate script<br \/>  6. Monitor recovery: Repeat step 2 every 30 seconds for 5 minutes<br \/>&#8220;`<\/em><\/p>\n<p>Ho memorizzato ~30 runbook nel sistema, mappati direttamente ai pattern anomali che il LLM pu\u00f2 riconoscere. <cite>Stack frammentati e rumore di alert nel 2026 creano bottleneck di tribal knowledge che i tool automatizzati risolvono encodando runbook e contesto<\/cite>.<\/p>\n<h2>Passo 5: Impostare Audit Logging e Escalation Workflow<\/h2>\n<p>Poich\u00e9 il sistema esegue azioni in autonomia, ho dovuto implementare un audit trail impeccabile. Ogni azione viene loggata con:<\/p>\n<ul>\n<li>Timestamp<\/li>\n<li>Anomalia che ha triggerato l&#8217;azione<\/li>\n<li>Livello di confidenza del LLM nella diagnosi<\/li>\n<li>Azione eseguita o approvata\/rifiutata<\/li>\n<li>Esito (successo\/fallimento)<\/li>\n<li>Metriche post-azione (MTTR, impatto)<\/li>\n<\/ul>\n<p>Ho integrato questo con il sistema di audit di Plesk. Ogni azione autonoma crea un entry nel Plesk Event Log, tracciabile e auditabile.<\/p>\n<p>Per l&#8217;escalation: Se un&#8217;azione auto-execute fallisce (es. restart di un servizio non riesce 3 volte), il sistema automatically escalates a Livello 2 e notifica gli admin.<\/p>\n<h2>Impatto Misurabile: I Numeri della Mia Implementazione<\/h2>\n<p>Dopo 60 giorni di produzione, ecco i risultati concreti:<\/p>\n<ul>\n<li><strong>MTTR medio ridotto da 45 minuti a 8 minuti<\/strong> (82% miglioramento)<\/li>\n<li><strong>False positives eliminati per il 73%<\/strong> grazie alla semantica dell&#8217;LLM vs semplici threshold<\/li>\n<li><strong>Intervento manuale necessario solo per il 18% degli incident<\/strong> (vs 80% prima)<\/li>\n<li><strong>Availability migliorato da 99.4% a 99.87%<\/strong><\/li>\n<li><strong>Alert fatigue ridotto del 60%<\/strong> &#8211; meno noise, pi\u00f9 signal<\/li>\n<\/ul>\n<p>Il costo computazionale dell&#8217;LLM inference (il pezzo pi\u00f9 costoso) \u00e8 stato ~$12\/mese per server, compensato ampiamente dal valore del tempo risparmiato e dei downtime evitati.<\/p>\n<h2>Sfide Incontrate e Come le Ho Risolte<\/h2>\n<p><strong>Sfida 1: Context Window Limitation<\/strong><br \/>All&#8217;inizio, cercavo di inviare TUTTI i log di 5 minuti al LLM. Rapido disastro &#8211; il context window non \u00e8 infinito.<br \/><strong>Soluzione:<\/strong> Ho implementato un pre-filtering che estrae solo i log lines rilevanti per anomalia usando keyword matching e timestamp correlation. Riduce il contesto del 80%, mantenendo l&#8217;accuratezza.<\/p>\n<p><strong>Sfida 2: False Positives nell&#8217;Anomaly Detection<\/strong><br \/>Quando ho lanciato il baseline, il sistema flaggava come anomalia ogni volta che facevo un test di carico pianificato. Non era utile.<br \/><strong>Soluzione:<\/strong> Ho aggiunto maintenance windows e scheduled baseline updates. Se c&#8217;\u00e8 un maintenance window attivo, il sistema non fa escalate per anomalie minori. Il baseline viene ri-trained ogni 2 settimane.<\/p>\n<p><strong>Sfida 3: Autonomous Actions che Hanno Effetti Collaterali<\/strong><br \/>Una volta, il sistema ha ucciso le connessioni MySQL &#8220;idle&#8221;, ma una era parte di una transazione in-flight. Problemi.<br \/><strong>Soluzione:<\/strong> Ora ogni azione ha un pre-check step. Prima di killare una connection, il sistema verifica se \u00e8 in una transazione esplicita. Se s\u00ec, waits for 2 minutes prima di retrying.<\/p>\n<h2>FAQ<\/h2>\n<h3>L&#8217;AI-Assisted Response automation pu\u00f2 davvero funzionare in produzione?<\/h3>\n<p>Assolutamente s\u00ec, l&#8217;ho provato. Il punto non \u00e8 trustare completamente l&#8217;AI per tutto, ma usarla per automatizzare il 70-80% dei compiti ripetitivi a basso rischio e il triage intelligente del resto. Nel mio caso, ha reducito il MTTR significativamente senza compromettere la stabilit\u00e0.<\/p>\n<h3>Qual \u00e8 il tempo di setup per implementare questa architettura?<\/h3>\n<p>Per un singolo server Plesk da zero: circa 2-3 settimane per un sistema b\u00e1sico (baseline + log analysis + 5-6 runbook). Per un environment multi-server con runbook comprehensive: 4-6 settimane. Il bulk del tempo \u00e8 training e testing, non coding.<\/p>\n<h3>Come gestisco i false positives del LLM?<\/h3>\n<p>Il LLM non \u00e8 perfetto. <cite>L&#8217;analisi di log basata su LLM non \u00e8 una sostituzione per metriche e alerting strutturato: \u00e8 un secondo layer che cattura eventi semanticamente inusuali<\/cite>. Per questo motivo, l&#8217;LLM NON \u00e8 mai la sola fonte di verit\u00e0. Viene sempre cross-checked contro metriche numeriche. Se l&#8217;LLM dice &#8220;MySQL connection leak&#8221; MA le metriche dicono &#8220;connections ancora normali&#8221;, il sistema non escalate.<\/p>\n<h3>Qual \u00e8 il costo totale di ownership di questa soluzione?<\/h3>\n<p>Dipende dal volume. Per un server: ~$15-30\/mese in LLM inference + tempo setup iniziale. Per 100 server con runbook centralized: ~$200-300\/mese + manutenzione. Considerate che ogni 1% di miglioramento in MTTR su un&#8217;infrastruttura mission-critical vi salva facilmente migliaia di dollari in downtime costs.<\/p>\n<h3>Plesk mi obbliga a usare specifici LLM o posso scegliere?<\/h3>\n<p>Plesk non \u00e8 vincolante. <cite>In pratica, il lavoro pu\u00f2 essere passato a un agente AI piuttosto che essere svolto passo per passo. Provisioning di una nuova subscription, investigazione di un issue di consegna mail, tracciamento della causa di un errore 500 o passaggio di un bug di website a un agente AI coding sono tutti possibili attraverso una singola connessione<\/cite>. Potete usare OpenAI, Anthropic Claude, modelli locali (Llama, Mistral) &#8211; dipende da vostre esigenze di latency e privacy.<\/p>\n<h2>Prossimi Step: Evoluzione della Soluzione<\/h2>\n<p>Nel mio roadmap per i prossimi 6 mesi:<\/p>\n<ul>\n<li><strong>Predictive Anomaly Detection:<\/strong> Anzich\u00e9 reagire alle anomalie, predire quando accadranno (es. &#8220;questo account crescer\u00e0 oltre limits tra 3 giorni&#8221;)<\/li>\n<li><strong>Cross-Server Correlation:<\/strong> Se 5 server mostrano lo stesso pattern anomalo contemporaneamente, capire se \u00e8 una anomalia globale vs issue singolo server<\/li>\n<li><strong>Automated Runbook Improvement:<\/strong> Dopo ogni incident, il sistema analyzer\u00e0 se il runbook usato era ottimale e proporr\u00e0 miglioramenti<\/li>\n<li><strong>Cost Attribution AI:<\/strong> Integrare l&#8217;incident response automation con una layer di cost tracking &#8211; sa quale anomalia costa pi\u00f9 in termini di risorse\/downtime<\/li>\n<\/ul>\n<h2>Conclusione: Il Futuro dell&#8217;Incident Response in Plesk<\/h2>\n<p>L&#8217;implementazione di <strong>Plesk AI-Assisted Incident Response Automation basata su anomaly-driven runbooks e LLM log analysis<\/strong> rappresenta un salto qualitativo nella gestione infrastrutturale. Ho dimostrato che \u00e8 possibile reducere il MTTR dalla media industria di 45+ minuti a singole cifre, mantenendo controllo umano e audit trail completo.<\/p>\n<p>La chiave del successo non \u00e8 &#8220;automazione al 100%&#8221; &#8211; quella \u00e8 pericolosa. La chiave \u00e8 <strong>automazione intelligente dei 70% di compiti ripetitivi<\/strong> e <strong>triage semantico del restante 30%<\/strong>. Plesk Obsidian 18.0.80 con MCP support rende questa architettura praticabile anche per operatori senza budget di enterprise SIEM.<\/p>\n<p>Se gestite server Plesk in produzione, vi consiglio di cominciare con baseline training per 1-2 server, poi estendere gradualmente. Il ROI appare gi\u00e0 dopo 2-3 mesi.<\/p>\n<p><strong>Avete domande sulla vostra specifica implementazione?<\/strong> Lasciate un commento qui o contattatemi via blog &#8211; sono sempre interessato a discutere incident response automation con altri SysAdmin.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Come ho implementato in Plesk un framework completo di incident response automation con anomaly detection, LLM log analysis e autonomous action approval. Ridotto MTTR da 45 a 8 minuti.<\/p>\n","protected":false},"author":1,"featured_media":7627,"comment_status":"","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"_seopress_titles_title":"Plesk AI Incident Response: Anomaly-Driven Automation | MTTR","_seopress_titles_desc":"Implementa Plesk AI-Assisted Incident Response con runbook anomaly-driven e LLM log analysis. Riduci MTTR, automatizza triage, escalation intelligente. Guida pratica.","_seopress_robots_index":"","_seopress_robots_follow":"","_seopress_robots_imageindex":"","_seopress_robots_snippet":"","_seopress_robots_primary_cat":"","_seopress_robots_breadcrumbs":"","_seopress_robots_freeze_modified_date":"","_seopress_robots_custom_modified_date":"","_seopress_robots_canonical":"","_seopress_social_fb_title":"Plesk AI Incident Response: Anomaly-Driven Automation | MTTR","_seopress_social_fb_desc":"Implementa Plesk AI-Assisted Incident Response con runbook anomaly-driven e LLM log analysis. Riduci MTTR, automatizza triage, escalation intelligente. Guida pratica.","_seopress_social_fb_img":"https:\/\/darioiannascoli.it\/blog\/wp-content\/uploads\/2026\/10\/come-implementare-plesk-ai-assisted-incident-response-automation-la-mia-procedura-anomaly-driven-runbooks-llm-based-log-1793350976.jpeg","_seopress_social_fb_img_attachment_id":0,"_seopress_social_fb_img_width":0,"_seopress_social_fb_img_height":0,"_seopress_social_twitter_title":"Plesk AI Incident Response: Anomaly-Driven Automation | MTTR","_seopress_social_twitter_desc":"Implementa Plesk AI-Assisted Incident Response con runbook anomaly-driven e LLM log analysis. Riduci MTTR, automatizza triage, escalation intelligente. Guida pratica.","_seopress_social_twitter_img":"https:\/\/darioiannascoli.it\/blog\/wp-content\/uploads\/2026\/10\/come-implementare-plesk-ai-assisted-incident-response-automation-la-mia-procedura-anomaly-driven-runbooks-llm-based-log-1793350976.jpeg","_seopress_social_twitter_img_attachment_id":0,"_seopress_social_twitter_img_width":0,"_seopress_social_twitter_img_height":0,"_seopress_redirections_value":"","_seopress_redirections_enabled":"","_seopress_redirections_enabled_regex":"","_seopress_redirections_logged_status":"","_seopress_redirections_param":"","_seopress_redirections_type":0,"_seopress_analysis_target_kw":"Plesk incident response automation AI,anomaly-driven runbooks LLM log analysis,MTTR mean time to recovery Plesk,autonomous action approval framework,Plesk MCP Model Context Protocol incidents","footnotes":""},"categories":[4],"tags":[1016,631,1508,1509,116],"class_list":["post-7626","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-plesk","tag-ai-automation","tag-incident-response","tag-llm-log-analysis","tag-mttr-optimization","tag-plesk"],"_links":{"self":[{"href":"https:\/\/darioiannascoli.it\/blog\/wp-json\/wp\/v2\/posts\/7626","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/darioiannascoli.it\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/darioiannascoli.it\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/darioiannascoli.it\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/darioiannascoli.it\/blog\/wp-json\/wp\/v2\/comments?post=7626"}],"version-history":[{"count":0,"href":"https:\/\/darioiannascoli.it\/blog\/wp-json\/wp\/v2\/posts\/7626\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/darioiannascoli.it\/blog\/wp-json\/wp\/v2\/media\/7627"}],"wp:attachment":[{"href":"https:\/\/darioiannascoli.it\/blog\/wp-json\/wp\/v2\/media?parent=7626"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/darioiannascoli.it\/blog\/wp-json\/wp\/v2\/categories?post=7626"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/darioiannascoli.it\/blog\/wp-json\/wp\/v2\/tags?post=7626"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}