Api schema extractor
This workflow automates the process of discovering and extracting APIs from various services, followed by generating custom schemas. It works in three distinct stages: research, extraction, and schema generation, with each stage tracking progress in a Google Sheet. 🙏 Jim Le deserves major kudos for helping to build this sophisticated three-stage workflow that cleverly automates API documentation processing using a smart combination of web scraping, vector search, and LLM technologies. How it works Stage 1 - Research: Fetches pending services from a Google Sheet Uses Google search to find API documentation Employs Apify for web scraping to filter relevant pages Stores webpage contents and metadata in Qdrant (vector database) Updates progress status in Google Sheet (pending, ok, or error) Stage 2 - Extraction: Processes services that completed research successfully Queries vector store to identify products and offerings Further queries for relevant API documentation Uses Gemini (LLM) to extract API operations Records extracted operations in Google Sheet Updates progress status (pending, ok, or error) Stage 3 - Generation: Takes services with successful extraction Retrieves all API operations from the database Combines and groups operations into a custom schema Uploads final schema to Google Drive Updates final status in sheet with file location Ideal for: Development teams needing to catalog multiple APIs API documentation initiatives Creating standardized API schema collections Automating API discovery and documentation Accounts required: Google account (for Sheets and Drive access) Apify account (for web scraping) Qdrant database Gemini API access Set up instructions: Prepare your Google Sheets document with the services information. Here's an example of a Google Sheet – you can copy it and change or remove the values under the columns. Also, make sure to update Google Sheets nodes with the correct Google Sheet ID. Configure Google Sheets OAuth2 credentials, required third-party services (Apify, Qdrant) and Gemini. Ensure proper permissions for Google Drive access.
Simple social: Instagram single image post with Facebook API
Simple Social: Instagram Single Image Post with Facebook API Who is this workflow for? This workflow is designed for businesses, social media managers, content creators, and developers who need to automate the process of posting single images to Instagram using the Facebook API. It is ideal for anyone looking to streamline their social media posting process, saving time and ensuring consistent content delivery. Use Case / Problem Solved Manually posting images and captions on Instagram can be time-consuming, especially for businesses and content creators managing multiple accounts. This workflow automates the process from image preparation to publishing, reducing manual effort and increasing efficiency. What this workflow does Trigger Initialization: The workflow starts with a manual trigger that can be adapted to other triggers (e.g., HTTP webhook or schedule). Set Parameters: The workflow includes a node that sets essential parameters, such as the image URL, Instagram business account ID, and caption. Prepare Instagram Media: A node prepares the media for upload using the Facebook API, sending the image and caption for pre-publication processing. Check Media Upload Status: The workflow verifies if the media preparation is complete. Conditional Check: If the media preparation is successful, the workflow proceeds to publish; otherwise, it triggers an error-handling path. Publish Media: The media is published on Instagram if the conditions are met. Post-Publish Check: The workflow checks the status after publication. Conditional Check for Publication: If the publication status is "PUBLISHED," it triggers a success path; otherwise, it triggers a failure handling. Email Notifications: The workflow sends email notifications to indicate successful or unsuccessful outcomes. Setup Here is a quick video in italian language with sub eng(https://youtu.be/obWJFJvg_6g) Add API Credentials: Ensure that valid Facebook API credentials are added and configured for use. Permissions Required: Ensure your app has the necessary permissions (adsmanagement, businessmanagement, instagrambasic, instagramcontentpublish, pagesread_engagement). App review may be required for external user access. Node Configuration: Customize the Set Instagram Parameters node to specify the image URL, caption, and Instagram business account ID. Trigger Adaptation: Adapt the initial trigger if needed to fit your workflow's requirements (e.g., schedule, webhook). How to customize this workflow Change the Image URL and Caption: Modify the Set Instagram Parameters node to change the image and caption. Trigger Customization: Replace the manual trigger with other triggers like a webhook to automate posting based on external events. Notifications: Adjust the email nodes to send customized messages or trigger other workflows based on the outcome. Limitations Image Format: Only JPEG images are supported. Extended JPEG formats such as MPO and JPS are not compatible. Unsupported Tags: Shopping tags, branded content tags, and filters are not supported. Instagram TV: Publishing to Instagram TV is not supported. Rate Limit: Instagram accounts are limited to 50 API-published posts within a rolling 24-hour period. Carousels count as a single post. Check usage with GET /{ig-user-id}/contentpublishinglimit. Example Usage Imagine managing a business account that needs consistent posts. You can schedule this workflow or trigger it manually to automatically post images with captions at the right time, ensuring that your audience stays engaged without manual posting efforts.
✨🔪 Advanced AI powered document parsing & text extraction with Llama Parse
Description This workflow automates document processing using LlamaParse to extract and analyze text from various file formats. It intelligently processes documents, extracts structured data, and delivers actionable insights through multiple channels. How It Works Document Ingestion & Processing 📄 Monitors Gmail for incoming attachments or accepts documents via webhook Validates file formats against supported LlamaParse extensions Uploads documents to LlamaParse for advanced text extraction Stores original documents in Google Drive for reference Intelligent Document Analysis 🧠 Automatically classifies document types (invoices, reports, etc.) Extracts structured data using customized AI prompts Generates comprehensive document summaries with key insights Converts unstructured text into organized JSON data Invoice Processing Automation 💼 Extracts critical invoice details (dates, amounts, line items) Organizes financial data into structured formats Calculates tax breakdowns, subtotals, and payment information Maintains detailed records for accounting purposes Multi-Channel Delivery 📱 Saves extracted data to Google Sheets for tracking and analysis Sends concise summaries via Telegram for immediate review Creates searchable document archives in Google Drive Updates spreadsheets with structured financial information Setup Steps Configure API Credentials 🔑 Set up LlamaParse API connection Configure Gmail OAuth for email monitoring Set up Google Drive and Sheets integrations Add Telegram bot credentials for notifications Customize AI Processing ⚙️ Adjust document classification parameters Modify extraction templates for specific document types Fine-tune summary generation prompts Customize invoice data extraction schema Test and Deploy 🚀 Test with sample documents of various formats Verify data extraction accuracy Confirm notification delivery Monitor processing pipeline performance
Generate personalized sales emails with LinkedIn data & Claude 3.7 via OpenRouter
How it works The automation loads rows from a Google Sheet of leads that you want to contact. It makes a Google search via Apify for LinkedIn links based on the First name / Last name / Company. Another Apify actor fetches the right LinkedIn profile based on the first profile which is retuned The same process is done for the company that the lead works for, giving extra context. If the lead has a current company listed on their LinkedIn, we use that URL to do the lookup, rather than doing a separate Google search. A call is made to OpenRouter to get an LLM to generate an email based on a prompt designed to do personalized outreach. An email is sent via a Gmail node. Set up steps Connect your Google Sheets + Gmail accounts to use these APIs. Make an account with Apify and enter your credentials. Set your details in the "Set My Data" node to customize the workflow to revolve around your company + value proposition. I would recommend changing the prompt in the "Generate Personalized Email" node to match the tone of voice that you want your agent to have. You can change the guidelines to e.g. change whether the agent introduces itself, and give more examples in the style you want to make the output better.
Join data from Postgres and MySQL
query data from two different databases handle and unify in a single return
Monitor SSL certificate of any domain with uProc
Do you want to check the SSL certificate expiration dates of your customers or servers? This workflow gets information of an SSL certificate using the uProc Get Certificate by domain tool. You can use this workflow to query SSL certificates in bulk and send alarms when any certificate has expired. You need to add your credentials (Email and API Key - real -) located at Integration section to n8n. You can replace "Create Domain Item" with any integration containing a domain, like Google Sheets, MySQL, or Zabbix server. Every "uProc" node returns the next fields per every analyzed SSL certificate: issuer: Contains the issuer. provider: Contains the provider. valid_from: Contains the start date. valid_to: Contains the end date. serial_number: Contains the serial number. type: Contains if supports one or multiple domains. protocol: Contains the protocol. valid: Contains its validity. domains: Contains all domains and subdomains supported. An "IF" node detects if the certificate is valid or not. Finally, the workflow sends an alarm to a Telegram channel to know if the certificate has expired.
Daily calendar summary notifications via Telegram from Google Calendar
Context: This workflow automatically sends you a daily message on Telegram summarizing all your meetings and events for the day, straight from your Google Calendar. For who ? Perfect for anyone who: Uses Google Calendar to manage their schedule. Wants Telegram reminders for daily events. Loves automation and productivity tools. Requirements: Telegram. Google account. Google Calendar. Steps: 🗒️ Use the sticky notes in the n8n canvas to: Add your Telegram and Google credentials. Execute and test the workflow. Check if you receive your daily summary on Telegram. You'll get this: Tutorial video: Watch the Youtube Tutorial video How does it work? ⏰ The trigger runs every day at 7AM. 📅 Your Google Calendar is checked. 🔢 If there are events or meetings, a number > 0 is returned. Otherwise, it's 0. 📝 A text message is generated with a summary of all your events, including all relevant details. ❌ If no events are found, a "no event" message is sent. About me : I’m Yassin a Project & Product Manager Scaling tech products with data-driven project management. 📬 Feel free to connect with me on Linkedin
Seo competitor analysis & data logging with Semrush API and Google Sheets
Competitor Analysis & SEO Data Logging Workflow Using Competitor Analysis Semrush API Description This workflow automates SEO competitor analysis using the Competitor Analysis Semrush API and logs the data into Google Sheets for structured reporting. It captures domain overview, organic competitors, organic pages, and keyword-level insights from the Competitor Analysis Semrush API, then appends them to different sheets for easy tracking. --- Node-by-Node Explanation On form submission – Captures the website URL entered by the user. Competitor Analysis – Sends the website to the Competitor Analysis Semrush API via HTTP POST request. Re format output – Extracts and formats the domain overview data. Domain overview – Saves organic keywords and traffic into Google Sheets. Reformat – Extracts the organic competitors list. Organic Competitor – Logs competitor domains, relevance, and traffic into Google Sheets. Reformat 2 – Extracts organic pages data. Organic Pages – Stores page-level data such as traffic and keyword counts. Reformat2 – Extracts organic keywords details. organic keywords – Logs keyword data like CPC, volume, and difficulty into Google Sheets. --- Benefits ✅ Automated competitor tracking – No manual API calls, all logged in Google Sheets. ✅ Centralized SEO reporting – Data stored in structured sheets for quick access. ✅ Time-saving – Streamlines research by combining multiple reports in one workflow. ✅ Accurate insights – Direct data from the Competitor Analysis Semrush API ensures reliability. --- Use Cases 📊 SEO Research – Track domain performance and competitor strategies. 🔍 Competitor Monitoring – Identify competitor domains, keywords, and traffic. 📝 Content Strategy – Find top-performing organic pages and replicate content ideas. 💰 Keyword Planning – Use CPC and difficulty data to prioritize profitable keywords. 📈 Client Reporting – Generate ready-to-use SEO competitor analysis reports in Google Sheets.
N8N automated Twitter reply bot workflow
N8N Automated Twitter Reply Bot Workflow ============================================ For latest version, check: dziura.online/automation Latest documentation can be find here You must have Apify community node installed before pasting the JSON to your workflow. Overview ------------ This n8n workflow creates an intelligent Twitter/X reply bot that automatically scrapes tweets based on keywords or communities, analyzes them using AI, generates contextually appropriate replies, and posts them while avoiding duplicates. The bot operates on a schedule with intelligent timing and retry mechanisms. Key Features ---------------- Automated tweet scraping from Twitter/X using Apify actors AI-powered reply generation using LLM (Large Language Model) Duplicate prevention via MongoDB storage Smart scheduling with timezone awareness and natural posting patterns Retry mechanism with failure tracking Telegram notifications for status updates Manual trigger option via Telegram command Required Credentials & Setup -------------------------------- 1\. Telegram Bot Create a bot via @BotFather on Telegram Get your Telegram chat ID to receive status messages Credential needed: Telegram account (Bot token) 2\. MongoDB Database Set up a MongoDB database to store replied tweets and prevent duplicates Create a collection (default name: collection\_name) Credential needed: MongoDB account (Connection string) Tutorial: MongoDB Connection Guide 3\. Apify Account Sign up at Apify.com Primary actors used: Search Actor: api-ninja/x-twitter-advanced-search - For keyword-based tweet scraping (ID: 0oVSlMlAX47R2EyoP) Community Actor: api-ninja/x-twitter-community-search-post-scraper - For community-based tweet scraping (ID: upbwCMnBATzmzcaNu) Credential needed: Apify account (API token) 4\. OpenRouter (LLM Provider) Sign up at OpenRouter.ai Used for AI-powered tweet analysis and reply generation Model used: x-ai/grok-3 (configurable) Credential needed: OpenRouter account (API key) 5\. Twitter/X API Set up developer account at developer.x.com Note: Free tier limited to ~17 posts per day Credential needed: X account (OAuth2 credentials) Workflow Components ----------------------- Trigger Nodes 1\. Schedule Trigger Purpose: Runs automatically every 20 minutes Smart timing: Only active between 7 AM - 11:59 PM (configurable timezone) Randomization: Built-in probability control (~28% execution chance) to mimic natural posting patterns 2\. Manual Trigger Purpose: Manual execution for testing 3\. Telegram Trigger Purpose: Manual execution via /reply command in Telegram Usage: Send /reply to your bot to trigger the workflow manually Data Processing Flow 1\. MongoDB Query (Find documents) Purpose: Retrieves previously replied tweet IDs to avoid duplicates Collection: collection\_name (configure to match your setup) Projection: Only fetches tweet\_id field for efficiency 2\. Data Aggregation (Aggregate1) Purpose: Consolidates tweet IDs into a single array for filtering 3\. Keyword/Community Selection (Keyword/Community List) Purpose: Defines search terms and communities Configuration: Edit the JSON to include your keywords and Twitter community IDs Format:{ "keyword\community\list": \[ "SaaS", "Entrepreneur", "1488663855127535616" // Community ID (19-digit number) \], "failure": 0 } 4\. Random Selection (Randomized community, keyword) Purpose: Randomly selects one item from the list to ensure variety 5\. Routing Logic (If4) Purpose: Determines whether to use Community search or Keyword search Logic: Uses regex to detect 19-digit community IDs vs keywords Tweet Scraping (Apify Actors) Community Search Actor Actor: api-ninja/x-twitter-community-search-post-scraper Purpose: Scrapes tweets from specific Twitter communities Configuration:{ "communityIds": \["COMMUNITY\_ID"\], "numberOfTweets": 40 } Search Actor Actor: api-ninja/x-twitter-advanced-search Purpose: Scrapes tweets based on keywords Configuration:{ "contentLanguage": "en", "engagementMinLikes": 10, "engagementMinReplies": 5, "numberOfTweets": 20, "query": "KEYWORD", "timeWithinTime": "2d", "tweetTypes": \["original"\], "usersBlueVerifiedOnly": true } Filtering System (Community filter) The workflow applies multiple filters to ensure high-quality replies: Text length: >60 characters (substantial content) Follower count: >100 followers (audience reach) Engagement: >10 likes, >3 replies (proven engagement) Language: English only Views: >100 views (visibility) Duplicate check: Not previously replied to Recency: Within 2 days (configurable in actor settings) AI-Powered Reply Generation LLM Chain (Basic LLM Chain) Purpose: Analyzes filtered tweets and generates contextually appropriate replies Model: Grok-3 via OpenRouter (configurable) Features: Engagement potential scoring User authority analysis Timing optimization Multiple reply styles (witty, informative, supportive, etc.) <100 character limit for optimal engagement Output Parser (Structured Output Parser) Purpose: Ensures consistent JSON output format Schema:{ "selected\tweet\id": "tweet\id\here", "screen\name": "author\screen\_name", "reply": "generated\reply\here" } Posting & Notification System Twitter Posting (Create Tweet) Purpose: Posts the generated reply as a Twitter response Error handling: Catches API limitations and rate limits Status Notifications Success: Notifies via Telegram with tweet link and reply text Failure: Notifies about API limitations or errors Format: HTML-formatted messages with clickable links Database Storage (Insert documents) Purpose: Saves successful replies to prevent future duplicates Fields stored: tweet\id, screen\name, reply, tweet\_url, timestamp Retry Mechanism The workflow includes intelligent retry logic: Failure Counter (If5, Increment Failure Counter1) Logic: If no suitable tweets found, increment failure counter Retry limit: Maximum 3 retries with different random keywords Wait time: 3-second delay between retries Final Failure Notification Trigger: After 4 failed attempts Action: Sends Telegram notification about unsuccessful search Recovery: Manual retry available via /reply command Configuration Guide ----------------------- Essential Settings to Modify MongoDB Collection Name: Update collection\_name in MongoDB nodes Telegram Chat ID: Replace 11111111111 with your actual chat ID Keywords/Communities: Edit the list in Keyword/Community List node Timezone: Update timezone in Code node (currently set to Europe/Kyiv) Actor Selection: Enable only one actor (Community OR Search) based on your needs Filter Customization Adjust filters in Community filter node based on your requirements: Minimum engagement thresholds Text length requirements Time windows Language preferences LLM Customization Modify the AI prompt in Basic LLM Chain to: Change reply style and tone Adjust engagement criteria Modify scoring algorithms Set different character limits Usage Tips -------------- Start small: Begin with a few high-quality keywords/communities Monitor performance: Use Telegram notifications to track success rates Adjust filters: Fine-tune based on the quality of generated replies Respect limits: Twitter's free tier allows ~17 posts/day Test manually: Use /reply command for testing before scheduling Troubleshooting ------------------- Common Issues No tweets found: Adjust filter criteria or check keywords API rate limits: Reduce posting frequency or upgrade Twitter API plan MongoDB connection: Verify connection string and collection name Apify quota: Monitor Apify usage limits LLM failures: Check OpenRouter credits and model availability Best Practices Monitor your bot's replies for quality and appropriateness Regularly update keywords to stay relevant Keep an eye on engagement metrics Adjust timing based on your audience's activity patterns Maintain a balanced posting frequency to avoid appearing spammy Documentation Links ----------------------- Full Documentation: Google Doc Guide Latest Version: dziura.online/automation MongoDB Setup Tutorial: YouTube Guide This workflow provides a comprehensive solution for automated, intelligent Twitter engagement while maintaining quality and avoiding spam-like behavior.
Sync Zendesk tickets with subsequent comments to Asana tasks
This workflow creates an Asana task when a new ticket is created in Zendesk. Subsequent comments on the ticket in Zendesk are added as comments to the task in Asana. Prerequisites Zendesk account and Zendesk credentials. Asana account and Asana credentials. Asana workspace to create tasks in. How it works The workflow listens for new tickets in Zendesk. When a new ticket is created, the workflow creates a new task in Asana. The Asana GID is then saved in one of the ticket's fields (in setup we call this "Asana GID"). The next time a comment is added to the ticket, the workflow retrieves the Asana GID from the ticket's field and adds the comment to the task in Asana. Setup This workflow requires that you set up a webhook in Zendesk. To do so, follow the steps below: In the workflow, open the On new Zendesk ticket node and copy the webhook URL. In Zendesk, navigate to Admin Center > Apps and integrations > Webhooks > Actions > Create Webhook. Add all the required details which can be retrieved from the On new Zendesk ticket node. The webhook URL gets added to the “Endpoint URL” field, and the “Request method” should match what is shown in n8n. Save the webhook. In Zendesk, navigate to Admin Center > Objects and rules > Business rules > Triggers > Add trigger. Give trigger a name such as “New tickets”. Under “Conditions” in “Meet ALL of the following conditions”, add “Status is New”. Under “Actions”, select “Notify active webhook” and select the webhook you created previously. In the JSON body, add the following: { "id": "{{ticket.id}}", "comment": "{{ticket.latestcommenthtml}}" } Save the Zendesk trigger. You will also need to set up a field in Zendesk to store the Asana GID. To do so, follow the steps below: In Zendesk, navigate to Admin Center > Objects and rules > Tickets > Fields > Add field. Use the number field option and give the field a name such as “Asana GID”. Save the field. In n8n, open the Update ticket node and select the field you created in Zendesk.
Analyze feedback and send a message on Mattermost
This workflow analyzes the sentiments of the feedback provided by users and sends them to a Mattermost channel. Typeform Trigger node: Whenever a user submits a response to the Typeform, the Typeform Trigger node will trigger the workflow. The node returns the response that the user has submitted in the form. Google Cloud Natural Language node: This node analyses the sentiment of the response the user has provided and gives a score. IF node: The IF node uses the score provided by the Google Cloud Natural Language node and checks if the score is negative (smaller than 0). If the score is negative we get the result as True, otherwise False. Mattermost node: If the score is negative, the IF node returns true and the true branch of the IF node is executed. We connect the Mattermost node with the true branch of the IF node. Whenever the score of the sentiment analysis is negative, the node gets executed and a message is posted on a channel in Mattermost. NoOp: This node here is optional, as the absence of this node won't make a difference to the functioning of the workflow. This workflow can be used by Product Managers to analyze the feedback of the product. The workflow can also be used by HR to analyze employee feedback. You can even use this node for sentiment analysis of Tweets. To perform a sentiment analysis of Tweets, replace the Typeform Trigger node with the Twitter node. Note: You will need a Trigger node or Start node to start the workflow. Instead of posting a message on Mattermost, you can save the results in a database or a Google Sheet, or Airtable. Replace the Mattermost node with (or add after the Mattermost node) the node of your choice to add the result to your database. You can learn to build this workflow on the documentation page of the Google Cloud Natural Language node.
Automate droplet snapshots on DigitalOcean
This workflow automates the management of DigitalOcean Droplet snapshots by listing all droplets, filtering based on the number of snapshots, and deleting excess snapshots before creating new ones. It ensures your droplet snapshots stay organized and within a manageable limit, preventing unnecessary storage costs due to an excess of snapshots. Who is this for? This workflow is perfect for users managing DigitalOcean Droplets and looking to automate the process of snapshot creation and cleanup to save on storage costs and maintain efficient resource management. It’s useful for DevOps teams, cloud administrators, or any developer leveraging DigitalOcean for their infrastructure. What problem is this workflow solving? When managing multiple DigitalOcean Droplets, snapshots can quickly accumulate, taking up space and increasing storage costs. Manually deleting and creating snapshots can be time-consuming and inefficient. This automation solves this problem by automating the snapshot management process, ensuring that no more than a defined number of snapshots are kept per droplet. What this workflow does Runs every 48 hours: The workflow is triggered by a cron node that runs every 48 hours, ensuring timely snapshot management. List all droplets: The workflow retrieves all droplets in the DigitalOcean account. Retrieve snapshots: For each droplet, the workflow retrieves a list of existing snapshots. Filter snapshots: If the number of snapshots exceeds 4, the workflow filters for snapshots that need to be deleted. Delete snapshots: Excess snapshots are automatically deleted based on the filter criteria. Create new snapshot: After cleaning up, the workflow creates a new snapshot for each droplet, ensuring that backups are always up-to-date. Setup DigitalOcean API Key: You’ll need to configure the HTTP Request nodes with your DigitalOcean API key. This key is required for authenticating requests to list droplets, retrieve snapshots, delete snapshots, and create new ones. Snapshot Threshold: By default, the workflow is set to keep no more than 4 snapshots per droplet. This can be adjusted by modifying the filter node conditions. Set Execution Frequency: The cron node is set to run every 48 hours, but you can adjust the timing to suit your needs. How to customize this workflow Adjust Snapshot Limit: Change the value in the filter node if you want to keep more or fewer snapshots. Modify Run Frequency: The workflow runs every 48 hours by default. You can change the frequency in the cron node to run more or less often. Enhance with Notifications: You can add a notification node (e.g., Slack or email) to alert you when snapshots are deleted or created. Workflow Summary This workflow automates the management of DigitalOcean Droplet snapshots by keeping the number of snapshots under a defined limit, deleting the oldest ones, and ensuring new snapshots are created at regular intervals.