This document demonstrates how the {{input-1.output}} variable substitution works in the workflow system.
Testing Panel Input → Data Input Node → Web Scraping Node → LLM Node → Data Output Node
{
"config": {
"url": "{{input-1.output}}",
"formats": ["markdown", "html"]
}
}What happens:
- User enters
"https://github.com"in testing panel - Data Input Node stores:
{ output: "https://github.com" } - Web Scraping Node processes:
"{{input-1.output}}"→"https://github.com" - Firecrawl scrapes the actual GitHub URL
{
"config": {
"prompt": "Analyze this content: {{scraper-1.output}}",
"model": "deepseek-chat"
}
}What happens:
- Web Scraping Node outputs:
{ output: "[scraped content]" } - LLM Node processes:
"{{scraper-1.output}}"→"[scraped content]" - AI analyzes the actual scraped content
| Pattern | Description | Example |
|---|---|---|
{{nodeId}} |
Entire output of the node | {{input-1}} |
{{nodeId.output}} |
Output property | {{input-1.output}} |
{{nodeId.data}} |
Data property | {{scraper-1.data}} |
{{nodeId.status}} |
Status property | {{llm-1.status}} |
{{nodeId.error}} |
Error property | {{scraper-1.error}} |
{
"nodes": [
{
"id": "input-1",
"type": "dataInput",
"config": {
"dataType": "url",
"defaultValue": "https://example.com"
}
},
{
"id": "scraper-1",
"type": "webScraping",
"config": {
"url": "{{input-1.output}}",
"formats": ["markdown", "html"]
}
},
{
"id": "llm-1",
"type": "llmTask",
"config": {
"prompt": "Summarize: {{scraper-1.output}}",
"model": "deepseek-chat"
}
},
{
"id": "output-1",
"type": "dataOutput",
"config": {
"format": "json",
"filename": "analysis.json"
}
}
]
}-
Testing Panel: User enters
"https://github.com" -
Data Input Node (
input-1):- Receives:
"https://github.com" - Stores:
{ output: "https://github.com" } - Status:
"success"
- Receives:
-
Web Scraping Node (
scraper-1):- Config URL:
"{{input-1.output}}" - Variable substitution:
"{{input-1.output}}"→"https://github.com" - Calls Firecrawl with:
"https://github.com" - Returns:
{ output: "[GitHub page content]", markdown: "...", html: "..." }
- Config URL:
-
LLM Task Node (
llm-1):- Config prompt:
"Summarize: {{scraper-1.output}}" - Variable substitution:
"{{scraper-1.output}}"→"[GitHub page content]" - Calls AI with:
"Summarize: [GitHub page content]" - Returns:
{ output: "[AI summary of GitHub page]" }
- Config prompt:
-
Data Output Node (
output-1):- Receives:
"[AI summary of GitHub page]" - Formats as JSON and saves to
analysis.json
- Receives:
If a variable reference doesn't exist:
{{nonexistent-node.output}}→{{nonexistent-node.output}}(unchanged)- Warning logged to console
- Node continues with original string
- Create a new workflow
- Add a Data Input node with URL as default value
- Add a Web Scraping node with URL set to
{{input-1.output}} - Add an LLM Task node with prompt containing
{{scraper-1.output}} - Run the workflow with a test URL
- Observe how variables are substituted with actual data
This variable substitution system enables powerful data flow between nodes, making workflows dynamic and flexible!