Google Kalender ist nächste Woche geplant
Dies ist ein Other, AI-Bereich Automatisierungsworkflow mit 21 Nodes. Hauptsächlich werden Set, Code, Markdown, Aggregate, EmailSend und andere Nodes verwendet, kombiniert mit KI-Technologie für intelligente Automatisierung. Automatisierte wöchentliche Google-Kalender-Zusammenfassungen per E-Mail (KI-gesteuert)
- •Google Gemini API Key
Verwendete Nodes (21)
Kategorie
{
"id": "81UkThrSnnFw6IJo",
"meta": {
"instanceId": "3612a0c89f35a354ddd1216385240db51b4635fde7cae2a0d5004be915b832f3",
"templateCredsSetupCompleted": true
},
"name": "Google Calendar Coming Week",
"tags": [],
"nodes": [
{
"id": "b4c54286-a4c5-4a1b-87ca-a37fa1fcb2aa",
"name": "weekly_schedule",
"type": "n8n-nodes-base.scheduleTrigger",
"position": [
-180,
-40
],
"parameters": {
"rule": {
"interval": [
{
"field": "weeks",
"triggerAtHour": 12
}
]
}
},
"typeVersion": 1.2
},
{
"id": "57a88176-a291-4d65-bfd2-868d4e50befb",
"name": "get_next_weeks_events",
"type": "n8n-nodes-base.googleCalendar",
"position": [
1300,
-40
],
"parameters": {
"options": {},
"timeMax": "={{ $json['users-current-day-1-minute-before-midnight-plus-7-days-iso'] }}",
"timeMin": "={{ $json['users-current-day-1-minute-before-midnight-iso'] }}",
"calendar": {
"__rl": true,
"mode": "list",
"value": "c_4d9c2d4e139327143ee4a5bc4db531ffe074e98d21d1c28662b4a4d4da898866@group.calendar.google.com",
"cachedResultName": "n8n-personal-assistant-demo"
},
"operation": "getAll",
"returnAll": true
},
"credentials": {
"googleCalendarOAuth2Api": {
"id": "a1DI60kDgcdbIlXb",
"name": "Google Calendar account"
}
},
"typeVersion": 1.3
},
{
"id": "ed2eacbb-453f-4e5b-be3a-0c45e3506e1b",
"name": "Google Gemini",
"type": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini",
"position": [
2840,
580
],
"parameters": {
"options": {},
"modelName": "models/gemini-2.5-flash-preview-05-20"
},
"credentials": {
"googlePalmApi": {
"id": "lBQrszvhtstelPlO",
"name": "Google Gemini(PaLM) Api account 4"
}
},
"typeVersion": 1
},
{
"id": "20670d58-0c0a-4f17-9a89-131bb2cd2caa",
"name": "event_summary_agent",
"type": "@n8n/n8n-nodes-langchain.agent",
"position": [
2740,
-40
],
"parameters": {
"text": "={{ $json.eventdata }}",
"options": {
"systemMessage": "=You have been given a JSON array of Google Calendar events for the upcoming week (Monday to Sunday). Today is Sunday, {{ $('locale').item.json['users-current-date'] ? $('locale').item.json['users-current-date'] : $now.setZone($('locale').item.json['users-timezone'] ?? 'Australia/Sydney').setLocale($('locale').item.json['users-locale'] ?? 'en-AU').toLocaleString({ weekday: 'long', month: 'long', day: 'numeric', year: 'numeric' }) }}.\nEach event object in the array has 'summary', 'start.dateTime', 'end.dateTime', and 'description'. Your designated timezone is '{{ $('locale').item.json['users-timezone'] }}' and locale '{{ $('locale').item.json['users-locale'] }}'.\n\nThe users name is: {{ $('locale').item.json['users-name'] }}\nThe user is located in: {{ $('locale').item.json['users-home-city'] }}\n\nYour task is to create a well-formatted weekly schedule summary for an email.\n\n1. **Greeting**: Start with a friendly greeting, for example: \"Here's your schedule for the upcoming week:\"\n\n2. **Daily Schedule**:\n * Group events by day (e.g., Monday, June 9, 2025; Tuesday, June 10, 2025). Determine the correct dates for the upcoming week (Monday to Sunday) based on today's date.\n * For each day of the upcoming week, list its events chronologically.\n * Format each event as: `HH:MM AM/PM - HH:MM AM/PM: Event Summary`. For example: `09:30 AM - 10:30 AM: Team Meeting`.\n * Parse the `start.dateTime` and `end.dateTime` (which are ISO strings with timezone offsets like `+10:00`) and display them correctly for the '{{ $('locale').item.json['users-timezone'] }}' timezone.\n * If a day has no events, state \"No events scheduled for this day.\"\n\n3. **Priority Events**:\n * Review the 'summary' and 'description' fields for keywords such as \"important\", \"urgent\", \"deadline\", \"meeting\", \"critical\", \"prepare\", or similar terms that indicate significance.\n * Mark these priority events by prefixing the event line with \"IMPORTANT: \". For example: `IMPORTANT: 02:00 PM - 03:00 PM: Project Deadline Review`.\n * If the 'description' provides actionable context for a priority event (e.g., \"Preparation needed: review X document\"), you can briefly mention this context after the event summary.\n\n4. **Weekly Insight**:\n * Conclude with 1-2 sentences offering a helpful insight, observation, or piece of advice related to the week's schedule. Examples:\n * \"Thursday looks like your busiest day, so you might want to plan accordingly.\"\n * \"Remember to allocate some time to prepare for the client presentation on Wednesday.\"\n * \"This week seems to have a good balance of meetings and free time.\"\n\n5. **Input Data Structure Reminder**: The calendar events are provided as a JSON array. You need to process this entire array.\n\nPlease generate only the text content suitable for the body of an email. Do not include any preamble (like \"Okay, here is the summary...\") or sign-off beyond the requested content."
},
"promptType": "define"
},
"typeVersion": 2
},
{
"id": "99885550-0c81-4513-86f0-8e82b0d5e0fb",
"name": "send_email",
"type": "n8n-nodes-base.emailSend",
"position": [
3800,
-40
],
"webhookId": "7748b0f5-1a6a-42bf-b1c0-63051d6a62a2",
"parameters": {
"html": "={{ $json['email-html'] }}",
"options": {
"appendAttribution": false
},
"subject": "=Next Week Calendar Summary : {{ $now.plus({ days: 1 }).day }}-{{ $now.plus({ days: 7 }).toLocaleString(DateTime.DATE_MED) }}"
},
"credentials": {
"smtp": {
"id": "AoLopFA5yBSkhbrF",
"name": "SMTP account"
}
},
"typeVersion": 2.1
},
{
"id": "9199043b-2255-4a29-9c76-e6edbda41cc5",
"name": "locale",
"type": "n8n-nodes-base.set",
"position": [
300,
-40
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "2fa6da62-0c1b-4abe-b1d1-45dab7c22ab0",
"name": "users-locale",
"type": "string",
"value": "en-AU"
},
{
"id": "e997127b-a7b1-4684-82b3-3e5d66be07fa",
"name": "users-timezone",
"type": "string",
"value": "Australia/Sydney"
},
{
"id": "082e8d8f-5b20-4fc0-a59e-6deb48cb1406",
"name": "users-name",
"type": "string",
"value": "Bob"
},
{
"id": "4a867353-6d0c-4bad-90f9-e739ff1da010",
"name": "users-home-city",
"type": "string",
"value": "Sydney"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "b92e0c62-d83f-417d-9ed1-839b3f680edd",
"name": "simplify_evens_json",
"type": "n8n-nodes-base.code",
"position": [
1800,
-40
],
"parameters": {
"jsCode": "// Loop over input items and add a new field called 'myNewField' to the JSON of each one\nfor (const item of $input.all()) {\n delete item.json.htmlLink\n delete item.json.etag\n delete item.json.iCalUID\n delete item.json.start.timeZone\n delete item.json.end.timeZone\n delete item.json.kind\n delete item.json.reminders\n delete item.json.organizer\n delete item.json.creator\n delete item.json.created\n delete item.json.updated\n delete item.json.status\n delete item.json.eventType\n delete item.json.id\n}\n\nreturn $input.all();"
},
"typeVersion": 2
},
{
"id": "c3639753-7b59-40ea-b59b-32dc00769146",
"name": "aggregate_events",
"type": "n8n-nodes-base.aggregate",
"position": [
2320,
-40
],
"parameters": {
"options": {},
"aggregate": "aggregateAllItemData",
"destinationFieldName": "eventdata"
},
"typeVersion": 1
},
{
"id": "bb2804c2-130e-4d53-9eac-cb4f978056d1",
"name": "Haftnotiz",
"type": "n8n-nodes-base.stickyNote",
"position": [
-360,
-1100
],
"parameters": {
"color": 3,
"width": 960,
"height": 520,
"content": "### Workflow Overview: Google Calendar Coming Week 🗓️➡️📧\n\nThis n8n workflow automates the process of generating and emailing a summary of your upcoming week's Google Calendar events.\n\n**How it works:**\n1. **Triggers weekly:** Starts automatically based on a schedule.\n2. **Sets user context:** Configures your locale, timezone, name, and city.\n3. **Calculates date ranges:** Determines the start and end dates for the upcoming week.\n4. **Fetches calendar events:** Retrieves events from your specified Google Calendar for that week.\n5. **Simplifies data:** Removes unnecessary information from the event data.\n6. **Aggregates events:** Combines all events into a single list for AI processing.\n7. **Generates summary:** Uses Google Gemini AI to create a human-readable summary, highlighting important events.\n8. **Formats for email:** Converts the AI's summary from Markdown to HTML.\n9. **Sends email:** Emails the formatted summary to you.\n\n**Key User Actions:**\n* Configure the **`locale`** node with your specific details (timezone, locale, name, city).\n* Set up credentials for **Google Calendar**, **Google Gemini**, and your **SMTP (Email)** service.\n* Specify your target Google Calendar ID in the **`get_next_weeks_events`** node.\n* Update the \"To\" and \"From\" email addresses in the **`send_email`** node."
},
"typeVersion": 1
},
{
"id": "4e8a4adb-fde7-403d-968e-7d15c2fbe770",
"name": "Haftnotiz2",
"type": "n8n-nodes-base.stickyNote",
"position": [
140,
-400
],
"parameters": {
"color": 4,
"width": 440,
"height": 400,
"content": "⚙️ **locale (Set)**\n\n* **Purpose:** Defines essential user-specific settings for personalization and correct date/time processing.\n* **‼️ USER ACTION REQUIRED ‼️:**\n * `users-locale`: (e.g., `en-AU`, `en-US`, `de-DE`) - Affects date/time/number formatting.\n * `users-timezone`: (e.g., `Australia/Sydney`, `America/New_York`) - Crucial for accurate event times.\n * `users-name`: (e.g., `Bob`) - Used in the email greeting.\n * `users-home-city`: (e.g., `Sydney`) - Provides context for the AI.\n* **Note:** These values are used by downstream nodes."
},
"typeVersion": 1
},
{
"id": "a409ad6d-56be-4b3c-a1e3-b2b3e2c00b63",
"name": "Haftnotiz3",
"type": "n8n-nodes-base.stickyNote",
"position": [
-360,
-400
],
"parameters": {
"color": 4,
"width": 440,
"height": 400,
"content": "🗓️ **weekly_schedule (Trigger)**\n\n* **Purpose:** Initiates the workflow automatically.\n* **Details:** By default, runs once a week at 12:00 PM.\n* **To Modify:** Adjust the \"Rule\" settings (interval, time, day) if you need a different schedule."
},
"typeVersion": 1
},
{
"id": "714b924c-4cbc-4864-b833-e80b3dcecde8",
"name": "Haftnotiz4",
"type": "n8n-nodes-base.stickyNote",
"position": [
640,
-400
],
"parameters": {
"color": 4,
"width": 440,
"height": 400,
"content": "⏰ **date_time (Set)**\n\n* **Purpose:** Generates various date and time strings based on the current execution time and the settings from the `locale` node.\n* **Details:** Creates values like \"users-current-date\", \"users-current-day-1-minute-before-midnight-iso\", etc., which are used to define the 7-day window for fetching calendar events.\n* **To Modify:** Usually no changes needed here; it's dynamic."
},
"typeVersion": 1
},
{
"id": "a31c71e7-98c8-4185-891e-9543ceac217d",
"name": "Haftnotiz5",
"type": "n8n-nodes-base.stickyNote",
"position": [
1140,
-400
],
"parameters": {
"color": 4,
"width": 440,
"height": 400,
"content": "📅 **get_next_weeks_events (Google Calendar)**\n\n* **Purpose:** Fetches events from a specified Google Calendar.\n* **Details:** Uses `timeMin` and `timeMax` from the `date-time` node to get events for the upcoming 7 days.\n* **‼️ USER ACTION REQUIRED ‼️:**\n 1. **Credentials:** Connect your Google Calendar account.\n 2. **Calendar ID:** Change the `calendar` parameter (currently `c_4d9...group.calendar.google.com`) to *your* desired Google Calendar ID."
},
"typeVersion": 1
},
{
"id": "5e5830c6-9e43-43c7-852e-b9982f6deb6b",
"name": "date_time",
"type": "n8n-nodes-base.set",
"position": [
820,
-40
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "954044f7-3c08-48c2-af9c-59a72690ad76",
"name": "users-current-date",
"type": "string",
"value": "={{\n $now.setZone($('locale').item.json['users-timezone'] ?? 'UTC').setLocale($('locale').item.json['users-locale'] ?? 'en-US').toLocaleString(DateTime.DATE_FULL)\n}}"
},
{
"id": "2c3a0a1a-cc05-4b5d-b175-20732706aefb",
"name": "users-current-time",
"type": "string",
"value": "={{ $now.setZone($('locale').item.json['users-timezone'] ?? 'UTC').setLocale($('locale').item.json['users-locale'] ?? 'en-US').toLocaleString(DateTime.TIME_SIMPLE) }}"
},
{
"id": "764b3b1a-6a6e-4b92-8f41-ae49405bc72a",
"name": "users-date-time",
"type": "string",
"value": "={{ $now.setZone($('locale').item.json['users-timezone']) }}"
},
{
"id": "4c2851ef-175e-4f81-95af-5671171fdf16",
"name": "users-date-time-full",
"type": "string",
"value": "={{ $now.setZone($('locale').item.json['users-timezone'] ?? 'UTC').setLocale($('locale').item.json['users-locale'] ?? 'en-US').toLocaleString(DateTime.DATETIME_FULL) }}"
},
{
"id": "4ae2c38b-f93a-4b56-9078-d9675a12ec8b",
"name": "users-date-time-huge",
"type": "string",
"value": "={{ $now.setZone($('locale').item.json['users-timezone'] ?? 'UTC').setLocale($('locale').item.json['users-locale'] ?? 'en-US').toFormat('cccc, MMMM d, yyyy, h:mm a') }}"
},
{
"id": "1011c2bf-d311-424d-8537-1788597065d4",
"name": "users-current-date-plus-1",
"type": "string",
"value": "={{ $now.plus({ days: 1 }).setZone($('locale').item.json['users-timezone'] ?? 'UTC').setLocale($('locale').item.json['users-locale'] ?? 'en-US').toLocaleString(DateTime.DATE_FULL) }}"
},
{
"id": "343ec7d5-fcb5-454d-b947-4b0f2e94f930",
"name": "users-current-date-plus-7",
"type": "string",
"value": "={{ $now.plus({ days: 7 }).setZone($('locale').item.json['users-timezone'] ?? 'UTC').setLocale($('locale').item.json['users-locale'] ?? 'en-US').toLocaleString(DateTime.DATE_FULL) }}"
},
{
"id": "ce0de19d-9cb1-4918-ade5-47f22f35f8e8",
"name": "users-current-day-1-minute-before-midnight",
"type": "string",
"value": "={{\n $now.setZone($('locale').item.json['users-timezone'] ?? 'UTC')\n .endOf('day')\n .setLocale($('locale').item.json['users-locale'] ?? 'en-US')\n .toLocaleString(DateTime.DATETIME_FULL)\n}}"
},
{
"id": "800dff91-469d-4a2b-acb0-a0b79d0b9341",
"name": "users-current-day-1-minute-before-midnight-plus-7-days",
"type": "string",
"value": "={{ $now.setZone($('locale').item.json['users-timezone'] ?? 'UTC') .plus({ days: 7 }) .endOf('day') .setLocale($('locale').item.json['users-locale'] ?? 'en-US') .toLocaleString(DateTime.DATETIME_FULL) }}"
},
{
"id": "d04c43fe-1f6d-4e7e-b82f-70cebb7484a6",
"name": "users-current-day-1-minute-before-midnight-iso",
"type": "string",
"value": "={{\n $now.setZone($('locale').item.json['users-timezone'] ?? 'UTC')\n .endOf('day')\n .toISO()\n}}"
},
{
"id": "5aee9416-0ad6-43b9-936f-edce6a292cce",
"name": "users-current-day-1-minute-before-midnight-plus-7-days-iso",
"type": "string",
"value": "={{ $now.setZone($('locale').item.json['users-timezone'] ?? 'UTC') .plus({ days: 7 }) .endOf('day') .toISO() }}"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "f20a83fd-2484-4dc7-92a1-a438c2cf8e02",
"name": "Haftnotiz6",
"type": "n8n-nodes-base.stickyNote",
"position": [
1640,
-400
],
"parameters": {
"color": 4,
"width": 440,
"height": 400,
"content": "✨ **simplify_evens_json (Code)**\n\n* **Purpose:** Cleans the raw event data from Google Calendar.\n* **Details:** Runs JavaScript to remove fields like `htmlLink`, `etag`, `iCalUID`, etc., to provide a cleaner dataset to the AI.\n* **To Modify:** Only if you need to keep or remove specific event fields not covered."
},
"typeVersion": 1
},
{
"id": "c5e40e35-8dfa-491c-ba67-21b83f71334b",
"name": "Haftnotiz7",
"type": "n8n-nodes-base.stickyNote",
"position": [
2140,
-400
],
"parameters": {
"color": 4,
"width": 440,
"height": 400,
"content": "➕ **aggregate_events (Aggregate)**\n\n* **Purpose:** Combines all individual simplified event items into a single JSON array.\n* **Details:** Creates a field named `eventdata` which contains the list of all events. This is necessary for the AI agent to process all events at once.\n* **To Modify:** Usually no changes needed."
},
"typeVersion": 1
},
{
"id": "db11c407-a238-48ef-9398-1842c1046340",
"name": "Haftnotiz8",
"type": "n8n-nodes-base.stickyNote",
"position": [
2640,
220
],
"parameters": {
"color": 6,
"width": 440,
"height": 400,
"content": "🧠 **Google Gemini (Language Model)**\n\n* **Purpose:** Establishes the connection to the Google Gemini AI model.\n* **Details:** This node itself doesn't do the processing but provides the AI capability to the `event_summary_agent`.\n* **‼️ USER ACTION REQUIRED ‼️:**\n * **Credentials:** Set up and select your Google Gemini (PaLM) API credentials.\n * **Model Name:** Default is `models/gemini-2.5-flash-preview-05-20`. Change if needed."
},
"typeVersion": 1
},
{
"id": "692413bc-58f9-4d09-a7f7-796d50894e3b",
"name": "Haftnotiz9",
"type": "n8n-nodes-base.stickyNote",
"position": [
3140,
-400
],
"parameters": {
"color": 4,
"width": 440,
"height": 400,
"content": "📄➡️🌐 **markdown_to_html (Converter)**\n\n* **Purpose:** Converts the Markdown text generated by the `event_summary_agent` into HTML.\n* **Details:** Ensures the email body is well-formatted (line breaks, bolding, lists, emojis).\n* **To Modify:** Usually no changes needed. Options like `emoji` and `simpleLineBreaks` are enabled."
},
"typeVersion": 1
},
{
"id": "d2803020-1f12-4207-a9c3-678fbb472daf",
"name": "Haftnotiz10",
"type": "n8n-nodes-base.stickyNote",
"position": [
3640,
-400
],
"parameters": {
"color": 4,
"width": 440,
"height": 400,
"content": "📧 **send_email (Email)**\n\n* **Purpose:** Sends the final HTML summary as an email.\n* **Details:** Uses the HTML output from the `Markdown` node as the email body. The subject is dynamically generated.\n* **‼️ USER ACTION REQUIRED ‼️:**\n 1. **Credentials:** Configure and select your SMTP (email sending) account.\n 2. `fromEmail`: Set your desired sender email address.\n 3. `toEmail`: Set the recipient email address(es).\n * **To Modify (Optional):** Customize the `subject` line format."
},
"typeVersion": 1
},
{
"id": "73c88ce5-9fa6-418f-b4cc-0b646f5708e7",
"name": "Haftnotiz11",
"type": "n8n-nodes-base.stickyNote",
"position": [
2640,
-400
],
"parameters": {
"color": 4,
"width": 440,
"height": 400,
"content": "🤖 **event_summary_agent (AI Agent)**\n\n* **Purpose:** Generates a well-formatted weekly schedule summary using the AI model.\n* **Details:** Takes the `eventdata` (from `aggregate_events`) and a detailed prompt (under \"System Message\") that instructs the AI on output structure, date formatting, priority event identification, and weekly insights.\n* **To Modify:** The \"System Message\" can be tweaked to change:\n * Greeting style.\n * Date/time formats (though largely controlled by `locale`).\n * Keywords for \"IMPORTANT\" events (`urgent`, `deadline`, etc.).\n * The style or focus of the \"Weekly Insight.\""
},
"typeVersion": 1
},
{
"id": "6febb866-888c-4e72-a6b8-296a826b7e66",
"name": "markdown_to_html",
"type": "n8n-nodes-base.markdown",
"position": [
3320,
-40
],
"parameters": {
"mode": "markdownToHtml",
"options": {
"emoji": true,
"simpleLineBreaks": true
},
"markdown": "={{ $json.output }}",
"destinationKey": "email-html"
},
"typeVersion": 1
}
],
"active": false,
"pinData": {},
"settings": {
"executionOrder": "v1"
},
"versionId": "db6385a3-bd01-4cc0-be20-cb1388b31cdc",
"connections": {
"9199043b-2255-4a29-9c76-e6edbda41cc5": {
"main": [
[
{
"node": "5e5830c6-9e43-43c7-852e-b9982f6deb6b",
"type": "main",
"index": 0
}
]
]
},
"5e5830c6-9e43-43c7-852e-b9982f6deb6b": {
"main": [
[
{
"node": "57a88176-a291-4d65-bfd2-868d4e50befb",
"type": "main",
"index": 0
}
]
]
},
"ed2eacbb-453f-4e5b-be3a-0c45e3506e1b": {
"ai_languageModel": [
[
{
"node": "20670d58-0c0a-4f17-9a89-131bb2cd2caa",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"b4c54286-a4c5-4a1b-87ca-a37fa1fcb2aa": {
"main": [
[
{
"node": "9199043b-2255-4a29-9c76-e6edbda41cc5",
"type": "main",
"index": 0
}
]
]
},
"c3639753-7b59-40ea-b59b-32dc00769146": {
"main": [
[
{
"node": "20670d58-0c0a-4f17-9a89-131bb2cd2caa",
"type": "main",
"index": 0
}
]
]
},
"6febb866-888c-4e72-a6b8-296a826b7e66": {
"main": [
[
{
"node": "99885550-0c81-4513-86f0-8e82b0d5e0fb",
"type": "main",
"index": 0
}
]
]
},
"20670d58-0c0a-4f17-9a89-131bb2cd2caa": {
"main": [
[
{
"node": "6febb866-888c-4e72-a6b8-296a826b7e66",
"type": "main",
"index": 0
}
]
]
},
"b92e0c62-d83f-417d-9ed1-839b3f680edd": {
"main": [
[
{
"node": "c3639753-7b59-40ea-b59b-32dc00769146",
"type": "main",
"index": 0
}
]
]
},
"57a88176-a291-4d65-bfd2-868d4e50befb": {
"main": [
[
{
"node": "b92e0c62-d83f-417d-9ed1-839b3f680edd",
"type": "main",
"index": 0
}
]
]
}
}
}Wie verwende ich diesen Workflow?
Kopieren Sie den obigen JSON-Code, erstellen Sie einen neuen Workflow in Ihrer n8n-Instanz und wählen Sie "Aus JSON importieren". Fügen Sie die Konfiguration ein und passen Sie die Anmeldedaten nach Bedarf an.
Für welche Szenarien ist dieser Workflow geeignet?
Experte - Sonstiges, Künstliche Intelligenz
Ist es kostenpflichtig?
Dieser Workflow ist völlig kostenlos. Beachten Sie jedoch, dass Drittanbieterdienste (wie OpenAI API), die im Workflow verwendet werden, möglicherweise kostenpflichtig sind.
Verwandte Workflows
Jez
@jezI'm passionate about combining traditional web development with AI and automation to create impactful online solutions. As Founder & CEO of Jezweb, an award-winning Newcastle, Australia agency, I lead a 30+ person team delivering high-quality web design, development, and hosting services to over 3000 clients.
Diesen Workflow teilen