Minute-by-Minute ISS Position Feed to ActiveMQ

Overview

This workflow fetches the current position of the International Space Station (ISS) every minute using the free WhereTheISS.at API and publishes the latitude, longitude, timestamp, and satellite name to an ActiveMQ topic. It is an ideal template for real-time space tracking, educational demonstrations, or integrating satellite data into messaging-based architectures.

The workflow uses a Cron trigger to run every minute without manual intervention, an HTTP Request node to call the API, a Set node to extract and reshape the data, and an AMQP Sender node to push the message to ActiveMQ.

Node-by-Node Breakdown

  • Cron (No auth) — Triggers the workflow every minute. The triggerTimes parameter is set to everyMinute, ensuring consistent polling of the ISS position.
  • HTTP Request (No auth) — Calls https://api.wheretheiss.at/v1/satellites/25544/positions with a dynamic query parameter timestamps set to ={{Date.now();}}. This ensures each request uses the current Unix timestamp, returning the ISS position at that exact moment. No authentication is required because the API is public.
  • Set (No auth) — Extracts specific fields from the API response: latitude, longitude, timestamp (as numbers) and name (as a string). The option keepOnlySet is enabled, meaning only these four fields are passed forward. It references the previous HTTP Request node via expressions like $node["HTTP Request"].json["0"]["latitude"].
  • AMQP Sender (AMQP Credentials) — Sends the processed data to the ActiveMQ topic named iss-position. The sink parameter defines the topic or queue (here it is iss-position). The node requires configured AMQP credentials (host, port, username, password) to connect to the broker.

Setup Instructions

  1. ActiveMQ Broker — You need a running ActiveMQ (or any AMQP-compatible broker like RabbitMQ with the AMQP plugin enabled). Obtain the broker's host, port, and credentials (username/password).
  2. n8n Credentials — In n8n, create a new AMQP credential using the broker details. Attach this credential to the AMQP Sender node.
  3. No API Key Required — The WhereTheISS.at API is open and does not require registration or authentication.
  4. Enable the Workflow — Activate the workflow to start the cron trigger. Every minute a message containing the current ISS position will be published to the iss-position topic.

Use Cases & Variations

  • Real-time Dashboarding — Connect a separate workflow that subscribes to the ActiveMQ topic and feeds data into a real-time dashboard (e.g., via WebSocket or a charting tool).
  • Multiple Satellites — Change the satellite ID in the URL (e.g., 25544 for ISS) to track other satellites. The endpoint supports various IDs.
  • Different Messaging Systems — Replace the AMQP Sender with an MQTT node, Kafka node, or even a Webhook to adapt to different messaging infrastructure.
  • Data Enrichment — Add HTTP Request nodes to fetch location names (reverse geocoding) or weather data at the ISS coordinates.
  • Logging & Storage — Append a Google Sheets or database node after the Set node to archive the position history for later analysis.
4 nodesData
CronHTTP RequestSetAmqp

Workflow JSON

