From 7d6e4e222271b4e8da24444ce2d068bf027756fc Mon Sep 17 00:00:00 2001 From: Praveen Mudalgeri Date: Tue, 12 Aug 2025 14:29:36 +0530 Subject: [PATCH] refactor: merge categorization scripts Merge the logic from categorize_workflows.py into create_categories.py to simplify the categorization process. The categorize_workflows.py script is now deleted. --- categorize_workflows.py | 216 ------------------- context/search_categories.json | 366 ++++++++++++++++----------------- create_categories.py | 104 +++++++++- import_workflows.py | 42 ++++ 4 files changed, 328 insertions(+), 400 deletions(-) delete mode 100644 categorize_workflows.py diff --git a/categorize_workflows.py b/categorize_workflows.py deleted file mode 100644 index 1aeff68..0000000 --- a/categorize_workflows.py +++ /dev/null @@ -1,216 +0,0 @@ -#!/usr/bin/env python3 -""" -Script to categorize uncategorized n8n workflows based on filename patterns. -This will help reduce the count of uncategorized workflows. -""" - -import json -from collections import defaultdict - -def load_categories(): - """Load the search categories file.""" - with open('context/search_categories.json', 'r', encoding='utf-8') as f: - return json.load(f) - -def load_unique_categories(): - """Load the unique categories list.""" - with open('context/unique_categories.json', 'r', encoding='utf-8') as f: - return json.load(f) - -def categorize_by_filename(filename): - """ - Categorize workflow based on filename patterns. - Returns the most likely category or None if uncertain. - """ - filename_lower = filename.lower() - - # Security & Authentication - if any(word in filename_lower for word in ['totp', 'bitwarden', 'auth', 'security']): - return "Technical Infrastructure & DevOps" - - # Data Processing & File Operations - if any(word in filename_lower for word in ['process', 'writebinaryfile', 'readbinaryfile', 'extractfromfile', 'converttofile']): - return "Data Processing & Analysis" - - # Utility & Business Process Automation - if any(word in filename_lower for word in ['noop', 'code', 'schedule', 'filter', 'splitout', 'wait', 'limit', 'aggregate']): - return "Business Process Automation" - - # Webhook & API related - if any(word in filename_lower for word in ['webhook', 'respondtowebhook', 'http']): - return "Web Scraping & Data Extraction" - - # Form & Data Collection - if any(word in filename_lower for word in ['form', 'typeform', 'jotform']): - return "Data Processing & Analysis" - - # Local file operations - if any(word in filename_lower for word in ['localfile', 'filemaker']): - return "Cloud Storage & File Management" - - # Database operations - if any(word in filename_lower for word in ['postgres', 'mysql', 'mongodb', 'redis', 'elasticsearch', 'snowflake']): - return "Data Processing & Analysis" - - # AI & Machine Learning - if any(word in filename_lower for word in ['openai', 'awstextract', 'awsrekognition', 'humanticai', 'openthesaurus']): - return "AI Agent Development" - - # E-commerce specific - if any(word in filename_lower for word in ['woocommerce', 'gumroad']): - return "E-commerce & Retail" - - # Social media specific - if any(word in filename_lower for word in ['facebook', 'linkedin', 'instagram']): - return "Social Media Management" - - # Customer support - if any(word in filename_lower for word in ['zendesk', 'intercom', 'drift', 'pagerduty']): - return "Communication & Messaging" - - # Analytics & Tracking - if any(word in filename_lower for word in ['googleanalytics', 'segment', 'mixpanel']): - return "Data Processing & Analysis" - - # Development tools - if any(word in filename_lower for word in ['git', 'github', 'gitlab', 'travisci', 'jenkins']): - return "Technical Infrastructure & DevOps" - - # CRM & Sales tools - if any(word in filename_lower for word in ['pipedrive', 'hubspot', 'salesforce', 'copper', 'orbit']): - return "CRM & Sales" - - # Marketing tools - if any(word in filename_lower for word in ['mailchimp', 'convertkit', 'sendgrid', 'mailerlite', 'lemlist']): - return "Marketing & Advertising Automation" - - # Project management - if any(word in filename_lower for word in ['asana', 'mondaycom', 'clickup', 'trello', 'notion']): - return "Project Management" - - # Communication - if any(word in filename_lower for word in ['slack', 'telegram', 'discord', 'mattermost', 'twilio']): - return "Communication & Messaging" - - # Cloud storage - if any(word in filename_lower for word in ['dropbox', 'googledrive', 'onedrive', 'awss3']): - return "Cloud Storage & File Management" - - # Creative tools - if any(word in filename_lower for word in ['canva', 'figma', 'bannerbear', 'editimage']): - return "Creative Design Automation" - - # Video & content - if any(word in filename_lower for word in ['youtube', 'vimeo', 'storyblok', 'strapi']): - return "Creative Content & Video Automation" - - # Financial tools - if any(word in filename_lower for word in ['stripe', 'chargebee', 'quickbooks', 'harvest']): - return "Financial & Accounting" - - # Weather & external APIs - if any(word in filename_lower for word in ['openweathermap', 'nasa', 'crypto', 'coingecko']): - return "Web Scraping & Data Extraction" - - return None - -def main(): - """Main function to categorize workflows.""" - print("Loading workflow categories...") - workflows = load_categories() - unique_categories = load_unique_categories() - - print(f"Total workflows: {len(workflows)}") - - # Count current categories - category_counts = defaultdict(int) - uncategorized_count = 0 - - for workflow in workflows: - if workflow['category']: - category_counts[workflow['category']] += 1 - else: - uncategorized_count += 1 - - print(f"\nCurrent category distribution:") - for category, count in sorted(category_counts.items()): - print(f" {category}: {count}") - print(f" Uncategorized: {uncategorized_count}") - - # Identify uncategorized workflows - uncategorized_workflows = [w for w in workflows if not w['category']] - - print(f"\nAnalyzing {len(uncategorized_workflows)} uncategorized workflows...") - - # Categorize based on filename patterns - suggested_categories = {} - uncertain_workflows = [] - - for workflow in uncategorized_workflows: - filename = workflow['filename'] - suggested_category = categorize_by_filename(filename) - - if suggested_category: - suggested_categories[filename] = suggested_category - else: - uncertain_workflows.append(filename) - - print(f"\nSuggested categorizations: {len(suggested_categories)}") - print(f"Still uncertain: {len(uncategorized_workflows)}") - - # Show suggested categorizations - if suggested_categories: - print("\nSuggested categorizations:") - for filename, category in sorted(suggested_categories.items()): - print(f" {filename} → {category}") - - # Show uncertain workflows - if uncertain_workflows: - print(f"\nWorkflows that need manual review:") - for filename in sorted(uncertain_workflows): - print(f" {filename}") - - # Calculate potential improvement - potential_categorized = len(suggested_categories) - new_uncategorized_count = uncategorized_count - potential_categorized - - print(f"\nPotential improvement:") - print(f" Current uncategorized: {uncategorized_count}") - print(f" After auto-categorization: {new_uncategorized_count}") - print(f" Reduction: {potential_categorized} workflows ({potential_categorized/uncategorized_count*100:.1f}%)") - - # Ask if user wants to apply suggestions - if suggested_categories: - response = input(f"\nWould you like to apply these {len(suggested_categories)} suggested categorizations? (y/n): ") - - if response.lower() in ['y', 'yes']: - # Apply the categorizations - for workflow in workflows: - if workflow['filename'] in suggested_categories: - workflow['category'] = suggested_categories[workflow['filename']] - - # Save the updated file - with open('context/search_categories.json', 'w', encoding='utf-8') as f: - json.dump(workflows, f, indent=2, ensure_ascii=False) - - print("✅ Categorizations applied and saved!") - - # Show new distribution - new_category_counts = defaultdict(int) - new_uncategorized_count = 0 - - for workflow in workflows: - if workflow['category']: - new_category_counts[workflow['category']] += 1 - else: - new_uncategorized_count += 1 - - print(f"\nNew category distribution:") - for category, count in sorted(new_category_counts.items()): - print(f" {category}: {count}") - print(f" Uncategorized: {new_uncategorized_count}") - else: - print("No changes applied.") - -if __name__ == "__main__": - main() \ No newline at end of file diff --git a/context/search_categories.json b/context/search_categories.json index b3973d1..d87f12d 100644 --- a/context/search_categories.json +++ b/context/search_categories.json @@ -197,11 +197,11 @@ }, { "filename": "0050_Uptimerobot_Automate.json", - "category": "" + "category": "Technical Infrastructure & DevOps" }, { "filename": "0051_Manual_Microsofttodo_Automate_Triggered.json", - "category": "" + "category": "Project Management" }, { "filename": "0052_Manual_Git_Automate_Triggered.json", @@ -277,7 +277,7 @@ }, { "filename": "0070_Splitinbatches_Notion_Export_Scheduled.json", - "category": "Business Process Automation" + "category": "Data Processing & Analysis" }, { "filename": "0071_Pipedrive_Update_Triggered.json", @@ -289,7 +289,7 @@ }, { "filename": "0073_Manual_Rssfeedread_Automate_Triggered.json", - "category": "" + "category": "Web Scraping & Data Extraction" }, { "filename": "0074_Manual_HTTP_Monitor_Webhook.json", @@ -509,7 +509,7 @@ }, { "filename": "0128_Manual_N8Ntrainingcustomerdatastore_Automation_Webhook.json", - "category": "Web Scraping & Data Extraction" + "category": "Business Process Automation" }, { "filename": "0129_HubSpot_Cron_Update_Scheduled.json", @@ -585,7 +585,7 @@ }, { "filename": "0147_Toggl_Create_Triggered.json", - "category": "" + "category": "Project Management" }, { "filename": "0148_Awstextract_Telegram_Automate_Triggered.json", @@ -649,7 +649,7 @@ }, { "filename": "0163_Respondtowebhook_Spreadsheetfile_Automate_Webhook.json", - "category": "Web Scraping & Data Extraction" + "category": "Data Processing & Analysis" }, { "filename": "0164_Crypto_Webhook_Automate_Webhook.json", @@ -697,7 +697,7 @@ }, { "filename": "0175_Manual_Sendy_Create_Triggered.json", - "category": "" + "category": "Marketing & Advertising Automation" }, { "filename": "0176_Slack_Onfleet_Send_Triggered.json", @@ -821,7 +821,7 @@ }, { "filename": "0206_Manual_Stickynote_Automation_Webhook.json", - "category": "Web Scraping & Data Extraction" + "category": "Business Process Automation" }, { "filename": "0207_Manual_Slack_Create_Webhook.json", @@ -861,7 +861,7 @@ }, { "filename": "0216_Manual_N8Ntrainingcustomerdatastore_Automation_Triggered.json", - "category": "" + "category": "Business Process Automation" }, { "filename": "0217_Manual_Ghost_Create_Triggered.json", @@ -901,15 +901,15 @@ }, { "filename": "0226_Manual_Stickynote_Update_Triggered.json", - "category": "" + "category": "Business Process Automation" }, { "filename": "0227_Manual_N8Ntrainingcustomerdatastore_Automate_Triggered.json", - "category": "" + "category": "Business Process Automation" }, { "filename": "0228_Manual_Stickynote_Automate_Triggered.json", - "category": "" + "category": "Business Process Automation" }, { "filename": "0229_Manual_HTTP_Create_Webhook.json", @@ -925,11 +925,11 @@ }, { "filename": "0232_Respondtowebhook_Stickynote_Create_Webhook.json", - "category": "Web Scraping & Data Extraction" + "category": "Business Process Automation" }, { "filename": "0233_Manual_N8Ntrainingcustomerdatastore_Create_Triggered.json", - "category": "" + "category": "Business Process Automation" }, { "filename": "0234_GoogleSheets_Cron_Create_Scheduled.json", @@ -1041,7 +1041,7 @@ }, { "filename": "0261_Manual_Googlefirebasecloudfirestore_Create_Triggered.json", - "category": "" + "category": "Data Processing & Analysis" }, { "filename": "0262_Typeform_Spreadsheetfile_Automate_Triggered.json", @@ -1121,7 +1121,7 @@ }, { "filename": "0281_Stickynote_Notion_Create_Webhook.json", - "category": "Web Scraping & Data Extraction" + "category": "Business Process Automation" }, { "filename": "0282_Clickup_Notion_Update_Triggered.json", @@ -1165,7 +1165,7 @@ }, { "filename": "0292_Manual_Stickynote_Export_Triggered.json", - "category": "" + "category": "Business Process Automation" }, { "filename": "0293_Manual_Woocommerce_Create_Triggered.json", @@ -1205,15 +1205,15 @@ }, { "filename": "0302_Manual_N8Ntrainingcustomerdatastore_Automate_Triggered.json", - "category": "" + "category": "Business Process Automation" }, { "filename": "0303_Manual_Stickynote_Export_Triggered.json", - "category": "" + "category": "Business Process Automation" }, { "filename": "0304_Manual_Stickynote_Automation_Webhook.json", - "category": "Web Scraping & Data Extraction" + "category": "Business Process Automation" }, { "filename": "0305_Manual_Telegram_Create_Triggered.json", @@ -1257,7 +1257,7 @@ }, { "filename": "0315_Manual_Comparedatasets_Automate_Triggered.json", - "category": "" + "category": "Data Processing & Analysis" }, { "filename": "0316_Datetime_Schedule_Create_Webhook.json", @@ -1281,7 +1281,7 @@ }, { "filename": "0321_Manual_Stickynote_Automate_Triggered.json", - "category": "" + "category": "Business Process Automation" }, { "filename": "0322_Splitout_Code_Send_Triggered.json", @@ -1293,7 +1293,7 @@ }, { "filename": "0324_Manual_Stickynote_Update_Triggered.json", - "category": "" + "category": "Business Process Automation" }, { "filename": "0325_Stickynote_Send_Triggered.json", @@ -1345,11 +1345,11 @@ }, { "filename": "0337_Manual_Stickynote_Automation_Webhook.json", - "category": "Web Scraping & Data Extraction" + "category": "Business Process Automation" }, { "filename": "0338_Manual_Stickynote_Export_Webhook.json", - "category": "Web Scraping & Data Extraction" + "category": "Business Process Automation" }, { "filename": "0339_Splitout_Code_Update_Webhook.json", @@ -1469,7 +1469,7 @@ }, { "filename": "0368_Stickynote_Webhook_Automate_Webhook.json", - "category": "Web Scraping & Data Extraction" + "category": "Business Process Automation" }, { "filename": "0369_Manual_Airtable_Automation_Triggered.json", @@ -1505,11 +1505,11 @@ }, { "filename": "0377_Manual_Stickynote_Update_Triggered.json", - "category": "" + "category": "Business Process Automation" }, { "filename": "0378_Stickynote_Notion_Automate_Webhook.json", - "category": "Web Scraping & Data Extraction" + "category": "Business Process Automation" }, { "filename": "0379_Code_Pipedrive_Create_Triggered.json", @@ -1593,7 +1593,7 @@ }, { "filename": "0399_Manual_Stickynote_Automate_Triggered.json", - "category": "" + "category": "Business Process Automation" }, { "filename": "0400_Manual_Code_Create_Webhook.json", @@ -1817,7 +1817,7 @@ }, { "filename": "0455_Manual_Gsuiteadmin_Create_Triggered.json", - "category": "" + "category": "Technical Infrastructure & DevOps" }, { "filename": "0456_Error_Gmail_Send_Triggered.json", @@ -1913,7 +1913,7 @@ }, { "filename": "0479_Grist_Stickynote_Create_Webhook.json", - "category": "Web Scraping & Data Extraction" + "category": "Business Process Automation" }, { "filename": "0480_Aggregate_Telegram_Automate_Triggered.json", @@ -1933,7 +1933,7 @@ }, { "filename": "0484_Form_Stickynote_Automation_Webhook.json", - "category": "Web Scraping & Data Extraction" + "category": "Business Process Automation" }, { "filename": "0485_HTTP_Stickynote_Create_Webhook.json", @@ -1953,7 +1953,7 @@ }, { "filename": "0489_Manual_Debughelper_Create_Triggered.json", - "category": "" + "category": "Technical Infrastructure & DevOps" }, { "filename": "0490_Mautic_Gmail_Send_Triggered.json", @@ -2025,7 +2025,7 @@ }, { "filename": "0507_Manual_Stickynote_Automation_Webhook.json", - "category": "Web Scraping & Data Extraction" + "category": "Business Process Automation" }, { "filename": "0508_Converttofile_Manual_Process_Triggered.json", @@ -2033,7 +2033,7 @@ }, { "filename": "0509_Manual_Stickynote_Automation_Webhook.json", - "category": "Web Scraping & Data Extraction" + "category": "Business Process Automation" }, { "filename": "0510_HTTP_Schedule_Automation_Webhook.json", @@ -2049,11 +2049,11 @@ }, { "filename": "0513_Manual_Stickynote_Automation_Webhook.json", - "category": "Web Scraping & Data Extraction" + "category": "Business Process Automation" }, { "filename": "0514_Manual_Stickynote_Automation_Webhook.json", - "category": "Web Scraping & Data Extraction" + "category": "Business Process Automation" }, { "filename": "0515_Manual_HTTP_Automation_Webhook.json", @@ -2081,11 +2081,11 @@ }, { "filename": "0521_Manual_Stickynote_Automation_Webhook.json", - "category": "Web Scraping & Data Extraction" + "category": "Business Process Automation" }, { "filename": "0522_Manual_Stickynote_Automation_Webhook.json", - "category": "Web Scraping & Data Extraction" + "category": "Business Process Automation" }, { "filename": "0523_Wait_Splitout_Create_Webhook.json", @@ -2157,11 +2157,11 @@ }, { "filename": "0540_Manual_Stickynote_Automation_Webhook.json", - "category": "Web Scraping & Data Extraction" + "category": "Business Process Automation" }, { "filename": "0541_Manual_Stickynote_Update_Triggered.json", - "category": "" + "category": "Business Process Automation" }, { "filename": "0542_Wait_Redis_Create_Triggered.json", @@ -2169,7 +2169,7 @@ }, { "filename": "0543_Manual_N8N_Export_Triggered.json", - "category": "" + "category": "Business Process Automation" }, { "filename": "0544_Gmail_GoogleDrive_Create_Triggered.json", @@ -2229,7 +2229,7 @@ }, { "filename": "0558_Manual_Stickynote_Automation_Triggered.json", - "category": "" + "category": "Business Process Automation" }, { "filename": "0559_HTTP_Webhook_Create_Webhook.json", @@ -2253,7 +2253,7 @@ }, { "filename": "0564_Supabase_Stickynote_Create_Triggered.json", - "category": "" + "category": "Data Processing & Analysis" }, { "filename": "0565_Webhook_Slack_Automation_Webhook.json", @@ -2293,7 +2293,7 @@ }, { "filename": "0574_Stickynote_Notion_Create_Triggered.json", - "category": "Project Management" + "category": "Business Process Automation" }, { "filename": "0575_Editimage_Manual_Update_Webhook.json", @@ -2341,7 +2341,7 @@ }, { "filename": "0586_Respondtowebhook_Stickynote_Automate_Webhook.json", - "category": "Web Scraping & Data Extraction" + "category": "Business Process Automation" }, { "filename": "0587_Splitout_Filter_Send_Webhook.json", @@ -2385,7 +2385,7 @@ }, { "filename": "0597_Respondtowebhook_Stickynote_Automate_Webhook.json", - "category": "Web Scraping & Data Extraction" + "category": "Business Process Automation" }, { "filename": "0598_Code_Editimage_Update_Webhook.json", @@ -2489,7 +2489,7 @@ }, { "filename": "0623_Comparedatasets_Manual_Create_Triggered.json", - "category": "" + "category": "Data Processing & Analysis" }, { "filename": "0624_HTTP_Schedule_Send_Scheduled.json", @@ -2709,7 +2709,7 @@ }, { "filename": "0678_Manual_Stickynote_Automate_Triggered.json", - "category": "" + "category": "Business Process Automation" }, { "filename": "0679_Telegram_Splitout_Create_Webhook.json", @@ -2837,7 +2837,7 @@ }, { "filename": "0710_Manual_Stickynote_Automation_Webhook.json", - "category": "Web Scraping & Data Extraction" + "category": "Business Process Automation" }, { "filename": "0711_Schedule_Slack_Create_Scheduled.json", @@ -2905,7 +2905,7 @@ }, { "filename": "0727_Stickynote_Create_Webhook.json", - "category": "Web Scraping & Data Extraction" + "category": "Business Process Automation" }, { "filename": "0728_Manual_GoogleSheets_Update_Triggered.json", @@ -3033,7 +3033,7 @@ }, { "filename": "0759_Splitout_Comparedatasets_Create_Triggered.json", - "category": "Business Process Automation" + "category": "Data Processing & Analysis" }, { "filename": "0760_Splitout_Code_Send_Webhook.json", @@ -3077,7 +3077,7 @@ }, { "filename": "0770_Manual_Stickynote_Create_Webhook.json", - "category": "Web Scraping & Data Extraction" + "category": "Business Process Automation" }, { "filename": "0771_HTTP_Telegram_Create_Webhook.json", @@ -3141,7 +3141,7 @@ }, { "filename": "0786_Stopanderror_Stickynote_Create_Webhook.json", - "category": "Web Scraping & Data Extraction" + "category": "Business Process Automation" }, { "filename": "0787_Code_GoogleCalendar_Create_Webhook.json", @@ -3221,7 +3221,7 @@ }, { "filename": "0806_Googlebigquery_Stickynote_Automate_Triggered.json", - "category": "" + "category": "Business Process Automation" }, { "filename": "0807_Telegram_Wait_Send_Triggered.json", @@ -3441,7 +3441,7 @@ }, { "filename": "0861_Manual_Stickynote_Update_Triggered.json", - "category": "" + "category": "Business Process Automation" }, { "filename": "0862_Wait_Code_Create_Webhook.json", @@ -3541,11 +3541,11 @@ }, { "filename": "0886_Manual_Stickynote_Import_Webhook.json", - "category": "Web Scraping & Data Extraction" + "category": "Business Process Automation" }, { "filename": "0887_Manual_Stickynote_Create_Webhook.json", - "category": "Web Scraping & Data Extraction" + "category": "Business Process Automation" }, { "filename": "0888_Wait_Code_Send_Webhook.json", @@ -3569,7 +3569,7 @@ }, { "filename": "0893_Stickynote_Emailreadimap_Create.json", - "category": "" + "category": "Business Process Automation" }, { "filename": "0894_Splitout_Redis_Create_Triggered.json", @@ -3581,7 +3581,7 @@ }, { "filename": "0896_Facebookleadads_Stickynote_Automate_Triggered.json", - "category": "Social Media Management" + "category": "Business Process Automation" }, { "filename": "0897_Limit_Code_Send_Scheduled.json", @@ -3597,7 +3597,7 @@ }, { "filename": "0900_Respondtowebhook_Stickynote_Automate_Webhook.json", - "category": "Web Scraping & Data Extraction" + "category": "Business Process Automation" }, { "filename": "0901_HTTP_GoogleSheets_Automate_Webhook.json", @@ -3629,7 +3629,7 @@ }, { "filename": "0908_Manual_Stickynote_Automate_Triggered.json", - "category": "" + "category": "Business Process Automation" }, { "filename": "0909_Manual_Stickynote_Process_Triggered.json", @@ -3709,7 +3709,7 @@ }, { "filename": "0928_Manual_N8N_Automate_Triggered.json", - "category": "" + "category": "Business Process Automation" }, { "filename": "0929_Noop_Extractfromfile_Automation.json", @@ -3717,7 +3717,7 @@ }, { "filename": "0930_Manual_Spreadsheetfile_Export_Triggered.json", - "category": "" + "category": "Data Processing & Analysis" }, { "filename": "0931_Telegram_Splitout_Monitor_Scheduled.json", @@ -3729,7 +3729,7 @@ }, { "filename": "0933_Manual_Stickynote_Create_Webhook.json", - "category": "Web Scraping & Data Extraction" + "category": "Business Process Automation" }, { "filename": "0934_HTTP_Code_Automate_Webhook.json", @@ -3869,7 +3869,7 @@ }, { "filename": "0968_Postmark_Update_Triggered.json", - "category": "" + "category": "Marketing & Advertising Automation" }, { "filename": "0969_Dropbox_Manual_Automate_Webhook.json", @@ -3977,7 +3977,7 @@ }, { "filename": "0995_Manual_Mailgun_Automate_Triggered.json", - "category": "" + "category": "Marketing & Advertising Automation" }, { "filename": "0996_Manual_Hackernews_Create_Triggered.json", @@ -3993,7 +3993,7 @@ }, { "filename": "0999_Bitbucket_Automate_Triggered.json", - "category": "" + "category": "Technical Infrastructure & DevOps" }, { "filename": "1000_Manual_Travisci_Create_Triggered.json", @@ -4005,7 +4005,7 @@ }, { "filename": "1002_Acuityscheduling_Automate_Triggered.json", - "category": "" + "category": "Business Process Automation" }, { "filename": "1003_Manual_Invoiceninja_Automate_Triggered.json", @@ -4025,7 +4025,7 @@ }, { "filename": "1007_Eventbrite_Automate_Triggered.json", - "category": "" + "category": "Business Process Automation" }, { "filename": "1008_Manual_Rundeck_Automate_Triggered.json", @@ -4033,7 +4033,7 @@ }, { "filename": "1009_Calendly_Automate_Triggered.json", - "category": "" + "category": "Project Management" }, { "filename": "1010_Jotform_Automate_Triggered.json", @@ -4077,7 +4077,7 @@ }, { "filename": "1020_Surveymonkey_Automate_Triggered.json", - "category": "" + "category": "Data Processing & Analysis" }, { "filename": "1021_Manual_Zohocrm_Automate_Triggered.json", @@ -4137,7 +4137,7 @@ }, { "filename": "1035_Jira_Automate_Triggered.json", - "category": "" + "category": "Project Management" }, { "filename": "1036_Error_Twilio_Send_Triggered.json", @@ -4177,11 +4177,11 @@ }, { "filename": "1045_Manual_Renamekeys_Automate_Triggered.json", - "category": "" + "category": "Data Processing & Analysis" }, { "filename": "1046_Manual_Rssfeedread_Automate_Triggered.json", - "category": "" + "category": "Web Scraping & Data Extraction" }, { "filename": "1047_Manual_Emailsend_Send_Triggered.json", @@ -4189,7 +4189,7 @@ }, { "filename": "1048_Manual_Readpdf_Automate_Triggered.json", - "category": "" + "category": "Data Processing & Analysis" }, { "filename": "1049_Manual_Readbinaryfile_Automate_Triggered.json", @@ -4209,7 +4209,7 @@ }, { "filename": "1053_Manual_Philipshue_Automation_Triggered.json", - "category": "" + "category": "Business Process Automation" }, { "filename": "1054_Manual_Cratedb_Automate_Triggered.json", @@ -4273,7 +4273,7 @@ }, { "filename": "1069_Figma_Stickynote_Update_Triggered.json", - "category": "Creative Design Automation" + "category": "Business Process Automation" }, { "filename": "1070_Telegram_Wordpress_Create_Webhook.json", @@ -4377,7 +4377,7 @@ }, { "filename": "1095_Manual_Teams_Automate_Triggered.json", - "category": "" + "category": "Communication & Messaging" }, { "filename": "1096_Manual_Linkedin_Automation_Webhook.json", @@ -4413,11 +4413,11 @@ }, { "filename": "1104_Stickynote_Create_Triggered.json", - "category": "" + "category": "Business Process Automation" }, { "filename": "1105_Manual_Stickynote_Automation_Webhook.json", - "category": "Web Scraping & Data Extraction" + "category": "Business Process Automation" }, { "filename": "1106_GoogleSheets_Cron_Automate_Scheduled.json", @@ -4485,7 +4485,7 @@ }, { "filename": "1122_Manual_Rssfeedread_Automation_Triggered.json", - "category": "" + "category": "Web Scraping & Data Extraction" }, { "filename": "1123_Automate.json", @@ -4513,7 +4513,7 @@ }, { "filename": "1129_Wufoo_Update_Triggered.json", - "category": "" + "category": "Data Processing & Analysis" }, { "filename": "1130_Noop_Twilio_Send_Scheduled.json", @@ -4677,7 +4677,7 @@ }, { "filename": "1170_Manual_Jira_Create_Triggered.json", - "category": "" + "category": "Project Management" }, { "filename": "1171_HTTP_Cron_Automation_Scheduled.json", @@ -4729,7 +4729,7 @@ }, { "filename": "1183_Manual_Stickynote_Automation_Webhook.json", - "category": "Web Scraping & Data Extraction" + "category": "Business Process Automation" }, { "filename": "1184_Debughelper_HTTP_Create_Webhook.json", @@ -4797,7 +4797,7 @@ }, { "filename": "1200_Manual_Googletranslate_Automation_Triggered.json", - "category": "" + "category": "AI Agent Development" }, { "filename": "1201_Manual_Discourse_Automate_Triggered.json", @@ -4849,7 +4849,7 @@ }, { "filename": "1213_Gotowebinar_Automate.json", - "category": "" + "category": "Communication & Messaging" }, { "filename": "1214_Emelia_Automate.json", @@ -4873,7 +4873,7 @@ }, { "filename": "1219_Manual_Agilecrm_Create_Triggered.json", - "category": "" + "category": "CRM & Sales" }, { "filename": "1220_Airtable_Lemlist_Automate.json", @@ -4921,11 +4921,11 @@ }, { "filename": "1231_Manual_Splitinbatches_Automate_Triggered.json", - "category": "" + "category": "Data Processing & Analysis" }, { "filename": "1232_Manual_Splitinbatches_Automate_Triggered.json", - "category": "" + "category": "Data Processing & Analysis" }, { "filename": "1233_HTTP_Deepl_Automation_Webhook.json", @@ -5009,7 +5009,7 @@ }, { "filename": "1253_Stickynote_Automation_Webhook.json", - "category": "Web Scraping & Data Extraction" + "category": "Business Process Automation" }, { "filename": "1254_Extractfromfile_Form_Automate_Triggered.json", @@ -5061,7 +5061,7 @@ }, { "filename": "1266_Respondtowebhook_Stickynote_Automation_Webhook.json", - "category": "Web Scraping & Data Extraction" + "category": "Business Process Automation" }, { "filename": "1267_HTTP_Markdown_Automation_Webhook.json", @@ -5073,7 +5073,7 @@ }, { "filename": "1269_Stickynote_Automate_Triggered.json", - "category": "" + "category": "Business Process Automation" }, { "filename": "1270_Schedule_Manual_Automation_Scheduled.json", @@ -5113,7 +5113,7 @@ }, { "filename": "1279_Googledocs_Manual_Automate_Triggered.json", - "category": "" + "category": "Cloud Storage & File Management" }, { "filename": "1280_Linkedin_Telegram_Automation_Scheduled.json", @@ -5137,7 +5137,7 @@ }, { "filename": "1285_Manual_Stickynote_Import_Triggered.json", - "category": "" + "category": "Business Process Automation" }, { "filename": "1286_Code_Manual_Automation_Triggered.json", @@ -5209,7 +5209,7 @@ }, { "filename": "1303_Manual_Stickynote_Create_Triggered.json", - "category": "" + "category": "Business Process Automation" }, { "filename": "1304_Telegram_Code_Monitor_Webhook.json", @@ -5241,7 +5241,7 @@ }, { "filename": "1311_Respondtowebhook_Stickynote_Automation_Webhook.json", - "category": "Web Scraping & Data Extraction" + "category": "Business Process Automation" }, { "filename": "1312_Wait_Schedule_Create_Webhook.json", @@ -5253,7 +5253,7 @@ }, { "filename": "1314_Manual_Stickynote_Automation_Webhook.json", - "category": "Web Scraping & Data Extraction" + "category": "Business Process Automation" }, { "filename": "1315_Telegram_Gmailtool_Automation_Triggered.json", @@ -5261,7 +5261,7 @@ }, { "filename": "1316_Form_Stickynote_Automation_Webhook.json", - "category": "Web Scraping & Data Extraction" + "category": "Business Process Automation" }, { "filename": "1317_Code_Schedule_Export_Scheduled.json", @@ -5273,7 +5273,7 @@ }, { "filename": "1319_Manual_Stickynote_Automation_Triggered.json", - "category": "" + "category": "Business Process Automation" }, { "filename": "1320_Code_Schedule_Automate_Webhook.json", @@ -5437,7 +5437,7 @@ }, { "filename": "1360_Manual_Stickynote_Create_Triggered.json", - "category": "" + "category": "Business Process Automation" }, { "filename": "1361_GoogleCalendar_Webhook_Create_Webhook.json", @@ -5489,7 +5489,7 @@ }, { "filename": "1373_Manual_Stickynote_Automation_Webhook.json", - "category": "Web Scraping & Data Extraction" + "category": "Business Process Automation" }, { "filename": "1374_Aggregate_Stickynote_Create_Triggered.json", @@ -5513,7 +5513,7 @@ }, { "filename": "1379_Stickynote_Automation_Triggered.json", - "category": "" + "category": "Business Process Automation" }, { "filename": "1380_Telegram_Code_Automate_Triggered.json", @@ -5545,7 +5545,7 @@ }, { "filename": "1387_Respondtowebhook_Stickynote_Automation_Webhook.json", - "category": "Web Scraping & Data Extraction" + "category": "Business Process Automation" }, { "filename": "1388_Splitout_Redis_Automation_Webhook.json", @@ -5557,7 +5557,7 @@ }, { "filename": "1390_Manual_Stickynote_Automation_Webhook.json", - "category": "Web Scraping & Data Extraction" + "category": "Business Process Automation" }, { "filename": "1391_Code_Respondtowebhook_Create_Webhook.json", @@ -5585,7 +5585,7 @@ }, { "filename": "1397_Manual_Stickynote_Automation_Triggered.json", - "category": "" + "category": "Business Process Automation" }, { "filename": "1398_Splitout_Code_Automation_Webhook.json", @@ -5685,7 +5685,7 @@ }, { "filename": "1422_Manual_Stickynote_Automation_Webhook.json", - "category": "Web Scraping & Data Extraction" + "category": "Business Process Automation" }, { "filename": "1423_Code_Editimage_Automation_Webhook.json", @@ -5777,7 +5777,7 @@ }, { "filename": "1445_Manual_Stickynote_Automation_Webhook.json", - "category": "Web Scraping & Data Extraction" + "category": "Business Process Automation" }, { "filename": "1446_Code_Schedule_Automate_Scheduled.json", @@ -5861,11 +5861,11 @@ }, { "filename": "1466_Respondtowebhook_Stickynote_Automation_Webhook.json", - "category": "Web Scraping & Data Extraction" + "category": "Business Process Automation" }, { "filename": "1467_Manual_Stickynote_Automation_Webhook.json", - "category": "Web Scraping & Data Extraction" + "category": "Business Process Automation" }, { "filename": "1468_Splitout_Code_Automation_Webhook.json", @@ -5893,15 +5893,15 @@ }, { "filename": "1474_Respondtowebhook_Stickynote_Create_Webhook.json", - "category": "Web Scraping & Data Extraction" + "category": "Business Process Automation" }, { "filename": "1475_Manual_Stickynote_Automation_Triggered.json", - "category": "" + "category": "Business Process Automation" }, { "filename": "1476_Respondtowebhook_Stickynote_Import_Webhook.json", - "category": "Web Scraping & Data Extraction" + "category": "Business Process Automation" }, { "filename": "1477_Webhook_Slack_Update_Webhook.json", @@ -6033,7 +6033,7 @@ }, { "filename": "1509_Stickynote_Automation_Webhook.json", - "category": "Web Scraping & Data Extraction" + "category": "Business Process Automation" }, { "filename": "1510_Datetime_Code_Automation_Webhook.json", @@ -6041,7 +6041,7 @@ }, { "filename": "1511_Manual_Stickynote_Automation_Webhook.json", - "category": "Web Scraping & Data Extraction" + "category": "Business Process Automation" }, { "filename": "1512_Wait_Splitout_Process_Webhook.json", @@ -6081,7 +6081,7 @@ }, { "filename": "1521_Whatsapp_Stickynote_Automation_Webhook.json", - "category": "Web Scraping & Data Extraction" + "category": "Business Process Automation" }, { "filename": "1522_Telegram_Schedule_Send_Webhook.json", @@ -6121,7 +6121,7 @@ }, { "filename": "1531_Splitout_Comparedatasets_Sync_Webhook.json", - "category": "Business Process Automation" + "category": "Data Processing & Analysis" }, { "filename": "1532_Manual_Wait_Automation_Webhook.json", @@ -6157,7 +6157,7 @@ }, { "filename": "1540_Markdown_Stickynote_Automation_Webhook.json", - "category": "Web Scraping & Data Extraction" + "category": "Business Process Automation" }, { "filename": "1541_Webhook_Code_Create_Webhook.json", @@ -6205,7 +6205,7 @@ }, { "filename": "1552_Manual_Summarize_Automation_Triggered.json", - "category": "" + "category": "AI Agent Development" }, { "filename": "1553_Mondaycom_Splitout_Automation_Webhook.json", @@ -6225,7 +6225,7 @@ }, { "filename": "1557_Stickynote_Automation_Triggered.json", - "category": "" + "category": "Business Process Automation" }, { "filename": "1558_HTTP_Stickynote_Automate_Webhook.json", @@ -6265,15 +6265,15 @@ }, { "filename": "1567_Stickynote_Automation_Webhook.json", - "category": "Web Scraping & Data Extraction" + "category": "Business Process Automation" }, { "filename": "1568_Stickynote_Notion_Automation_Triggered.json", - "category": "Project Management" + "category": "Business Process Automation" }, { "filename": "1569_Stickynote_Notion_Automation_Webhook.json", - "category": "Web Scraping & Data Extraction" + "category": "Business Process Automation" }, { "filename": "1570_Filter_Summarize_Automation_Triggered.json", @@ -6305,7 +6305,7 @@ }, { "filename": "1577_Respondtowebhook_Stickynote_Create_Webhook.json", - "category": "Web Scraping & Data Extraction" + "category": "Business Process Automation" }, { "filename": "1578_Webhook_Code_Automation_Webhook.json", @@ -6321,11 +6321,11 @@ }, { "filename": "1581_Manual_Stickynote_Create_Triggered.json", - "category": "" + "category": "Business Process Automation" }, { "filename": "1582_Summarize_Stickynote_Automation_Triggered.json", - "category": "" + "category": "Business Process Automation" }, { "filename": "1583_Readbinaryfiles_Code_Automation_Webhook.json", @@ -6429,7 +6429,7 @@ }, { "filename": "1608_Respondtowebhook_Stickynote_Automation_Webhook.json", - "category": "Web Scraping & Data Extraction" + "category": "Business Process Automation" }, { "filename": "1609_Wait_Schedule_Automation_Scheduled.json", @@ -6441,7 +6441,7 @@ }, { "filename": "1611_Form_Stickynote_Automate_Triggered.json", - "category": "Data Processing & Analysis" + "category": "Business Process Automation" }, { "filename": "1612_Webhook_Code_Automate_Webhook.json", @@ -6481,11 +6481,11 @@ }, { "filename": "1621_Manual_Stickynote_Automate_Webhook.json", - "category": "Web Scraping & Data Extraction" + "category": "Business Process Automation" }, { "filename": "1622_Manual_N8N_Automation_Triggered.json", - "category": "" + "category": "Business Process Automation" }, { "filename": "1623_Stopanderror_Code_Import_Triggered.json", @@ -6529,7 +6529,7 @@ }, { "filename": "1633_Manual_Stickynote_Automation_Webhook.json", - "category": "Web Scraping & Data Extraction" + "category": "Business Process Automation" }, { "filename": "1634_Automation.json", @@ -6597,7 +6597,7 @@ }, { "filename": "1650_Manual_Stickynote_Automation_Webhook.json", - "category": "Web Scraping & Data Extraction" + "category": "Business Process Automation" }, { "filename": "1651_HTTP_Schedule_Automation_Webhook.json", @@ -6645,7 +6645,7 @@ }, { "filename": "1662_Respondtowebhook_Stickynote_Automation_Webhook.json", - "category": "Web Scraping & Data Extraction" + "category": "Business Process Automation" }, { "filename": "1663_Slack_Stickynote_Automate_Webhook.json", @@ -6705,7 +6705,7 @@ }, { "filename": "1677_Supabase_Stickynote_Automation_Triggered.json", - "category": "" + "category": "Data Processing & Analysis" }, { "filename": "1678_Splitout_Code_Automation_Webhook.json", @@ -6717,7 +6717,7 @@ }, { "filename": "1680_Supabase_Stickynote_Automation_Triggered.json", - "category": "" + "category": "Data Processing & Analysis" }, { "filename": "1681_Airtoptool_Slack_Automation_Triggered.json", @@ -6725,7 +6725,7 @@ }, { "filename": "1682_Stickynote_Notion_Automation_Triggered.json", - "category": "Project Management" + "category": "Business Process Automation" }, { "filename": "1683_Compression_Manual_Automation_Webhook.json", @@ -6761,15 +6761,15 @@ }, { "filename": "1691_Stickynote_Automation_Triggered.json", - "category": "" + "category": "Business Process Automation" }, { "filename": "1692_Respondtowebhook_Stickynote_Automate_Webhook.json", - "category": "Web Scraping & Data Extraction" + "category": "Business Process Automation" }, { "filename": "1693_Respondtowebhook_Stickynote_Automate_Webhook.json", - "category": "Web Scraping & Data Extraction" + "category": "Business Process Automation" }, { "filename": "1694_Webhook_HTTP_Automation_Webhook.json", @@ -6789,7 +6789,7 @@ }, { "filename": "1698_Stickynote_Notion_Automation_Triggered.json", - "category": "Project Management" + "category": "Business Process Automation" }, { "filename": "1699_Code_Editimage_Automation_Webhook.json", @@ -6805,11 +6805,11 @@ }, { "filename": "1702_Manual_Stickynote_Automation_Webhook.json", - "category": "Web Scraping & Data Extraction" + "category": "Business Process Automation" }, { "filename": "1703_Stickynote_Webhook_Automation_Webhook.json", - "category": "Web Scraping & Data Extraction" + "category": "Business Process Automation" }, { "filename": "1704_Manual_Schedule_Automation_Scheduled.json", @@ -6821,11 +6821,11 @@ }, { "filename": "1706_Summarize_Stickynote_Automation_Triggered.json", - "category": "" + "category": "Business Process Automation" }, { "filename": "1707_Manual_Stickynote_Automate_Webhook.json", - "category": "Web Scraping & Data Extraction" + "category": "Business Process Automation" }, { "filename": "1708_Telegram_Stickynote_Create_Webhook.json", @@ -6873,7 +6873,7 @@ }, { "filename": "1719_Stickynote_Automation_Triggered.json", - "category": "" + "category": "Business Process Automation" }, { "filename": "1720_HTTP_Stickynote_Import_Webhook.json", @@ -6933,11 +6933,11 @@ }, { "filename": "1734_Stickynote_Automation_Triggered.json", - "category": "" + "category": "Business Process Automation" }, { "filename": "1735_Manual_Airtop_Automation_Triggered.json", - "category": "" + "category": "Data Processing & Analysis" }, { "filename": "1736_Wait_Schedule_Automation_Webhook.json", @@ -6949,7 +6949,7 @@ }, { "filename": "1738_Schedule_Comparedatasets_Automation_Scheduled.json", - "category": "Business Process Automation" + "category": "Data Processing & Analysis" }, { "filename": "1739_Manual_GoogleSheets_Create_Triggered.json", @@ -7073,7 +7073,7 @@ }, { "filename": "1769_Jira_Stickynote_Sync_Triggered.json", - "category": "" + "category": "Business Process Automation" }, { "filename": "1770_Webhook_Extractfromfile_Automation_Webhook.json", @@ -7209,11 +7209,11 @@ }, { "filename": "1803_Respondtowebhook_Stickynote_Import_Webhook.json", - "category": "Web Scraping & Data Extraction" + "category": "Business Process Automation" }, { "filename": "1804_Stickynote_Automation_Triggered.json", - "category": "" + "category": "Business Process Automation" }, { "filename": "1805_Wait_Code_Automate_Webhook.json", @@ -7281,11 +7281,11 @@ }, { "filename": "1821_Manual_Stickynote_Automation_Webhook.json", - "category": "Web Scraping & Data Extraction" + "category": "Business Process Automation" }, { "filename": "1822_Baserow_Stickynote_Automation_Webhook.json", - "category": "Web Scraping & Data Extraction" + "category": "Business Process Automation" }, { "filename": "1823_Stopanderror_Wait_Create_Webhook.json", @@ -7365,7 +7365,7 @@ }, { "filename": "1842_Manual_Stickynote_Automation_Webhook.json", - "category": "Web Scraping & Data Extraction" + "category": "Business Process Automation" }, { "filename": "1843_Telegram_Code_Automate_Triggered.json", @@ -7401,7 +7401,7 @@ }, { "filename": "1851_Manual_Comparedatasets_Automation_Triggered.json", - "category": "" + "category": "Data Processing & Analysis" }, { "filename": "1852_HTTP_Stickynote_Automate_Webhook.json", @@ -7409,7 +7409,7 @@ }, { "filename": "1853_Manual_N8N_Create_Triggered.json", - "category": "" + "category": "Business Process Automation" }, { "filename": "1854_Removeduplicates_Converttofile_Automation_Webhook.json", @@ -7429,7 +7429,7 @@ }, { "filename": "1858_Googledocs_Manual_Automate_Triggered.json", - "category": "" + "category": "Cloud Storage & File Management" }, { "filename": "1859_Schedule_Slack_Monitor_Scheduled.json", @@ -7461,7 +7461,7 @@ }, { "filename": "1866_Manual_Supabase_Automation_Triggered.json", - "category": "" + "category": "Data Processing & Analysis" }, { "filename": "1867_Schedule_Filter_Sync_Scheduled.json", @@ -7473,7 +7473,7 @@ }, { "filename": "1869_Manual_N8Ntrainingcustomerdatastore_Automation_Triggered.json", - "category": "" + "category": "Business Process Automation" }, { "filename": "1870_Microsoftoutlook_GoogleCalendar_Automation_Triggered.json", @@ -7533,7 +7533,7 @@ }, { "filename": "1884_Manual_Stickynote_Import_Webhook.json", - "category": "Web Scraping & Data Extraction" + "category": "Business Process Automation" }, { "filename": "1885_HTTP_Extractfromfile_Automation_Webhook.json", @@ -7553,7 +7553,7 @@ }, { "filename": "1889_Splitout_Comparedatasets_Sync_Webhook.json", - "category": "Business Process Automation" + "category": "Data Processing & Analysis" }, { "filename": "1890_HTTP_Executeworkflow_Automation_Webhook.json", @@ -7701,11 +7701,11 @@ }, { "filename": "1926_Stickynote_Splitinbatches_Automation_Triggered.json", - "category": "" + "category": "Data Processing & Analysis" }, { "filename": "1927_Stickynote_Automation_Triggered.json", - "category": "" + "category": "Business Process Automation" }, { "filename": "1928_Googlecalendartool_Stickynote_Automation_Triggered.json", @@ -7785,7 +7785,7 @@ }, { "filename": "1947_Stickynote_Supabasetool_Automation_Triggered.json", - "category": "" + "category": "Data Processing & Analysis" }, { "filename": "1948_Error_Telegram_Send_Triggered.json", @@ -7809,7 +7809,7 @@ }, { "filename": "1953_Respondtowebhook_Stickynote_Monitor_Webhook.json", - "category": "Web Scraping & Data Extraction" + "category": "Business Process Automation" }, { "filename": "1954_Wait_Code_Automation_Webhook.json", @@ -7825,7 +7825,7 @@ }, { "filename": "1957_Form_Stickynote_Automation_Triggered.json", - "category": "Data Processing & Analysis" + "category": "Business Process Automation" }, { "filename": "1958_Code_Slack_Send_Triggered.json", @@ -7837,7 +7837,7 @@ }, { "filename": "1960_Manual_Stickynote_Create_Webhook.json", - "category": "Web Scraping & Data Extraction" + "category": "Business Process Automation" }, { "filename": "1961_Manual_Readbinaryfile_Import_Triggered.json", @@ -7865,11 +7865,11 @@ }, { "filename": "1967_Respondtowebhook_Stickynote_Automation_Webhook.json", - "category": "Web Scraping & Data Extraction" + "category": "Business Process Automation" }, { "filename": "1968_Form_Stickynote_Automation_Webhook.json", - "category": "Web Scraping & Data Extraction" + "category": "Business Process Automation" }, { "filename": "1969_Code_Stickynote_Automation_Triggered.json", @@ -7885,7 +7885,7 @@ }, { "filename": "1972_Executiondata_Stickynote_Automation_Webhook.json", - "category": "Web Scraping & Data Extraction" + "category": "Business Process Automation" }, { "filename": "1973_HTTP_Manual_Import_Webhook.json", @@ -7913,7 +7913,7 @@ }, { "filename": "1979_Manual_Stickynote_Automation_Webhook.json", - "category": "Web Scraping & Data Extraction" + "category": "Business Process Automation" }, { "filename": "1980_Splitout_Code_Automation_Webhook.json", @@ -7941,7 +7941,7 @@ }, { "filename": "1986_Stickynote_Jira_Create_Webhook.json", - "category": "Web Scraping & Data Extraction" + "category": "Business Process Automation" }, { "filename": "1987_Stickynote_Airtable_Create_Triggered.json", @@ -7985,7 +7985,7 @@ }, { "filename": "1997_Respondtowebhook_Stickynote_Automation_Webhook.json", - "category": "Web Scraping & Data Extraction" + "category": "Business Process Automation" }, { "filename": "1998_Splitout_Postgres_Sync_Scheduled.json", @@ -8001,7 +8001,7 @@ }, { "filename": "2001_Manual_Stickynote_Automation_Webhook.json", - "category": "Web Scraping & Data Extraction" + "category": "Business Process Automation" }, { "filename": "2002_Manual_Code_Automation_Webhook.json", @@ -8033,7 +8033,7 @@ }, { "filename": "2009_Stickynote_Automate_Webhook.json", - "category": "Web Scraping & Data Extraction" + "category": "Business Process Automation" }, { "filename": "2010_Wait_Limit_Automation_Webhook.json", @@ -8049,7 +8049,7 @@ }, { "filename": "2013_Manual_Stickynote_Create_Webhook.json", - "category": "Web Scraping & Data Extraction" + "category": "Business Process Automation" }, { "filename": "2014_Postgres_Webhook_Automation_Webhook.json", @@ -8057,7 +8057,7 @@ }, { "filename": "2015_Stickynote_Automation_Triggered.json", - "category": "" + "category": "Business Process Automation" }, { "filename": "2016_Splitout_Noop_Automation_Webhook.json", @@ -8065,7 +8065,7 @@ }, { "filename": "2017_Manual_Stickynote_Import_Webhook.json", - "category": "Web Scraping & Data Extraction" + "category": "Business Process Automation" }, { "filename": "2018_Telegram_Cal_Create_Webhook.json", @@ -8089,7 +8089,7 @@ }, { "filename": "2023_Stickynote_Create_Triggered.json", - "category": "" + "category": "Business Process Automation" }, { "filename": "2024_Linkedin_Telegram_Automate_Webhook.json", @@ -8145,7 +8145,7 @@ }, { "filename": "2037_Manual_N8N_Automation_Triggered.json", - "category": "" + "category": "Business Process Automation" }, { "filename": "2038_Telegram_Extractfromfile_Automate_Webhook.json", @@ -8153,7 +8153,7 @@ }, { "filename": "2039_Stickynote_Webhook_Automation_Webhook.json", - "category": "Web Scraping & Data Extraction" + "category": "Business Process Automation" }, { "filename": "2040_Telegram_Splitout_Automation_Webhook.json", @@ -8189,7 +8189,7 @@ }, { "filename": "2048_Stickynote_Automation_Triggered.json", - "category": "" + "category": "Business Process Automation" }, { "filename": "2049_Limit_Splitout_Automate_Webhook.json", diff --git a/create_categories.py b/create_categories.py index 0db0496..1113086 100644 --- a/create_categories.py +++ b/create_categories.py @@ -47,6 +47,103 @@ def find_matching_category(tokens, integration_to_category): return "" +def categorize_by_filename(filename): + """ + Categorize workflow based on filename patterns. + Returns the most likely category or None if uncertain. + """ + filename_lower = filename.lower() + + # Security & Authentication + if any(word in filename_lower for word in ['totp', 'bitwarden', 'auth', 'security']): + return "Technical Infrastructure & DevOps" + + # Data Processing & File Operations + if any(word in filename_lower for word in ['process', 'writebinaryfile', 'readbinaryfile', 'extractfromfile', 'converttofile', 'googlefirebasecloudfirestore', 'supabase', 'surveymonkey', 'renamekeys', 'readpdf', 'wufoo', 'splitinbatches', 'airtop', 'comparedatasets', 'spreadsheetfile']): + return "Data Processing & Analysis" + + # Utility & Business Process Automation + if any(word in filename_lower for word in ['noop', 'code', 'schedule', 'filter', 'splitout', 'wait', 'limit', 'aggregate', 'acuityscheduling', 'eventbrite', 'philipshue', 'stickynote', 'n8ntrainingcustomerdatastore', 'n8n']): + return "Business Process Automation" + + # Webhook & API related + if any(word in filename_lower for word in ['webhook', 'respondtowebhook', 'http', 'rssfeedread']): + return "Web Scraping & Data Extraction" + + # Form & Data Collection + if any(word in filename_lower for word in ['form', 'typeform', 'jotform']): + return "Data Processing & Analysis" + + # Local file operations + if any(word in filename_lower for word in ['localfile', 'filemaker']): + return "Cloud Storage & File Management" + + # Database operations + if any(word in filename_lower for word in ['postgres', 'mysql', 'mongodb', 'redis', 'elasticsearch', 'snowflake']): + return "Data Processing & Analysis" + + # AI & Machine Learning + if any(word in filename_lower for word in ['openai', 'awstextract', 'awsrekognition', 'humanticai', 'openthesaurus', 'googletranslate', 'summarize']): + return "AI Agent Development" + + # E-commerce specific + if any(word in filename_lower for word in ['woocommerce', 'gumroad']): + return "E-commerce & Retail" + + # Social media specific + if any(word in filename_lower for word in ['facebook', 'linkedin', 'instagram']): + return "Social Media Management" + + # Customer support + if any(word in filename_lower for word in ['zendesk', 'intercom', 'drift', 'pagerduty']): + return "Communication & Messaging" + + # Analytics & Tracking + if any(word in filename_lower for word in ['googleanalytics', 'segment', 'mixpanel']): + return "Data Processing & Analysis" + + # Development tools + if any(word in filename_lower for word in ['git', 'github', 'gitlab', 'travisci', 'jenkins', 'uptimerobot', 'gsuiteadmin', 'debughelper', 'bitbucket']): + return "Technical Infrastructure & DevOps" + + # CRM & Sales tools + if any(word in filename_lower for word in ['pipedrive', 'hubspot', 'salesforce', 'copper', 'orbit', 'agilecrm']): + return "CRM & Sales" + + # Marketing tools + if any(word in filename_lower for word in ['mailchimp', 'convertkit', 'sendgrid', 'mailerlite', 'lemlist', 'sendy', 'postmark', 'mailgun']): + return "Marketing & Advertising Automation" + + # Project management + if any(word in filename_lower for word in ['asana', 'mondaycom', 'clickup', 'trello', 'notion', 'toggl', 'microsofttodo', 'calendly', 'jira']): + return "Project Management" + + # Communication + if any(word in filename_lower for word in ['slack', 'telegram', 'discord', 'mattermost', 'twilio', 'emailreadimap', 'teams', 'gotowebinar']): + return "Communication & Messaging" + + # Cloud storage + if any(word in filename_lower for word in ['dropbox', 'googledrive', 'onedrive', 'awss3', 'googledocs']): + return "Cloud Storage & File Management" + + # Creative tools + if any(word in filename_lower for word in ['canva', 'figma', 'bannerbear', 'editimage']): + return "Creative Design Automation" + + # Video & content + if any(word in filename_lower for word in ['youtube', 'vimeo', 'storyblok', 'strapi']): + return "Creative Content & Video Automation" + + # Financial tools + if any(word in filename_lower for word in ['stripe', 'chargebee', 'quickbooks', 'harvest']): + return "Financial & Accounting" + + # Weather & external APIs + if any(word in filename_lower for word in ['openweathermap', 'nasa', 'crypto', 'coingecko']): + return "Web Scraping & Data Extraction" + + return "" + def main(): # Load definition categories integration_to_category = load_def_categories() @@ -71,6 +168,11 @@ def main(): "filename": filename, "category": category }) + + # Second pass for categorization + for item in search_categories: + if not item['category']: + item['category'] = categorize_by_filename(item['filename']) # Sort by filename for consistency search_categories.sort(key=lambda x: x['filename']) @@ -143,4 +245,4 @@ def main(): print("="*50) if __name__ == "__main__": - main() + main() \ No newline at end of file diff --git a/import_workflows.py b/import_workflows.py index 13e999d..299cb75 100644 --- a/import_workflows.py +++ b/import_workflows.py @@ -10,6 +10,21 @@ import sys from pathlib import Path from typing import List, Dict, Any +from categorize_workflows import categorize_by_filename + + +def load_categories(): + """Load the search categories file.""" + try: + with open('context/search_categories.json', 'r', encoding='utf-8') as f: + return json.load(f) + except (FileNotFoundError, json.JSONDecodeError): + return [] + +def save_categories(data): + """Save the search categories file.""" + with open('context/search_categories.json', 'w', encoding='utf-8') as f: + json.dump(data, f, indent=2, ensure_ascii=False) class WorkflowImporter: """Import n8n workflows with progress tracking and error handling.""" @@ -56,6 +71,32 @@ class WorkflowImporter: if result.returncode == 0: print(f"✅ Imported: {file_path.name}") + + # Categorize the workflow and update search_categories.json + suggested_category = categorize_by_filename(file_path.name) + + all_workflows_data = load_categories() + + found = False + for workflow_entry in all_workflows_data: + if workflow_entry.get('filename') == file_path.name: + workflow_entry['category'] = suggested_category + found = True + break + + if not found: + # Add new workflow entry if not found (e.g., first import) + all_workflows_data.append({ + "filename": file_path.name, + "category": suggested_category, + "name": file_path.stem, # Assuming workflow name is filename without extension + "description": "", # Placeholder, can be updated manually + "nodes": [] # Placeholder, can be updated manually + }) + + save_categories(all_workflows_data) + print(f" Categorized '{file_path.name}' as '{suggested_category or 'Uncategorized'}'") + return True else: error_msg = result.stderr.strip() or result.stdout.strip() @@ -141,6 +182,7 @@ def check_n8n_available() -> bool: def main(): """Main entry point.""" + sys.stdout.reconfigure(encoding='utf-8') print("🔧 N8N Workflow Importer") print("=" * 40)