feat(Jina AI Node): Add Jina AI node (#15094)

This commit is contained in:
RomanDavydchuk
2025-05-09 12:12:49 +03:00
committed by GitHub
parent 4824798db0
commit e9ef193eaa
13 changed files with 1333 additions and 0 deletions

View File

@@ -0,0 +1,43 @@
import type {
IAuthenticateGeneric,
ICredentialTestRequest,
ICredentialType,
INodeProperties,
} from 'n8n-workflow';
export class JinaAiApi implements ICredentialType {
name = 'jinaAiApi';
displayName = 'Jina AI API';
documentationUrl = 'jinaAi';
properties: INodeProperties[] = [
{
displayName: 'API Key',
name: 'apiKey',
type: 'string',
typeOptions: { password: true },
default: '',
},
];
authenticate: IAuthenticateGeneric = {
type: 'generic',
properties: {
headers: {
Authorization: '=Bearer {{ $credentials?.apiKey }}',
},
},
};
test: ICredentialTestRequest = {
request: {
method: 'GET',
url: 'https://embeddings-dashboard-api.jina.ai/api/v1/api_key/fe_user',
qs: {
api_key: '={{$credentials.apiKey}}',
},
},
};
}

View File

@@ -0,0 +1,18 @@
{
"node": "n8n-nodes-base.jinaAi",
"nodeVersion": "1.0",
"codexVersion": "1.0",
"categories": ["Miscellaneous"],
"resources": {
"credentialDocumentation": [
{
"url": "https://docs.n8n.io/integrations/builtin/credentials/jinaai/"
}
],
"primaryDocumentation": [
{
"url": "https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.jinaai/"
}
]
}
}

View File

@@ -0,0 +1,465 @@
import { NodeConnectionTypes, type INodeType, type INodeTypeDescription } from 'n8n-workflow';
export class JinaAi implements INodeType {
description: INodeTypeDescription = {
displayName: 'Jina AI',
name: 'jinaAi',
icon: {
light: 'file:jinaAi.svg',
dark: 'file:jinaAi.dark.svg',
},
group: ['transform'],
version: 1,
subtitle: '={{ $parameter["operation"] + ": " + $parameter["resource"] }}',
description: 'Interact with Jina AI API',
defaults: {
name: 'Jina AI',
},
inputs: [NodeConnectionTypes.Main],
outputs: [NodeConnectionTypes.Main],
usableAsTool: true,
credentials: [
{
name: 'jinaAiApi',
required: true,
},
],
requestDefaults: {
headers: {
Accept: 'application/json',
},
},
properties: [
{
displayName: 'Resource',
name: 'resource',
type: 'options',
noDataExpression: true,
options: [
{
name: 'Reader',
value: 'reader',
},
{
name: 'Research',
value: 'research',
},
],
default: 'reader',
},
// Operations
{
displayName: 'Operation',
name: 'operation',
type: 'options',
noDataExpression: true,
displayOptions: {
show: {
resource: ['reader'],
},
},
options: [
{
name: 'Read',
value: 'read',
action: 'Read URL content',
description:
'Fetches content from a URL and converts it to clean, LLM-friendly formats',
routing: {
request: {
method: 'GET',
url: '=https://r.jina.ai/{{ $parameter["url"] }}',
headers: {
'X-Return-Format': '={{ $parameter["options"]["outputFormat"] }}',
'X-Target-Selector': '={{ $parameter["options"]["targetSelector"] }}',
'X-Remove-Selector': '={{ $parameter["options"]["excludeSelector"] }}',
'X-With-Generated-Alt': '={{ $parameter["options"]["enableImageCaptioning"] }}',
'X-Wait-For-Selector': '={{ $parameter["options"]["waitForSelector"] }}',
},
},
output: {
postReceive: [
{
type: 'rootProperty',
enabled: '={{ $parameter["simplify"] }}',
properties: {
property: 'data',
},
},
],
},
},
},
{
name: 'Search',
value: 'search',
action: 'Search web',
description:
'Performs a web search via Jina AI and returns top results as clean, LLM-friendly formats',
routing: {
request: {
method: 'GET',
url: 'https://s.jina.ai/',
headers: {
'X-Return-Format': '={{ $parameter["options"]["outputFormat"] }}',
'X-Site': '={{ $parameter["options"]["siteFilter"] }}',
},
qs: {
q: '={{ $parameter["searchQuery"] }}',
page: '={{ $parameter["options"]["pageNumber"] }}',
},
},
output: {
postReceive: [
{
type: 'rootProperty',
enabled: '={{ $parameter["simplify"] }}',
properties: {
property: 'data',
},
},
],
},
},
},
],
default: 'read',
},
{
displayName: 'Operation',
name: 'operation',
type: 'options',
noDataExpression: true,
displayOptions: {
show: {
resource: ['research'],
},
},
options: [
{
name: 'Deep Research',
value: 'deepResearch',
action: 'Perform deep research',
description: 'Research a topic and generate a structured research report',
routing: {
request: {
method: 'POST',
url: 'https://deepsearch.jina.ai/v1/chat/completions',
body: {
messages: [
{
role: 'user',
content: '={{ $parameter["researchQuery"] }}',
},
],
max_returned_urls: '={{ $parameter["options"]["maxReturnedSources"] }}',
boost_hostnames:
'={{ $parameter["options"]["prioritizeSources"].split(/,\\s*/) }}',
bad_hostnames: '={{ $parameter["options"]["excludeSources"].split(/,\\s*/) }}',
only_hostnames: '={{ $parameter["options"]["siteFilter"].split(/,\\s*/) }}',
},
},
output: {
postReceive: [
{
type: 'setKeyValue',
enabled: '={{ $parameter["simplify"] }}',
properties: {
content: '={{ $responseItem["choices"][0]["message"]["content"] }}',
annotations: '={{ $responseItem["choices"][0]["message"]["annotations"] }}',
usage: '={{ $responseItem["usage"] }}',
},
},
],
},
},
},
],
default: 'deepResearch',
},
// Options for Reader
{
displayName: 'URL',
name: 'url',
type: 'string',
required: true,
default: '',
placeholder: 'https://jina.ai/',
description: 'The URL to fetch content from',
displayOptions: {
show: {
resource: ['reader'],
operation: ['read'],
},
},
},
{
displayName: 'Simplify',
name: 'simplify',
type: 'boolean',
default: true,
description:
'Whether to return a simplified version of the response instead of the raw data',
displayOptions: {
show: {
resource: ['reader'],
operation: ['read'],
},
},
},
{
displayName: 'Options',
name: 'options',
type: 'collection',
placeholder: 'Add Option',
default: {},
displayOptions: {
show: {
resource: ['reader'],
operation: ['read'],
},
},
options: [
{
displayName: 'Output Format',
name: 'outputFormat',
description: 'Specify desired output format',
type: 'options',
options: [
{
name: 'HTML',
value: 'html',
},
{
name: 'JSON',
value: '',
},
{
name: 'Markdown',
value: 'markdown',
},
{
name: 'Screenshot',
value: 'screenshot',
},
{
name: 'Text',
value: 'text',
},
],
default: '',
},
{
displayName: 'Target CSS Selector',
name: 'targetSelector',
type: 'string',
description: 'CSS selector to focus on specific page elements',
default: '',
placeholder: 'e.g. #main-content .article',
},
{
displayName: 'Exclude CSS Selector',
name: 'excludeSelector',
type: 'string',
description: 'CSS selector for elements to exclude',
default: '',
placeholder: 'e.g. header, footer, .ads',
},
{
displayName: 'Enable Image Captioning',
name: 'enableImageCaptioning',
type: 'boolean',
default: false,
description: 'Whether to generate captions for images within the content',
},
{
displayName: 'Wait for CSS Selector',
name: 'waitForSelector',
type: 'string',
description:
'Wait for a specific element to appear before extracting content (for dynamic pages)',
default: '',
placeholder: 'e.g. #results-loaded',
},
],
},
{
displayName: 'Search Query',
name: 'searchQuery',
type: 'string',
required: true,
default: '',
placeholder: 'e.g. Jina AI',
displayOptions: {
show: {
resource: ['reader'],
operation: ['search'],
},
},
},
{
displayName: 'Simplify',
name: 'simplify',
type: 'boolean',
default: true,
description:
'Whether to return a simplified version of the response instead of the raw data',
displayOptions: {
show: {
resource: ['reader'],
operation: ['search'],
},
},
},
{
displayName: 'Options',
name: 'options',
type: 'collection',
placeholder: 'Add Option',
default: {},
displayOptions: {
show: {
resource: ['reader'],
operation: ['search'],
},
},
options: [
{
displayName: 'Output Format',
name: 'outputFormat',
description: 'Specify desired output format',
type: 'options',
options: [
{
name: 'HTML',
value: 'html',
},
{
name: 'JSON',
value: '',
},
{
name: 'Markdown',
value: 'markdown',
},
{
name: 'Screenshot',
value: 'screenshot',
},
{
name: 'Text',
value: 'text',
},
],
default: 'json',
},
{
displayName: 'Site Filter',
name: 'siteFilter',
type: 'string',
description: 'Restrict search to specific websites',
default: '',
placeholder: 'e.g. jina.ai, github.com',
},
{
displayName: 'Page Number',
name: 'pageNumber',
type: 'number',
typeOptions: {
minValue: 1,
numberPrecision: 0,
},
description: 'The page number of the search results to retrieve',
default: '',
placeholder: '1',
},
],
},
// Options for Research
{
displayName: 'Research Query',
name: 'researchQuery',
type: 'string',
required: true,
default: '',
description: 'The topic or question for the AI to research',
placeholder:
'e.g. Analyze the impact of renewable energy sources on climate change mitigation',
typeOptions: {
rows: 2,
},
displayOptions: {
show: {
resource: ['research'],
operation: ['deepResearch'],
},
},
},
{
displayName: 'Simplify',
name: 'simplify',
type: 'boolean',
default: true,
description:
'Whether to return a simplified version of the response instead of the raw data',
displayOptions: {
show: {
resource: ['research'],
operation: ['deepResearch'],
},
},
},
{
displayName: 'Options',
name: 'options',
type: 'collection',
placeholder: 'Add Option',
default: {},
displayOptions: {
show: {
resource: ['research'],
operation: ['deepResearch'],
},
},
options: [
{
displayName: 'Max Returned Sources',
name: 'maxReturnedSources',
description: 'The maximum number of URLs to include in the final answer',
type: 'number',
typeOptions: {
minValue: 1,
numberPrecision: 0,
},
default: '',
placeholder: 'e.g. 5',
},
{
displayName: 'Prioritize Sources',
name: 'prioritizeSources',
type: 'string',
description: 'A list of domains that are given a higher priority for content retrieval',
default: '',
placeholder: 'e.g. jina.ai, github.com',
},
{
displayName: 'Exclude Sources',
name: 'excludeSources',
type: 'string',
description: 'A list of domains to be strictly excluded from content retrieval',
default: '',
placeholder: 'e.g. jina.ai, github.com',
},
{
displayName: 'Site Filter',
name: 'siteFilter',
type: 'string',
description: 'Restrict search to specific websites',
default: '',
placeholder: 'e.g. jina.ai, github.com',
},
],
},
],
};
}

View File

@@ -0,0 +1,109 @@
import { NodeTestHarness } from '@nodes-testing/node-test-harness';
import nock from 'nock';
import deepResearchResult from './fixtures/deepResearch.json';
import readResult from './fixtures/read.json';
import searchResult from './fixtures/search.json';
describe('JinaAI Node', () => {
const credentials = {
jinaAiApi: {
apiKey: 'API-KEY',
},
};
describe('Reader -> Read', () => {
const jinaAiNock = nock('https://r.jina.ai');
beforeAll(() => {
jinaAiNock.get('/https://first.com/some/path').times(2).reply(200, readResult);
jinaAiNock
.get('/https://second.com/other')
.query({
foo: 'bar',
})
.matchHeader('X-Return-Format', 'markdown')
.matchHeader('X-Target-Selector', 'article')
.matchHeader('X-Remove-Selector', '.ad')
.matchHeader('X-With-Generated-Alt', 'true')
.matchHeader('X-Wait-For-Selector', '#posts')
.reply(200, readResult);
});
afterAll(() => jinaAiNock.done());
new NodeTestHarness().setupTests({
credentials,
workflowFiles: ['read.workflow.json'],
});
});
describe('Reader -> Search', () => {
const jinaAiNock = nock('https://s.jina.ai');
beforeAll(() => {
jinaAiNock
.get('/')
.query({
q: 'Jina AI',
})
.times(2)
.reply(200, searchResult);
jinaAiNock
.get('/')
.query({
q: 'Jina AI',
page: 2,
})
.matchHeader('X-Return-Format', 'markdown')
.matchHeader('X-Site', 'jina.ai')
.reply(200, searchResult);
});
afterAll(() => jinaAiNock.done());
new NodeTestHarness().setupTests({
credentials,
workflowFiles: ['search.workflow.json'],
});
});
describe('Research -> Deep Research', () => {
const jinaAiNock = nock('https://deepsearch.jina.ai');
beforeAll(() => {
jinaAiNock
.post('/v1/chat/completions', {
messages: [
{
role: 'user',
content: 'Describe the latest features in Jina AI',
},
],
})
.times(2)
.reply(200, deepResearchResult);
jinaAiNock
.post('/v1/chat/completions', {
messages: [
{
role: 'user',
content: 'Describe the latest features in Jina AI',
},
],
max_returned_urls: 5,
boost_hostnames: ['jina.ai'],
bad_hostnames: ['medium.com'],
only_hostnames: ['jina.ai', 'github.com'],
})
.reply(200, deepResearchResult);
});
afterAll(() => jinaAiNock.done());
new NodeTestHarness().setupTests({
credentials,
workflowFiles: ['deepResearch.workflow.json'],
});
});
});

View File

@@ -0,0 +1,226 @@
{
"name": "Jina AI -> Research -> Deep Research",
"nodes": [
{
"parameters": {},
"type": "n8n-nodes-base.manualTrigger",
"typeVersion": 1,
"position": [-240, 260],
"id": "8a73e8c0-c2b8-4933-98e1-a2577b9f4902",
"name": "When clicking Test workflow"
},
{
"parameters": {
"resource": "research",
"researchQuery": "Describe the latest features in Jina AI",
"simplify": false,
"options": {},
"requestOptions": {}
},
"type": "n8n-nodes-base.jinaAi",
"typeVersion": 1,
"position": [-20, 60],
"id": "cf8f337f-841c-4715-9ecd-d1b877d5b098",
"name": "No options",
"credentials": {
"jinaAiApi": {
"id": "8ph5AE62dQFfqkLx",
"name": "Jina AI account"
}
}
},
{
"parameters": {
"resource": "research",
"researchQuery": "Describe the latest features in Jina AI",
"simplify": false,
"options": {
"maxReturnedSources": 5,
"prioritizeSources": "jina.ai",
"excludeSources": "medium.com",
"siteFilter": "jina.ai, github.com"
},
"requestOptions": {}
},
"type": "n8n-nodes-base.jinaAi",
"typeVersion": 1,
"position": [-20, 260],
"id": "c353f860-0bc4-453f-a620-2f054721f52a",
"name": "With options",
"credentials": {
"jinaAiApi": {
"id": "8ph5AE62dQFfqkLx",
"name": "Jina AI account"
}
}
},
{
"parameters": {
"resource": "research",
"researchQuery": "Describe the latest features in Jina AI",
"options": {},
"requestOptions": {}
},
"type": "n8n-nodes-base.jinaAi",
"typeVersion": 1,
"position": [-20, 460],
"id": "91269e77-35b1-4bf5-b0b6-8876e0126b36",
"name": "Simplified",
"credentials": {
"jinaAiApi": {
"id": "8ph5AE62dQFfqkLx",
"name": "Jina AI account"
}
}
}
],
"pinData": {
"No options": [
{
"json": {
"id": "123",
"object": "chat.completion",
"created": 1746186539,
"system_fingerprint": "fp_123",
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.",
"type": "text",
"annotations": [
{
"type": "url_citation",
"url_citation": {
"title": "Lorem ipsum dolor sit amet",
"exactQuote": "Lorem ipsum dolor sit amet, consectetur adipiscing elit.",
"url": "https://some.referenced.site.com/article",
"dateTime": "Aug 30, 2024"
}
}
]
},
"logprobs": null,
"finish_reason": "stop"
}
],
"usage": {
"prompt_tokens": 123,
"completion_tokens": 456,
"total_tokens": 579
},
"visitedURLs": ["https://first.com/some/path", "https://second.com/?foo=bar"],
"readURLs": [
"https://example.com",
"https://example.com/2",
"https://some.other.site.com/path"
],
"numURLs": 5
}
}
],
"With options": [
{
"json": {
"id": "123",
"object": "chat.completion",
"created": 1746186539,
"system_fingerprint": "fp_123",
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.",
"type": "text",
"annotations": [
{
"type": "url_citation",
"url_citation": {
"title": "Lorem ipsum dolor sit amet",
"exactQuote": "Lorem ipsum dolor sit amet, consectetur adipiscing elit.",
"url": "https://some.referenced.site.com/article",
"dateTime": "Aug 30, 2024"
}
}
]
},
"logprobs": null,
"finish_reason": "stop"
}
],
"usage": {
"prompt_tokens": 123,
"completion_tokens": 456,
"total_tokens": 579
},
"visitedURLs": ["https://first.com/some/path", "https://second.com/?foo=bar"],
"readURLs": [
"https://example.com",
"https://example.com/2",
"https://some.other.site.com/path"
],
"numURLs": 5
}
}
],
"Simplified": [
{
"json": {
"content": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.",
"annotations": [
{
"type": "url_citation",
"url_citation": {
"title": "Lorem ipsum dolor sit amet",
"exactQuote": "Lorem ipsum dolor sit amet, consectetur adipiscing elit.",
"url": "https://some.referenced.site.com/article",
"dateTime": "Aug 30, 2024"
}
}
],
"usage": {
"prompt_tokens": 123,
"completion_tokens": 456,
"total_tokens": 579
}
}
}
]
},
"connections": {
"When clicking Test workflow": {
"main": [
[
{
"node": "No options",
"type": "main",
"index": 0
},
{
"node": "With options",
"type": "main",
"index": 0
},
{
"node": "Simplified",
"type": "main",
"index": 0
}
]
]
}
},
"active": false,
"settings": {
"executionOrder": "v1"
},
"versionId": "b822e0dc-3c01-43d5-ad56-419814a40af7",
"meta": {
"templateCredsSetupCompleted": true,
"instanceId": "e115be144a6a5547dbfca93e774dfffa178aa94a181854c13e2ce5e14d195b2e"
},
"id": "Qttu9wESqI9vHYBA",
"tags": []
}

