This workflow follows the Executecommand → HTTP Request recipe pattern — see all workflows that pair these two integrations.
The workflow JSON
Copy or download the full n8n JSON below. Paste it into a new n8n workflow, add your credentials, activate. Full import guide →
{
"name": "PRAGMAS - Ingest Paper",
"nodes": [
{
"parameters": {
"httpMethod": "POST",
"path": "pragmas/ingest-paper",
"responseMode": "lastNode",
"options": {}
},
"id": "1",
"name": "Paper Ingest Webhook",
"type": "n8n-nodes-base.webhook",
"typeVersion": 2,
"position": [
240,
300
]
},
{
"parameters": {
"jsCode": "const body = $json.body ?? {};\nconst query = $json.query ?? {};\nconst arxivId = String(body.arxivId ?? query.arxivId ?? $json.arxivId ?? '').trim();\nif (!arxivId) {\n throw new Error('arxivId is required');\n}\nconst rawDownload = body.downloadPdf ?? query.downloadPdf ?? $json.downloadPdf ?? false;\nconst downloadPdf = ['1', 'true', 'yes', 'on'].includes(String(rawDownload).toLowerCase());\nconst shellQuote = (value) => JSON.stringify(String(value)).replace(/[`$]/g, '\\\\$&');\nconst parts = ['python3 /workspace/scripts/analysis/ingest_arxiv_paper.py', '--vault-path', '/workspace/obsidian-vault', '--arxiv-id', arxivId];\nif (downloadPdf) {\n parts.push('--download-pdf');\n}\nreturn [{\n json: {\n arxivId,\n downloadPdf,\n command: parts.map((part, index) => index === 0 || part === '--download-pdf' ? part : shellQuote(part)).join(' ')\n }\n}];"
},
"id": "2",
"name": "Prepare Request",
"type": "n8n-nodes-base.code",
"typeVersion": 2,
"position": [
500,
300
]
},
{
"parameters": {
"command": "={{$json.command}}"
},
"id": "3",
"name": "Create Paper Note",
"type": "n8n-nodes-base.executeCommand",
"typeVersion": 1,
"position": [
780,
300
]
},
{
"parameters": {
"method": "GET",
"url": "={{$env.OBSIDIAN_API_BASE_URL + '/vault/search'}}",
"sendHeaders": true,
"headerParameters": {
"parameters": [
{
"name": "Authorization",
"value": "={{'Bearer ' + $env.OBSIDIAN_API_TOKEN}}"
}
]
},
"sendQuery": true,
"queryParameters": {
"parameters": [
{
"name": "query",
"value": "={{$('Prepare Request').item.json.arxivId}}"
},
{
"name": "limit",
"value": "3"
}
]
},
"options": {}
},
"id": "4",
"name": "Verify In Vault",
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.2,
"position": [
1040,
300
]
}
],
"connections": {
"Paper Ingest Webhook": {
"main": [
[
{
"node": "Prepare Request",
"type": "main",
"index": 0
}
]
]
},
"Prepare Request": {
"main": [
[
{
"node": "Create Paper Note",
"type": "main",
"index": 0
}
]
]
},
"Create Paper Note": {
"main": [
[
{
"node": "Verify In Vault",
"type": "main",
"index": 0
}
]
]
}
},
"active": true,
"settings": {
"executionOrder": "v1"
},
"versionId": "pragmas-ingest-paper-v2",
"meta": {
"templateCredsSetupCompleted": true
},
"id": "pragmas-ingest-paper"
}
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
PRAGMAS - Ingest Paper. Uses executeCommand, httpRequest. Webhook trigger; 4 nodes.
Source: https://github.com/pragmasg/oros/blob/30d34ca64e9d5769a502747bfe15b88a7fe8e679/n8n-workflows/ingest-paper.json — original creator credit. Request a take-down →
Related workflows
Workflows that share integrations, category, or trigger type with this one. All free to copy and import.
HeyDinastia. Uses executeCommand, httpRequest, youTube, postgres. Webhook trigger; 66 nodes.
ai agent flow. Uses httpRequest, agent, lmChatOllama, executeCommand. Webhook trigger; 21 nodes.
This workflow exposes a webhook-based FAQ endpoint that embeds incoming questions with OpenAI, retrieves relevant knowledge base chunks from Supabase pgvector, and asks Anthropic Claude to answer stri
Document Ingestion Pipeline. Uses executeCommand, readBinaryFile, readPDF, httpRequest. Event-driven trigger; 12 nodes.
Agente IA con ChromaDB + Ollama + API Empresa. Uses httpRequest, functionItem. Webhook trigger; 8 nodes.