n8n-nodes-crawlora 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +72 -0
- package/dist/credentials/CrawloraApi.credentials.d.ts +9 -0
- package/dist/credentials/CrawloraApi.credentials.js +39 -0
- package/dist/nodes/Crawlora/Crawlora.node.d.ts +4 -0
- package/dist/nodes/Crawlora/Crawlora.node.js +47 -0
- package/dist/nodes/Crawlora/crawlora.svg +5 -0
- package/dist/nodes/Crawlora/properties.json +72586 -0
- package/index.js +1 -0
- package/package.json +49 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Crawlora
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
# n8n-nodes-crawlora
|
|
2
|
+
|
|
3
|
+
An [n8n](https://n8n.io) community node for [Crawlora](https://crawlora.net) — get structured web
|
|
4
|
+
data from the public web (search, maps, e‑commerce, social, finance, page content, and more) without
|
|
5
|
+
maintaining your own parsers.
|
|
6
|
+
|
|
7
|
+
This node exposes the Crawlora API as n8n **Resources** (one per data source — Web, Google, Amazon,
|
|
8
|
+
YouTube, Maps, Finance, …) and **Operations** (the endpoints under each). It is generated from the
|
|
9
|
+
Crawlora OpenAPI spec, so it stays in sync with the API.
|
|
10
|
+
|
|
11
|
+
## Installation
|
|
12
|
+
|
|
13
|
+
In n8n: **Settings → Community Nodes → Install**, then enter `n8n-nodes-crawlora`.
|
|
14
|
+
|
|
15
|
+
(Self-hosted manual install and local development are covered under "Development" below.)
|
|
16
|
+
|
|
17
|
+
## Credentials
|
|
18
|
+
|
|
19
|
+
Create a **Crawlora API** credential and paste your API key. It is sent as the `x-api-key` header on
|
|
20
|
+
every request. Get a key from your [Crawlora dashboard](https://crawlora.net/app/api-keys) — new
|
|
21
|
+
accounts include a free monthly credit allowance, no card required.
|
|
22
|
+
|
|
23
|
+
## Usage
|
|
24
|
+
|
|
25
|
+
1. Add the **Crawlora** node to a workflow.
|
|
26
|
+
2. Pick a **Resource** (the data source) and an **Operation** (the endpoint).
|
|
27
|
+
3. Fill in the fields and run.
|
|
28
|
+
|
|
29
|
+
The node is also **usable as a tool** inside the n8n **AI Agent**, so an agent can call Crawlora
|
|
30
|
+
operations directly.
|
|
31
|
+
|
|
32
|
+
> Prefer MCP? Crawlora also ships a hosted MCP server with the full catalog — use n8n's **MCP Client**
|
|
33
|
+
> node to call every Crawlora tool from an AI Agent workflow. See https://docs.crawlora.net.
|
|
34
|
+
|
|
35
|
+
## Development
|
|
36
|
+
|
|
37
|
+
The node's properties are **generated at build time** from the Crawlora OpenAPI spec and committed as
|
|
38
|
+
`nodes/Crawlora/properties.json`, so the published package has **no runtime dependencies**.
|
|
39
|
+
|
|
40
|
+
```bash
|
|
41
|
+
npm install
|
|
42
|
+
SWAGGER_PATH=<file-or-url> npm run gen # regenerate properties.json from the Crawlora API spec
|
|
43
|
+
npm run build # tsc + copy assets into dist/
|
|
44
|
+
npm run smoke # load the built node and print resource/operation counts
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
`npm run gen` loads the Crawlora OpenAPI/Swagger spec from `SWAGGER_PATH` (a file path or URL),
|
|
48
|
+
converts it to OpenAPI 3.0, drops internal/account endpoints, and rebuilds the node properties.
|
|
49
|
+
|
|
50
|
+
## Publishing
|
|
51
|
+
|
|
52
|
+
CI builds and smoke-tests on every push/PR. To release, push a `v*` tag — the **Publish** workflow
|
|
53
|
+
publishes to npm with [provenance](https://docs.npmjs.com/generating-provenance-statements) (required
|
|
54
|
+
for n8n community-node verification since 2026-05-01):
|
|
55
|
+
|
|
56
|
+
```bash
|
|
57
|
+
npm version <patch|minor> # creates the v* tag
|
|
58
|
+
git push --follow-tags
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
One-time: add an automation npm token as the `NPM_TOKEN` repository secret. Lint the package against
|
|
62
|
+
n8n's guidelines with `npx @n8n/scan-community-package .`, then submit it for the verified badge per
|
|
63
|
+
the [n8n community-node docs](https://docs.n8n.io/integrations/creating-nodes/deploy/submit-community-nodes/).
|
|
64
|
+
|
|
65
|
+
## Links
|
|
66
|
+
|
|
67
|
+
- API documentation: https://docs.crawlora.net
|
|
68
|
+
- Crawlora: https://crawlora.net
|
|
69
|
+
|
|
70
|
+
## License
|
|
71
|
+
|
|
72
|
+
[MIT](./LICENSE)
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { IAuthenticateGeneric, ICredentialTestRequest, ICredentialType, INodeProperties } from 'n8n-workflow';
|
|
2
|
+
export declare class CrawloraApi implements ICredentialType {
|
|
3
|
+
name: string;
|
|
4
|
+
displayName: string;
|
|
5
|
+
documentationUrl: string;
|
|
6
|
+
properties: INodeProperties[];
|
|
7
|
+
authenticate: IAuthenticateGeneric;
|
|
8
|
+
test: ICredentialTestRequest;
|
|
9
|
+
}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CrawloraApi = void 0;
|
|
4
|
+
class CrawloraApi {
|
|
5
|
+
constructor() {
|
|
6
|
+
this.name = 'crawloraApi';
|
|
7
|
+
this.displayName = 'Crawlora API';
|
|
8
|
+
this.documentationUrl = 'https://docs.crawlora.net';
|
|
9
|
+
this.properties = [
|
|
10
|
+
{
|
|
11
|
+
displayName: 'API Key',
|
|
12
|
+
name: 'apiKey',
|
|
13
|
+
type: 'string',
|
|
14
|
+
typeOptions: { password: true },
|
|
15
|
+
default: '',
|
|
16
|
+
required: true,
|
|
17
|
+
description: 'Your Crawlora API key. Find it at https://crawlora.net/app/api-keys (new accounts include a free monthly credit allowance).',
|
|
18
|
+
},
|
|
19
|
+
];
|
|
20
|
+
// Crawlora authenticates with the x-api-key header (not a Bearer token).
|
|
21
|
+
this.authenticate = {
|
|
22
|
+
type: 'generic',
|
|
23
|
+
properties: {
|
|
24
|
+
headers: {
|
|
25
|
+
'x-api-key': '={{$credentials.apiKey}}',
|
|
26
|
+
},
|
|
27
|
+
},
|
|
28
|
+
};
|
|
29
|
+
// Cheap, key-only request to validate the credential.
|
|
30
|
+
this.test = {
|
|
31
|
+
request: {
|
|
32
|
+
baseURL: 'https://api.crawlora.net/api/v1',
|
|
33
|
+
url: '/google/suggest',
|
|
34
|
+
qs: { q: 'crawlora' },
|
|
35
|
+
},
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
exports.CrawloraApi = CrawloraApi;
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.Crawlora = void 0;
|
|
7
|
+
const n8n_workflow_1 = require("n8n-workflow");
|
|
8
|
+
// Properties are GENERATED AT BUILD TIME from the Crawlora OpenAPI spec
|
|
9
|
+
// (`npm run gen`) and committed as properties.json, so the published node has
|
|
10
|
+
// NO runtime dependencies (an n8n verification requirement). Re-run `npm run gen`
|
|
11
|
+
// whenever the API changes to keep the node in sync.
|
|
12
|
+
const properties_json_1 = __importDefault(require("./properties.json"));
|
|
13
|
+
class Crawlora {
|
|
14
|
+
constructor() {
|
|
15
|
+
this.description = {
|
|
16
|
+
displayName: 'Crawlora',
|
|
17
|
+
name: 'crawlora',
|
|
18
|
+
icon: 'file:crawlora.svg',
|
|
19
|
+
group: ['transform'],
|
|
20
|
+
version: 1,
|
|
21
|
+
subtitle: '={{$parameter["operation"] + ": " + $parameter["resource"]}}',
|
|
22
|
+
description: 'Get structured web data from the public web via the Crawlora API',
|
|
23
|
+
defaults: {
|
|
24
|
+
name: 'Crawlora',
|
|
25
|
+
},
|
|
26
|
+
// Make the node usable as a tool inside the n8n AI Agent.
|
|
27
|
+
usableAsTool: true,
|
|
28
|
+
inputs: [n8n_workflow_1.NodeConnectionTypes.Main],
|
|
29
|
+
outputs: [n8n_workflow_1.NodeConnectionTypes.Main],
|
|
30
|
+
credentials: [
|
|
31
|
+
{
|
|
32
|
+
name: 'crawloraApi',
|
|
33
|
+
required: true,
|
|
34
|
+
},
|
|
35
|
+
],
|
|
36
|
+
requestDefaults: {
|
|
37
|
+
headers: {
|
|
38
|
+
Accept: 'application/json',
|
|
39
|
+
'Content-Type': 'application/json',
|
|
40
|
+
},
|
|
41
|
+
baseURL: 'https://api.crawlora.net/api/v1',
|
|
42
|
+
},
|
|
43
|
+
properties: properties_json_1.default,
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
exports.Crawlora = Crawlora;
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" width="64" height="64">
|
|
2
|
+
<rect width="64" height="64" rx="14" fill="#0B5FFF"/>
|
|
3
|
+
<path d="M41 24.5a12 12 0 1 0 0 15" fill="none" stroke="#fff" stroke-width="5" stroke-linecap="round"/>
|
|
4
|
+
<circle cx="44" cy="32" r="4" fill="#fff"/>
|
|
5
|
+
</svg>
|