View File

@@ -0,0 +1,37 @@
{
"id": "123",
"object": "chat.completion",
"created": 1746186539,
"system_fingerprint": "fp_123",
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.",
"type": "text",
"annotations": [
{
"type": "url_citation",
"url_citation": {
"title": "Lorem ipsum dolor sit amet",
"exactQuote": "Lorem ipsum dolor sit amet, consectetur adipiscing elit.",
"url": "https://some.referenced.site.com/article",
"dateTime": "Aug 30, 2024"
}
}
]
},
"logprobs": null,
"finish_reason": "stop"
}
],
"usage": {
"prompt_tokens": 123,
"completion_tokens": 456,
"total_tokens": 579
},
"visitedURLs": ["https://first.com/some/path", "https://second.com/?foo=bar"],
"readURLs": ["https://example.com", "https://example.com/2", "https://some.other.site.com/path"],
"numURLs": 5
}

View File

@@ -0,0 +1,18 @@
{
"code": 200,
"status": 20000,
"data": {
"title": "Jina AI - Your Search Foundation, Supercharged.",
"url": "https://jina.ai/",
"description": "Best-in-class embeddings, rerankers, web crawler scraper, deepsearch, small LMs. The search AI for multilingual and multimodal data.",
"content": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.",
"usage": {
"tokens": 123
}
},
"meta": {
"usage": {
"tokens": 123
}
}
}