{
  "id": "102",
  "name": "Send updates about the position of the ISS every minute to a topic in ActiveMQ",
  "nodes": [
    {
      "name": "Cron",
      "type": "n8n-nodes-base.cron",
      "position": [
        510,
        300
      ],
      "parameters": {
        "triggerTimes": {
          "item": [
            {
              "mode": "everyMinute"
            }
          ]
        }
      },
      "typeVersion": 1
    },
    {
      "name": "HTTP Request",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        710,
        300
      ],
      "parameters": {
        "url": "https://api.wheretheiss.at/v1/satellites/25544/positions",
        "options": {},
        "queryParametersUi": {
          "parameter": [
            {
              "name": "timestamps",
              "value": "={{Date.now();}}"
            }
          ]
        }
      },
      "typeVersion": 1
    },
    {
      "name": "Set",
      "type": "n8n-nodes-base.set",
      "position": [
        910,
        300
      ],
// ... truncated (copy to see full JSON)

How to Import This Workflow

  1. 1Copy the workflow JSON above using the Copy Workflow JSON button.
  2. 2Open your n8n instance and go to Workflows.
  3. 3Click Import from JSON and paste the copied workflow.

Don't have an n8n instance? Start your free trial at n8nautomation.cloud

Related Templates

AI-Powered CV Scanner with Google Sheets & Gemini

Overview This workflow automates the initial screening of job applicants by combining a web form, AI-powered CV analysis, and Google Sheets. When a candidate submits their application (name, email, and CV PDF), the workflow instantly extracts the text from the PDF using Mistral OCR, then sends it to Google Gemini for evaluation against a predefined job description. The AI returns a qualification score (0.0 to 1.0) and a detailed explanation, which are then logged alongside the candidate's details in a Google Sheet. This eliminates manual CV review, speeds up your hiring pipeline, and ensures every applicant is evaluated consistently. Workflow Steps Application Form (Form Trigger) — No auth required. This node presents a custom-branded web form to collect the candidate's Full Name, Email, and CV (PDF upload). The form is styled with a dark, glassmorphism theme and includes animated backgrounds. Once submitted, the workflow triggers automatically. Log Candidate Submission (Google Sheets) — OAuth2. Immediately after form submission, this node appends the candidate's name and email to the 'CVs' Google Sheet. This ensures the application is recorded even if the subsequent analysis steps fail. Extract CV Text (Mistral AI) — API Key auth. This node takes the uploaded PDF file from the form and uses Mistral's OCR API to extract all text content from the CV. It dynamically selects the binary file uploaded in the previous step. AI Qualification (LLM Chain) — This is the core analysis node. It uses a detailed prompt that includes: - A system message defining the AI as a professional, objective hiring assistant. - The full job description for a "Senior Frontend Developer" with core requirements and preferred qualifications. - Clear evaluation logic: candidates missing core requirements cannot score above 0.6; meeting all core requirements yields at least 0.75; preferred qualifications add bonuses up to 1.0. - The extracted CV text as context. - An instruction to output raw JSON only. Gemini 2.5 Flash Lite (Language Model) — API Key auth (Google AI Studio). This node provides the actual AI model (Google Gemini 2.5 Flash Lite) with a temperature of 0.4 for balanced, deterministic outputs. It powers the LLM Chain above. JSON Output Parser (Output Parser) — This node ensures the AI's response is valid JSON with the exact schema: (number) and (string). It prevents malformed responses from breaking downstream nodes. Add CV Analysis (Google Sheets) — OAuth2. After analysis, this node updates the candidate's row in the 'CVs' sheet by matching on the Email column. It writes the and from the AI's output into the corresponding columns. Create 'CVs' Spreadsheet (Google Sheets) — OAuth2. This node runs once when the workflow is first triggered manually. It creates a new Google Sheet named 'CVs' with columns: FullName, Email, QualificationRate, QualificationDescription. Setup Instructions Prerequisites A Google account (for Google Sheets) A Mistral AI account (free tier available) — Get your API key here A Google AI Studio account — Create an API key here Step-by-Step Google Sheets Credentials: In the three Google Sheets nodes, create or select an OAuth2 credential for Google Sheets. Grant access to create and edit spreadsheets. Mistral AI Credential: In the "Extract CV Text" node, create a new credential and paste your Mistral API key. Gemini Credential: In the "Gemini 2.5 Flash Lite" node, create a new credential and paste your Google AI Studio API key. Customize Job Description: Open the "AI Qualification" node and edit the section in the prompt to match your actual job posting. Activate the Workflow: Toggle the workflow to "Active" status. The "Application Form" node will generate a public URL you can share with candidates. Test: Use the "Start Here" manual trigger to initialize the Google Sheet, then submit a test application via the form URL. Use Cases & Variations Custom Job Roles: Replace the Senior Frontend Developer description with any role (e.g., Marketing Manager, Data Scientist, Sales Rep) by editing the prompt in the AI Qualification node. Different Storage: Replace Google Sheets with Airtable, Notion, or a database like PostgreSQL for storing applications and results. Multi-Round Screening: Add a Slack or email notification node to alert the hiring team when a candidate scores above a certain threshold (e.g., >0.8). Interview Scheduling: Connect the output to a Calendly or Google Calendar node to automatically invite high-scoring candidates for an interview. Batch Processing: Modify the trigger to accept a CSV upload of multiple CVs for bulk analysis. Enhanced Analysis: Add more output fields like "years of experience", "top skills", or "red flags" by updating the JSON schema in the Output Parser and the prompt.

18 nodes

Extract company website metadata via Apify Company Enrichment

This workflow takes a single company domain (e.g., ), validates it, runs it through Apify's Company Enrichment actor, and returns a verified metadata result with provenance. It is designed as a building block for CRM enrichment, lead generation, or data quality pipelines. Workflow Steps Run manually (Manual Trigger) – Starts the workflow on demand. No schedule is set; you can extend it with a cron trigger. Set company domain (Set node) – Hardcodes the domain into a field . Change this to your target domain. Validate domain (Code node, JavaScript) – Validates the domain format (length, allowed characters, no protocol or path). Throws an error if invalid. Also attaches an marker for downstream validation. Extract metadata on Apify (HTTP Request, Header Auth) – Sends a POST request to the Apify actor's sync endpoint with the domain payload. Uses Header Auth with a custom header . Parameters: , to cap cost. Timeout 150 seconds. Validate metadata result (Code node, JavaScript) – Checks the response: only one item, , domain matches, integration source matches, and provenance method is . Rejects any unexpected or empty results. Setup Instructions Get an Apify API token – Sign up or log in at apify.com. Create a token scoped to run actors (). Create an n8n Header Auth credential – In n8n, go to Credentials > New > Header Auth. Set the header name to and value to . Attach this credential to the Extract metadata on Apify node. Replace the default domain – In the Set company domain node, change to your target company domain (e.g., ). Review pricing – The actor charges per run. The workflow caps cost at $0.02 USD per call. Review actor pricing before scaling. Run manually – Click Execute Workflow to test. The output will be a single enriched company object. Use Cases & Adaptations CRM integration – Pipe the output into Salesforce or HubSpot via an HTTP Request or their respective n8n nodes. Bulk enrichment – Replace the manual trigger with a Schedule Trigger or a Spreadsheet File Trigger to process thousands of domains from a Google sheet or CSV. Data validation – Use the validated result to enrich lead lists, verify company websites, or update a database. Custom enrichment – Replace the Apify actor with another REST API (e.g, Clearbit, Zoominfo) by modifying the HTTP Request node and validation logic.

6 nodes

Web Page Scraper via FireCrawl (Reusable Sub-Workflow)

High-Level Summary This workflow provides a reusable web scraping sub-workflow that accepts a target URL via an incoming execution request and returns the page content converted to Markdown using the FireCrawl API. It's designed to be called from other n8n workflows or AI agents, enabling seamless integration of web content extraction into larger automations. By centralizing the scraping logic, you avoid duplicating API setup across multiple workflows. Workflow Nodes Execute Workflow Trigger (No auth) — This node acts as the entry point, triggered only when another workflow calls this one via the "Execute Workflow" node. It expects incoming JSON with a property containing the URL to scrape. FireCrawl (HTTP Request) (Header Auth) — Sends a POST request to the FireCrawl endpoint. The request body is built dynamically using the expression: Authentication uses a generic Header Auth credential. You must configure a credential with a custom header (typically or ) and the value of your FireCrawl API key. Edit Fields (Set) (No auth) — Extracts the scraped content from the FireCrawl response () and maps it to a new field named . This clean output can then be used by the calling workflow. Sticky Note — Provides inline documentation within the editor, explaining the expected input format () and that this workflow is intended for reuse by AI agents and other workspaces. Setup Instructions FireCrawl Account: Sign up at firecrawl.dev and obtain an API key (usually a Bearer token). n8n Credential: In n8n, create a new credential of type Header Auth. Set the header name (e.g., ) and header value to . If FireCrawl requires a different header (e.g., ), adjust accordingly. Import the Workflow: Copy this workflow JSON into your n8n instance. Ensure the FireCrawl HTTP Request node is connected to the credential you just created. Test: Use the Execute Workflow node in another workflow (or use the built-in execution panel) to send the payload: The workflow will return the page content as Markdown. Use Cases and Variations AI Agent Content Ingestion: Connect this sub-workflow to an AI agent node (e.g., OpenAI, LangChain) to let the agent fetch and analyze web pages in real time. Automated Web Monitoring: Trigger this workflow on a schedule or via webhook to scrape specific URLs and store the Markdown in a database or send it to Slack. Multi-URL Scraping: Modify the incoming payload to accept an array of URLs, then add a loop node to iterate and scrape each one. Output Format: Change the parameter in the HTTP Request body from to or to get different response types. Error Handling: Add an Error Trigger or IF node to handle cases where FireCrawl returns an error (e.g., invalid URL or rate limit).

4 nodes

Ready to automate with n8n?

Get affordable managed n8n hosting with 24/7 support.