Saltar al contenido

Estimador de Huella de Carbono (CO2) para Revit e IFC con IA

Convierte datos BIM (Revit/IFC) a Excel, los clasifica con IA, calcula la huella de carbono de los elementos de construcción y genera informes detallados en HTML y Excel.

AI 57 nodos 16 tipos conectado
Cargando workflow...

Nodos

Code Set OpenAi If SplitInBatches Agent LmChatAnthropic SpreadsheetFile ReadBinaryFile ExecuteCommand Merge ManualTrigger StickyNote WriteBinaryFile LmChatOpenAi LmChatXAiGrok

Herramientas

OpenAI Anthropic xAI Grok RvtExporter Excel HTML

Detalles

ID
7653
Nodos
57
Conex.
Tipos
16

Pertenece a:

¿Qué hace este workflow?

Este workflow automatiza el análisis de la huella de carbono (CO2) de proyectos de construcción, utilizando datos de modelos BIM (Revit/IFC). Extrae información crucial, la convierte a un formato manejable como Excel y aplica inteligencia artificial para clasificar elementos constructivos. A partir de esta clasificación, calcula con precisión las emisiones de CO2 asociadas a cada componente, ofreciendo una visión detallada del impacto ambiental de los materiales. Finalmente, el sistema genera informes exhaustivos en formatos HTML y Excel, permitiendo a arquitectos, ingenieros y empresas constructoras evaluar y optimizar la sostenibilidad de sus diseños y obras. Esta automatización reduce significativamente el tiempo y el esfuerzo manual en la estimación de carbono, mejora la precisión de los cálculos y facilita la toma de decisiones informadas para cumplir con regulaciones ambientales y promover construcciones más ecológicas.

¿Cómo funciona?

Este workflow usa 57 nodos conectados con 16 tipos diferentes: Code, Set, OpenAi, If, SplitInBatches y 11 más. La estructura está totalmente conectada — listo para importar.

¿Para quién es?

Diseñado para empresas de Servicios Profesionales y equipos de Operaciones & Finanzas. Nivel avanzado — recomendado para usuarios experimentados. Alto valor de negocio: automatiza una tarea recurrente con impacto directo.

¿Lo quieres en tu empresa?

Lo implementamos por ti end-to-end: integración, deploy, mantenimiento y soporte. Consultoría B2B con Genai Sapiens.

Hablemos de tu proyecto

¿Quieres aprender a hacerlo?

Sprints de 30 días con companion IA + comunidad. Aprende n8n, automatización y agentes IA desde cero o nivel avanzado.

Ver formación Momentum

Workflows similares

\n \n\n\n
\n \n
\n

Carbon Footprint Analysis

\n
Project: ${projectFileName} | Executive Summary Report | ${new Date().toLocaleDateString('en-US', { month: 'long', day: 'numeric', year: 'numeric' })}
\n
\n \n \n
\n

Executive Summary

\n

\n Analysis reveals ${projectTotals.totalCO2.toFixed(1)} tonnes CO2e of embodied carbon across \n ${projectTotals.totalElements.toLocaleString()} building elements. The assessment identifies ${highImpactItems} \n high-impact element groups contributing over 5% each to total emissions, presenting clear optimization opportunities.\n

\n
\n \n \n
\n
\n
${projectTotals.totalCO2.toFixed(0)}
\n
Total CO2 Emissions
\n
tonnes CO2e
\n
\n
\n
${((topMaterial[1].co2 / projectTotals.totalCO2) * 100).toFixed(0)}%
\n
${topMaterial[0]} Impact
\n
of total
\n
\n
\n
${(projectTotals.totalCO2 / projectTotals.totalMass).toFixed(1)}
\n
Average Intensity
\n
kg CO2e/kg
\n
\n
\n
${Object.keys(projectTotals.byMaterial).length}
\n
Material Types
\n
identified
\n
\n
\n \n \n
\n \n
\n
\n

CO2 Emissions by Material Type

\n

Proportional distribution of carbon impact

\n
\n
\n \n
\n
\n \n \n
\n
\n

Impact Concentration Analysis

\n

Top 5 vs. remaining elements

\n
\n
\n \n
\n
\n \n \n
\n
\n

Top 10 Carbon Contributors

\n

Individual element groups ranked by CO2 emissions

\n
\n
\n \n
\n
\n
\n \n \n
\n