View File

@@ -0,0 +1,30 @@
{
"code": 200,
"status": 20000,
"data": [
{
"title": "Jina AI - Your Search Foundation, Supercharged.",
"url": "https://jina.ai/",
"description": "Best-in-class embeddings, rerankers, web crawler scraper, deepsearch, small LMs. The search AI for multilingual and multimodal data.",
"content": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.",
"usage": {
"tokens": 123
}
},
{
"title": "Jina AI",
"url": "https://github.com/jina-ai",
"description": "Your Search Foundation, Supercharged! Jina AI has 243 repositories available. Follow their code on GitHub.",
"date": "Mar 24, 2025",
"content": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.",
"usage": {
"tokens": 123
}
}
],
"meta": {
"usage": {
"tokens": 246
}
}
}

View File

@@ -0,0 +1,168 @@
{
"name": "Jina AI -> Reader -> Read",
"nodes": [
{
"parameters": {},
"type": "n8n-nodes-base.manualTrigger",
"typeVersion": 1,
"position": [0, 100],
"id": "75a081a7-14e6-4f63-a0b6-86f54937d59d",
"name": "When clicking Test workflow"
},
{
"parameters": {
"url": "https://first.com/some/path",
"simplify": false,
"options": {},
"requestOptions": {}
},
"type": "n8n-nodes-base.jinaAi",
"typeVersion": 1,
"position": [220, -100],
"id": "92e091b7-42dd-4751-8432-58a211840b35",
"name": "No options",
"credentials": {
"jinaAiApi": {
"id": "8ph5AE62dQFfqkLx",
"name": "Jina AI account"
}
}
},
{
"parameters": {
"url": "https://second.com/other?foo=bar",
"simplify": false,
"options": {
"outputFormat": "markdown",
"targetSelector": "article",
"excludeSelector": ".ad",
"enableImageCaptioning": true,
"waitForSelector": "#posts"
},
"requestOptions": {}
},
"type": "n8n-nodes-base.jinaAi",
"typeVersion": 1,
"position": [220, 100],
"id": "f598a0ee-794e-4c31-8833-327768f7eecb",
"name": "With options",
"credentials": {
"jinaAiApi": {
"id": "8ph5AE62dQFfqkLx",
"name": "Jina AI account"
}
}
},
{
"parameters": {
"url": "https://first.com/some/path",
"options": {},
"requestOptions": {}
},
"type": "n8n-nodes-base.jinaAi",
"typeVersion": 1,
"position": [220, 300],
"id": "79d27978-20af-494d-b9bd-32f68883ac54",
"name": "Simplified",
"credentials": {
"jinaAiApi": {
"id": "8ph5AE62dQFfqkLx",
"name": "Jina AI account"
}
}
}
],
"pinData": {
"No options": [
{
"json": {
"code": 200,
"status": 20000,
"data": {
"title": "Jina AI - Your Search Foundation, Supercharged.",
"url": "https://jina.ai/",
"description": "Best-in-class embeddings, rerankers, web crawler scraper, deepsearch, small LMs. The search AI for multilingual and multimodal data.",
"content": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.",
"usage": {
"tokens": 123
}
},
"meta": {
"usage": {
"tokens": 123
}
}
}
}
],
"With options": [
{
"json": {
"code": 200,
"status": 20000,
"data": {
"title": "Jina AI - Your Search Foundation, Supercharged.",
"url": "https://jina.ai/",
"description": "Best-in-class embeddings, rerankers, web crawler scraper, deepsearch, small LMs. The search AI for multilingual and multimodal data.",
"content": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.",
"usage": {
"tokens": 123
}
},
"meta": {
"usage": {
"tokens": 123
}
}
}
}
],
"Simplified": [
{
"json": {
"title": "Jina AI - Your Search Foundation, Supercharged.",
"url": "https://jina.ai/",
"description": "Best-in-class embeddings, rerankers, web crawler scraper, deepsearch, small LMs. The search AI for multilingual and multimodal data.",
"content": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.",
"usage": {
"tokens": 123
}
}
}
]
},
"connections": {
"When clicking Test workflow": {
"main": [
[
{
"node": "No options",
"type": "main",
"index": 0
},
{
"node": "With options",
"type": "main",
"index": 0
},
{
"node": "Simplified",
"type": "main",
"index": 0
}
]
]
}
},
"active": false,
"settings": {
"executionOrder": "v1"
},
"versionId": "41f0e679-7754-4b3c-a86c-e130a18d4378",
"meta": {
"templateCredsSetupCompleted": true,
"instanceId": "e115be144a6a5547dbfca93e774dfffa178aa94a181854c13e2ce5e14d195b2e"
},
"id": "MFBoiglfRhCu9HgF",
"tags": []
}

