8
n8n 中文网amn8n.com

PG&E 每日费用追踪器

中级

这是一个Other, AI领域的自动化工作流,包含 15 个节点。主要使用 Set, Wait, Gmail, Airtop, ScheduleTrigger 等节点,结合人工智能技术实现智能自动化。 使用 Airtop 和邮件通知跟踪每日 PG&E 能源费用

前置要求
  • Google 账号和 Gmail API 凭证
工作流预览
可视化展示节点连接关系,支持缩放和平移
导出工作流
复制以下 JSON 配置到 n8n 导入,即可使用此工作流
{
  "id": "NMGsDLoVZ7DUukGs",
  "meta": {
    "instanceId": "28a947b92b197fc2524eaba16e57560338657b2b0b5796300b2f1cedc1d0d355"
  },
  "name": "PG&E 每日费用追踪器",
  "tags": [
    {
      "id": "yJGnIHoS9KZ1HkjS",
      "name": "template",
      "createdAt": "2025-04-17T20:22:38.913Z",
      "updatedAt": "2025-04-17T20:22:38.913Z"
    }
  ],
  "nodes": [
    {
      "id": "814cc9ac-382b-42b3-b5b8-90eda0dc2889",
      "name": "定时触发器",
      "type": "n8n-nodes-base.scheduleTrigger",
      "position": [
        -2640,
        100
      ],
      "parameters": {
        "rule": {
          "interval": [
            {
              "triggerAtHour": 8
            }
          ]
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "310bfb08-2086-4f0f-8790-02c2c186bae2",
      "name": "输入密码",
      "type": "n8n-nodes-base.airtop",
      "position": [
        -1540,
        100
      ],
      "parameters": {
        "text": "={{ $('Variables').item.json.PGE_Password }}",
        "resource": "interaction",
        "windowId": "={{ $('Create browser window').item.json.windowId }}",
        "operation": "type",
        "sessionId": "={{ $('Create session').item.json.sessionId }}",
        "pressEnterKey": true,
        "additionalFields": {
          "waitForNavigation": "networkidle0"
        },
        "elementDescription": "PASSWORD Text Box"
      },
      "typeVersion": 1
    },
    {
      "id": "b0de782e-9c54-4a40-b7e8-8e7ab3655986",
      "name": "变量",
      "type": "n8n-nodes-base.set",
      "position": [
        -2420,
        100
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "3a765a8e-14d8-4a32-b894-b6f90e5db246",
              "name": "PGE_Username",
              "type": "string",
              "value": ""
            },
            {
              "id": "81a94ea1-714b-4f9f-b63a-47fee5f51e3a",
              "name": "PGE_Password",
              "type": "string",
              "value": ""
            },
            {
              "id": "e90a5678-4c62-443c-ab1d-57efd6ca69eb",
              "name": "Email",
              "type": "string",
              "value": ""
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "69cca1c7-9a83-43a7-95e7-98ba24f9575b",
      "name": "前往\"能源费用\"",
      "type": "n8n-nodes-base.airtop",
      "position": [
        -660,
        100
      ],
      "parameters": {
        "resource": "interaction",
        "windowId": "={{ $('Create browser window').item.json.data.windowId }}",
        "sessionId": "={{ $('Create session').item.json.sessionId }}",
        "additionalFields": {
          "waitForNavigation": "load"
        },
        "elementDescription": "ENERGY COSTS"
      },
      "typeVersion": 1
    },
    {
      "id": "184206ce-4b4d-4bb0-b468-cbb61f45b61b",
      "name": "前往\"电力和燃气\"",
      "type": "n8n-nodes-base.airtop",
      "onError": "continueRegularOutput",
      "position": [
        -440,
        100
      ],
      "parameters": {
        "resource": "interaction",
        "windowId": "={{ $('Create browser window').item.json.data.windowId }}",
        "sessionId": "={{ $('Create session').item.json.sessionId }}",
        "additionalFields": {
          "waitForNavigation": "networkidle0"
        },
        "elementDescription": "COMBINED"
      },
      "typeVersion": 1
    },
    {
      "id": "424b5209-97e7-4eef-a496-ac9f08d84d3d",
      "name": "提取费用",
      "type": "n8n-nodes-base.airtop",
      "notes": "Some PG&E accounts have a \"Combined\" view for gas and electricity",
      "position": [
        -220,
        100
      ],
      "parameters": {
        "prompt": "Extract the daily energy costs from the webpage content, including both natural gas and electricity costs. Format the information as a daily update email, listing the costs from the most recent date to the earliest. Ensure the email format is clear and concise, without including a subject line or greeting. Include the date, total combined costs, natural gas costs, and electricity costs for each day. \n\nIf natural gas costs are not provided, ignore them, ignore Total Combined Costs and report only on electricity \n\nFor example, if the webpage content provides the following data:\n\n- Date: 2023-10-01, Total Combined Costs: $15.00, Natural Gas Costs: $5.00, Electricity Costs: $10.00\n- Date: 2023-09-30, Total Combined Costs: $14.50, Natural Gas Costs: $4.50, Electricity Costs: $10.00\n\nThe output should be formatted as an easy to read email:\n\n<!DOCTYPE html>\n<html>\n<body>\n<p>October 1, 2023</p>\n<p>Total Combined Costs: $15.00<br>\nNatural Gas Costs: $5.00<br>\nElectricity Costs: $10.00</p>\n\n<p>September 30, 2023</p>\n<p>Total Combined Costs: $14.50<br>\nNatural Gas Costs: $4.50<br>\nElectricity Costs: $10.00</p>\n</body>\n</html>\n",
        "resource": "extraction",
        "windowId": "={{ $('Create browser window').item.json.data.windowId }}",
        "operation": "query",
        "sessionId": "={{ $('Create session').item.json.sessionId }}",
        "additionalFields": {}
      },
      "notesInFlow": true,
      "typeVersion": 1
    },
    {
      "id": "b0cf1ebc-157d-4ab3-9ed6-267c81293feb",
      "name": "前往\"能源使用详情\"",
      "type": "n8n-nodes-base.airtop",
      "position": [
        -880,
        100
      ],
      "parameters": {
        "resource": "interaction",
        "windowId": "={{ $('Create browser window').item.json.windowId }}",
        "sessionId": "={{ $('Create session').item.json.sessionId }}",
        "additionalFields": {
          "waitForNavigation": "load"
        },
        "elementDescription": "Click on the box that says ENERGY USAGE DETAILS See usage & costs over time"
      },
      "typeVersion": 1
    },
    {
      "id": "485f8071-9c54-4f79-9378-d354260b2038",
      "name": "等待5秒",
      "type": "n8n-nodes-base.wait",
      "position": [
        -1100,
        100
      ],
      "webhookId": "371deac7-bd64-4385-8bc5-a14a0db2bcc7",
      "parameters": {},
      "typeVersion": 1.1
    },
    {
      "id": "87d68490-1064-4180-89d9-534c9308c6c9",
      "name": "关闭弹窗(如有)",
      "type": "n8n-nodes-base.airtop",
      "position": [
        -1320,
        100
      ],
      "parameters": {
        "resource": "interaction",
        "windowId": "={{ $('Create browser window').item.json.windowId }}",
        "sessionId": "={{ $('Create session').item.json.sessionId }}",
        "additionalFields": {},
        "elementDescription": "If there is a modal on the page, click on the button to dismiss the modal"
      },
      "typeVersion": 1
    },
    {
      "id": "80018e55-6557-4641-a07b-926517a72bb0",
      "name": "创建会话",
      "type": "n8n-nodes-base.airtop",
      "position": [
        -2200,
        100
      ],
      "parameters": {
        "profileName": "cesar-prod",
        "timeoutMinutes": 5
      },
      "typeVersion": 1
    },
    {
      "id": "05711cf0-9c20-4f41-854e-dea872eee3d8",
      "name": "创建浏览器窗口",
      "type": "n8n-nodes-base.airtop",
      "position": [
        -1980,
        100
      ],
      "parameters": {
        "url": "https://m.pge.com/",
        "resource": "window",
        "getLiveView": true,
        "disableResize": true,
        "additionalFields": {
          "waitUntil": "load"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "d673347d-ef40-4349-a7e7-2ba594400d2c",
      "name": "输入用户名",
      "type": "n8n-nodes-base.airtop",
      "position": [
        -1760,
        100
      ],
      "parameters": {
        "text": "={{ $('Variables').item.json.PGE_Username }}",
        "resource": "interaction",
        "operation": "type",
        "additionalFields": {},
        "elementDescription": "USERNAME text box"
      },
      "typeVersion": 1
    },
    {
      "id": "b64a04b1-d00b-4d04-b9e3-7d2c86800923",
      "name": "发送邮件",
      "type": "n8n-nodes-base.gmail",
      "position": [
        0,
        200
      ],
      "webhookId": "7586d2f6-00b8-41ee-89d0-f2768b402165",
      "parameters": {
        "sendTo": "={{ $('Variables').item.json.Email }}",
        "message": "={{ $json['data'].modelResponse }}",
        "options": {
          "senderName": "Airtop Monitor",
          "appendAttribution": false
        },
        "subject": "Daily energy costs report"
      },
      "typeVersion": 2.1
    },
    {
      "id": "d402443c-ed67-4df7-b5c8-032f4a2ea941",
      "name": "结束会话",
      "type": "n8n-nodes-base.airtop",
      "position": [
        0,
        0
      ],
      "parameters": {
        "operation": "terminate",
        "sessionId": "={{ $('Create session').item.json.sessionId }}"
      },
      "typeVersion": 1
    },
    {
      "id": "076e7eed-e71f-4ef7-8038-ea3dcc188b9c",
      "name": "便签",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -2480,
        -40
      ],
      "parameters": {
        "color": 5,
        "height": 340,
        "content": "## 注意!"
      },
      "typeVersion": 1
    }
  ],
  "active": false,
  "pinData": {},
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "0d0d4991-e9c1-4f51-be90-bb8337e40bc2",
  "connections": {
    "Variables": {
      "main": [
        [
          {
            "node": "Create session",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Wait 5 secs": {
      "main": [
        [
          {
            "node": "Go to \"Energy Usage Details\"",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Extract Costs": {
      "main": [
        [
          {
            "node": "End session",
            "type": "main",
            "index": 0
          },
          {
            "node": "Send email",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Type password": {
      "main": [
        [
          {
            "node": "Close modal (if any)",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Type username": {
      "main": [
        [
          {
            "node": "Type password",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Create session": {
      "main": [
        [
          {
            "node": "Create browser window",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Schedule Trigger": {
      "main": [
        [
          {
            "node": "Variables",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Close modal (if any)": {
      "main": [
        [
          {
            "node": "Wait 5 secs",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Go to \"Energy Costs\"": {
      "main": [
        [
          {
            "node": "Go to \"Electricity and Gas\"",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Create browser window": {
      "main": [
        [
          {
            "node": "Type username",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Go to \"Electricity and Gas\"": {
      "main": [
        [
          {
            "node": "Extract Costs",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Go to \"Energy Usage Details\"": {
      "main": [
        [
          {
            "node": "Go to \"Energy Costs\"",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}
常见问题

如何使用这个工作流?

复制上方的 JSON 配置代码,在您的 n8n 实例中创建新工作流并选择「从 JSON 导入」,粘贴配置后根据需要修改凭证设置即可。

这个工作流适合什么场景?

中级 - 其他, 人工智能

需要付费吗?

本工作流完全免费,您可以直接导入使用。但请注意,工作流中使用的第三方服务(如 OpenAI API)可能需要您自行付费。

工作流信息
难度等级
中级
节点数量15
分类2
节点类型6
难度说明

适合有一定经验的用户,包含 6-15 个节点的中等复杂度工作流

作者
Cesar @ Airtop AI

Cesar @ Airtop AI

@cesar-at-airtop

AI Engineer at Airtop AI

外部链接
在 n8n.io 查看

分享此工作流