Primary Finding

\n

\n ${topMaterial[0]} represents the largest carbon impact at \n ${topMaterial[1].co2.toFixed(1)} tonnes CO2e, accounting for \n ${((topMaterial[1].co2 / projectTotals.totalCO2) * 100).toFixed(0)}% \n of total emissions across ${topMaterial[1].elements.toLocaleString()} elements. This concentration presents \n the primary opportunity for carbon reduction through material substitution or design optimization.\n

\n
\n \n \n
\n
\n

Top 10 Carbon Contributors

\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n ${items.slice(0, 10).map((item, index) => {\n const data = item.json;\n const co2Percent = parseFloat(data['CO2 % of Total']);\n let impactClass = 'impact-low';\n let impactText = 'LOW';\n \n if (co2Percent >= 10) {\n impactClass = 'impact-critical';\n impactText = 'CRITICAL';\n } else if (co2Percent >= 5) {\n impactClass = 'impact-high';\n impactText = 'HIGH';\n } else if (co2Percent >= 2) {\n impactClass = 'impact-medium';\n impactText = 'MEDIUM';\n }\n \n return `\n \n \n \n \n \n \n \n \n `;\n }).join('')}\n \n
RankElement GroupMaterial TypeQuantityCO2 (tonnes)% of TotalPriority
${index + 1}${data['Element Name']}${data['Material (EU Standard)']}${data['Element Count']}${parseFloat(data['Total CO2 (tonnes CO2e)']).toFixed(2)}\n ${co2Percent.toFixed(1)}%\n
\n
\n
\n
${impactText}
\n
\n \n \n
\n
\n

Material Impact Analysis

\n
\n \n \n \n \n \n \n \n \n \n \n \n \n ${Object.entries(projectTotals.byMaterial)\n .sort((a, b) => b[1].co2 - a[1].co2)\n .slice(0, 6)\n .map(([material, data]) => {\n const percent = (data.co2 / projectTotals.totalCO2) * 100;\n return `\n \n \n \n \n \n \n \n `;\n }).join('')}\n \n
Material ClassificationElementsMass (t)CO2 (t)% of TotalIntensity
${material}${data.elements.toLocaleString()}${data.mass.toFixed(1)}${data.co2.toFixed(1)}\n ${percent.toFixed(1)}%\n
\n
\n
\n
${(data.co2 / data.mass).toFixed(2)} kg/kg
\n
\n \n \n
\n
\n
\n

Cumulative Carbon Impact

\n

Pareto analysis showing concentration of emissions

\n
\n
\n \n
\n
\n
\n \n \n
\n

Recommended Actions

\n
    \n
  • Prioritize ${topMaterial[0]} optimization - potential ${(topMaterial[1].co2 * 0.2).toFixed(0)}t CO2e reduction with 20% improvement
  • \n
  • Review specification for ${highImpactItems} high-impact element groups (>5% each of total)
  • \n
  • Investigate low-carbon alternatives for top 3 materials: ${Object.entries(projectTotals.byMaterial).sort((a,b) => b[1].co2 - a[1].co2).slice(0,3).map(([m]) => m).join(', ')}
  • \n
  • Focus on elements exceeding project average intensity of ${(projectTotals.totalCO2 / projectTotals.totalMass).toFixed(1)} kg CO2e per kg material
  • \n
\n
\n \n \n
\n

\n Carbon Footprint Analysis • \n Embodied Carbon Assessment (A1-A3) • \n Generated ${new Date().toLocaleString()}\n

\n

\n Powered by DataDrivenConstruction.io • \n Detailed calculations available in accompanying Excel workbook\n