View File

@@ -0,0 +1,205 @@
{
"name": "Jina AI -> Reader -> Search",
"nodes": [
{
"parameters": {},
"type": "n8n-nodes-base.manualTrigger",
"typeVersion": 1,
"position": [-360, 40],
"id": "b7e0a085-eb10-48a7-a25e-853b36aef252",
"name": "When clicking Test workflow"
},
{
"parameters": {
"operation": "search",
"searchQuery": "Jina AI",
"simplify": false,
"options": {},
"requestOptions": {}
},
"type": "n8n-nodes-base.jinaAi",
"typeVersion": 1,
"position": [-140, -160],
"id": "ea197991-8539-4221-9798-842f4026f31b",
"name": "No options",
"credentials": {
"jinaAiApi": {
"id": "8ph5AE62dQFfqkLx",
"name": "Jina AI account"
}
}
},
{
"parameters": {
"operation": "search",
"searchQuery": "Jina AI",
"simplify": false,
"options": {
"outputFormat": "markdown",
"siteFilter": "jina.ai",
"pageNumber": 2
},
"requestOptions": {}
},
"type": "n8n-nodes-base.jinaAi",
"typeVersion": 1,
"position": [-140, 40],
"id": "dbfbbf4a-caa1-4922-b200-723748636773",
"name": "With options",
"credentials": {
"jinaAiApi": {
"id": "8ph5AE62dQFfqkLx",
"name": "Jina AI account"
}
}
},
{
"parameters": {
"operation": "search",
"searchQuery": "Jina AI",
"options": {},
"requestOptions": {}
},
"type": "n8n-nodes-base.jinaAi",
"typeVersion": 1,
"position": [-140, 240],
"id": "91ca27b2-eab4-4131-a544-5ae4794ac0b3",
"name": "Simplified",
"credentials": {
"jinaAiApi": {
"id": "8ph5AE62dQFfqkLx",
"name": "Jina AI account"
}
}
}
],
"pinData": {
"No options": [
{
"json": {
"code": 200,
"status": 20000,
"data": [
{
"title": "Jina AI - Your Search Foundation, Supercharged.",
"url": "https://jina.ai/",
"description": "Best-in-class embeddings, rerankers, web crawler scraper, deepsearch, small LMs. The search AI for multilingual and multimodal data.",
"content": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.",
"usage": {
"tokens": 123
}
},
{
"title": "Jina AI",
"url": "https://github.com/jina-ai",
"description": "Your Search Foundation, Supercharged! Jina AI has 243 repositories available. Follow their code on GitHub.",
"date": "Mar 24, 2025",
"content": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.",
"usage": {
"tokens": 123
}
}
],
"meta": {
"usage": {
"tokens": 246
}
}
}
}
],
"With options": [
{
"json": {
"code": 200,
"status": 20000,
"data": [
{
"title": "Jina AI - Your Search Foundation, Supercharged.",
"url": "https://jina.ai/",
"description": "Best-in-class embeddings, rerankers, web crawler scraper, deepsearch, small LMs. The search AI for multilingual and multimodal data.",
"content": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.",
"usage": {
"tokens": 123
}
},
{
"title": "Jina AI",
"url": "https://github.com/jina-ai",
"description": "Your Search Foundation, Supercharged! Jina AI has 243 repositories available. Follow their code on GitHub.",
"date": "Mar 24, 2025",
"content": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.",
"usage": {
"tokens": 123
}
}
],
"meta": {
"usage": {
"tokens": 246
}
}
}
}
],
"Simplified": [
{
"json": {
"title": "Jina AI - Your Search Foundation, Supercharged.",
"url": "https://jina.ai/",
"description": "Best-in-class embeddings, rerankers, web crawler scraper, deepsearch, small LMs. The search AI for multilingual and multimodal data.",
"content": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.",
"usage": {
"tokens": 123
}
}
},
{
"json": {
"title": "Jina AI",
"url": "https://github.com/jina-ai",
"description": "Your Search Foundation, Supercharged! Jina AI has 243 repositories available. Follow their code on GitHub.",
"date": "Mar 24, 2025",
"content": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.",
"usage": {
"tokens": 123
}
}
}
]
},
"connections": {
"When clicking Test workflow": {
"main": [
[
{
"node": "No options",
"type": "main",
"index": 0
},
{
"node": "With options",
"type": "main",
"index": 0
},
{
"node": "Simplified",
"type": "main",
"index": 0
}
]
]
}
},
"active": false,
"settings": {
"executionOrder": "v1"
},
"versionId": "b425b5ec-f0b1-4f81-a83b-ca6a787d7a1d",
"meta": {
"templateCredsSetupCompleted": true,
"instanceId": "e115be144a6a5547dbfca93e774dfffa178aa94a181854c13e2ce5e14d195b2e"
},
"id": "QVbuEahHyMKrgfFc",
"tags": []
}