\n
\n
\n \n \n\n`;\n\nreturn [{\n json: {\n html: html,\n reportType: 'mckinsey-accenture-professional',\n timestamp: new Date().toISOString()\n }\n}];"},"typeVersion":2},{"id":"8d2144e0-ea60-46c3-ab58-1f2e3a988d2d","name":"HTML to Binary","type":"n8n-nodes-base.code","position":[352,1552],"parameters":{"jsCode":"\n// Convert HTML to binary for file output\nconst html = $input.first().json.html;\nconst fileName = `CO2_Analysis_Report_${new Date().toISOString().slice(0,10)}.html`;\n\n// Return with 'data' as the default binary field name\nreturn [{\n json: {\n fileName: fileName // Also pass filename in json for backup\n },\n binary: {\n data: {\n data: Buffer.from(html).toString('base64'),\n mimeType: 'text/html',\n fileName: fileName,\n fileExtension: 'html'\n }\n }\n}];"},"typeVersion":2},{"id":"b3a16d39-4c38-4c35-b810-1eeb3325694f","name":"Sticky Note","type":"n8n-nodes-base.stickyNote","position":[-1216,464],"parameters":{"width":340,"height":116,"content":"⭐ **If you find our tools helpful**, please consider **starring our repository** on [GitHub](https://github.com/datadrivenconstruction/cad2data-Revit-IFC-DWG-DGN-pipeline-with-conversion-validation-qto). \n\nYour support helps us improve and continue developing open solutions for the community!\n"},"typeVersion":1},{"id":"3089d1b0-7633-44c4-81ec-16b06cd61369","name":"Conversion Block1","type":"n8n-nodes-base.stickyNote","position":[-864,-352],"parameters":{"color":5,"width":1064,"height":96,"content":"# Carbon Footprint CO2 Estimator for Revit and IFC with AI (LLM)\nDataDrivenConstruction [GitHub](https://github.com/datadrivenconstruction/cad2data-Revit-IFC-DWG-DGN-pipeline-with-conversion-validation-qto)"},"typeVersion":1},{"id":"6cdf5726-dbbc-420b-9feb-c00a007e2a25","name":"OpenAI Chat Model","type":"@n8n/n8n-nodes-langchain.lmChatOpenAi","position":[304,1264],"parameters":{"model":{"__rl":true,"mode":"list","value":"gpt-3.5-turbo","cachedResultName":"gpt-3.5-turbo"},"options":{}},"credentials":{"openAiApi":{"id":"5SwKOx6OOukR6C0w","name":"OpenAi account n8n"}},"typeVersion":1.2},{"id":"f16d5db4-57a8-49fa-b678-d69b45e15d9a","name":"xAI Grok Chat Model","type":"@n8n/n8n-nodes-langchain.lmChatXAiGrok","position":[480,1264],"parameters":{"model":"grok-4-0709","options":{}},"credentials":{"xAiApi":{"id":"JKhw9fFrSig9QNQB","name":"xAi account"}},"typeVersion":1},{"id":"ff1a82e6-2138-45f3-a51e-4ce140f718e1","name":"Sticky Note2","type":"n8n-nodes-base.stickyNote","position":[-336,-208],"parameters":{"color":4,"height":384,"content":"## ⬇️ Only modify the variables here \n— everything else works automatically"},"typeVersion":1},{"id":"91417501-7993-4c62-bb22-095b30ce3c1a","name":"On the standard 3D View","type":"n8n-nodes-base.if","position":[-256,768],"parameters":{"conditions":{"boolean":[{"value1":"={{ $json['On the standard 3D View'] }}","value2":true}]}},"typeVersion":1},{"id":"a607b5db-6257-4ba3-99b7-a31e5779e0ea","name":"Non-3D View Elements Output","type":"n8n-nodes-base.set","position":[-80,848],"parameters":{"options":{},"assignments":{"assignments":[{"id":"message","name":"message","type":"string","value":"Elements not visible in standard 3D view"},{"id":"filtered_count","name":"filtered_count","type":"number","value":"={{ $input.all().length }}"},{"id":"reason","name":"reason","type":"string","value":"Parameter 'On the standard 3D View' is not True"}]}},"typeVersion":3.4}],"active":false,"pinData":{},"settings":{"executionOrder":"v1"},"versionId":"9380188d-a427-41be-9690-38a99e3a7a6b","connections":{"Parse Excel":{"main":[[{"node":"Extract Headers and Data1","type":"main","index":0}]]},"HTML to Binary":{"main":[[{"node":"Prepare HTML Path","type":"main","index":0}]]},"Set Parameters":{"main":[[{"node":"Read Excel File","type":"main","index":0}]]},"Read Excel File":{"main":[[{"node":"Parse Excel","type":"main","index":0}]]},"AI Agent Enhanced":{"main":[[{"node":"Parse Enhanced Response","type":"main","index":0}]]},"Create Excel File":{"main":[[{"node":"Enhance Excel Output","type":"main","index":0}]]},"If - File exists?":{"main":[[{"node":"Info - Skip conversion","type":"main","index":0}],[{"node":"Extract - Run converter","type":"main","index":0}]]},"Prepare HTML Path":{"main":[[{"node":"Write HTML to Project Folder","type":"main","index":0}]]},"Accumulate Results":{"main":[[{"node":"Check If All Batches Done","type":"main","index":0}]]},"Prepare Excel Data":{"main":[[{"node":"Create Excel File","type":"main","index":0}]]},"Prepare Excel Path":{"main":[[{"node":"Write Excel to Project Folder","type":"main","index":0}]]},"Clean Empty Values1":{"main":[[{"node":"Prepare Enhanced Prompts","type":"main","index":0}]]},"Collect All Results":{"main":[[{"node":"Calculate Project Totals4","type":"main","index":0}]]},"Process in Batches1":{"main":[[{"node":"Clean Empty Values1","type":"main","index":0}]]},"xAI Grok Chat Model":{"ai_languageModel":[[{"node":"AI Agent Enhanced","type":"ai_languageModel","index":0}]]},"Enhance Excel Output":{"main":[[{"node":"Prepare Excel Path","type":"main","index":0}]]},"Generate HTML Report":{"main":[[{"node":"HTML to Binary","type":"main","index":0}]]},"Is Building Element1":{"main":[[{"node":"Process in Batches1","type":"main","index":0}],[{"node":"Non-Building Elements Output1","type":"main","index":0}]]},"Process AI Response1":{"main":[[{"node":"Group Data with AI Rules1","type":"main","index":0}]]},"Find Category Fields1":{"main":[[{"node":"AI Classify Categories1","type":"main","index":0}]]},"Info - Skip conversion":{"main":[[{"node":"Merge - Continue workflow","type":"main","index":0}]]},"AI Analyze All Headers1":{"main":[[{"node":"Process AI Response1","type":"main","index":0}]]},"AI Classify Categories1":{"main":[[{"node":"Apply Classification to Groups1","type":"main","index":0}]]},"Create - Excel filename":{"main":[[{"node":"Check - Does Excel file exist?","type":"main","index":0}]]},"Extract - Run converter":{"main":[[{"node":"Check - Did extraction succeed?","type":"main","index":0}]]},"On the standard 3D View":{"main":[[{"node":"Find Category Fields1","type":"main","index":0}],[{"node":"Non-3D View Elements Output","type":"main","index":0}]]},"Parse Enhanced Response":{"main":[[{"node":"Accumulate Results","type":"main","index":0}]]},"Prepare Enhanced Prompts":{"main":[[{"node":"AI Agent Enhanced","type":"main","index":0}]]},"Calculate Project Totals4":{"main":[[{"node":"Generate HTML Report","type":"main","index":0},{"node":"Prepare Excel Data","type":"main","index":0}]]},"Check If All Batches Done":{"main":[[{"node":"Collect All Results","type":"main","index":0}],[{"node":"Process in Batches1","type":"main","index":0}]]},"Extract Headers and Data1":{"main":[[{"node":"AI Analyze All Headers1","type":"main","index":0}]]},"Group Data with AI Rules1":{"main":[[{"node":"On the standard 3D View","type":"main","index":0}]]},"Merge - Continue workflow":{"main":[[{"node":"Set Parameters","type":"main","index":0}]]},"Setup - Define file paths":{"main":[[{"node":"Create - Excel filename","type":"main","index":0}]]},"Error - Show what went wrong":{"main":[[{"node":"Merge - Continue workflow","type":"main","index":1}]]},"Write HTML to Project Folder":{"main":[[{"node":"Open HTML in Browser","type":"main","index":0}]]},"Check - Does Excel file exist?":{"main":[[{"node":"If - File exists?","type":"main","index":0}]]},"Apply Classification to Groups1":{"main":[[{"node":"Is Building Element1","type":"main","index":0}]]},"Check - Did extraction succeed?":{"main":[[{"node":"Error - Show what went wrong","type":"main","index":0}],[{"node":"Set xlsx_filename after success","type":"main","index":0}]]},"Set xlsx_filename after success":{"main":[[{"node":"Merge - Continue workflow","type":"main","index":1}]]},"When clicking ‘Execute workflow’":{"main":[[{"node":"Setup - Define file paths","type":"main","index":0}]]}}}