View File

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="128px" height="128px" viewBox="0 0 128 128" version="1.1">
<g id="surface1">
<path style=" stroke:none;fill-rule:evenodd;fill:rgb(100%,100%,100%);fill-opacity:1;" d="M 35.242188 114.21875 C 48.816406 114.21875 59.820312 103.214844 59.820312 89.640625 C 59.820312 76.066406 48.816406 65.0625 35.242188 65.0625 C 21.667969 65.0625 10.664062 76.066406 10.664062 89.640625 C 10.664062 103.214844 21.667969 114.21875 35.242188 114.21875 Z M 111.433594 10.746094 C 114.710938 10.746094 117.332031 13.371094 117.332031 16.644531 L 117.332031 64.65625 C 117.332031 92.015625 95.210938 114.304688 68.175781 114.628906 L 68.175781 64.734375 L 68.015625 16.566406 C 68.015625 13.289062 70.632812 10.667969 73.914062 10.667969 L 112.089844 10.667969 Z M 111.433594 10.746094 "/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 908 B

View File

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="128px" height="128px" viewBox="0 0 128 128" version="1.1">
<g id="surface1">
<path style=" stroke:none;fill-rule:evenodd;fill:rgb(0%,0%,0%);fill-opacity:1;" d="M 35.242188 114.21875 C 48.816406 114.21875 59.820312 103.214844 59.820312 89.640625 C 59.820312 76.066406 48.816406 65.0625 35.242188 65.0625 C 21.667969 65.0625 10.664062 76.066406 10.664062 89.640625 C 10.664062 103.214844 21.667969 114.21875 35.242188 114.21875 Z M 111.433594 10.746094 C 114.710938 10.746094 117.332031 13.371094 117.332031 16.644531 L 117.332031 64.65625 C 117.332031 92.015625 95.210938 114.304688 68.175781 114.628906 L 68.175781 64.734375 L 68.015625 16.566406 C 68.015625 13.289062 70.632812 10.667969 73.914062 10.667969 L 112.089844 10.667969 Z M 111.433594 10.746094 "/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 902 B

View File

@@ -186,6 +186,7 @@
"dist/credentials/InvoiceNinjaApi.credentials.js",
"dist/credentials/IterableApi.credentials.js",
"dist/credentials/JenkinsApi.credentials.js",
"dist/credentials/JinaAiApi.credentials.js",
"dist/credentials/JiraSoftwareCloudApi.credentials.js",
"dist/credentials/JiraSoftwareServerApi.credentials.js",
"dist/credentials/JiraSoftwareServerPatApi.credentials.js",
@@ -597,6 +598,7 @@
"dist/nodes/ItemLists/ItemLists.node.js",
"dist/nodes/Iterable/Iterable.node.js",
"dist/nodes/Jenkins/Jenkins.node.js",
"dist/nodes/JinaAI/JinaAi.node.js",
"dist/nodes/Jira/Jira.node.js",
"dist/nodes/Jira/JiraTrigger.node.js",
"dist/nodes/JotForm/JotFormTrigger.node.js",