n8n-nodes-scavio 0.7.0 → 0.12.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/README.md +26 -4
- package/dist/nodes/Scavio/descriptions/AmazonDescription.js +68 -48
- package/dist/nodes/Scavio/descriptions/AmazonDescription.js.map +1 -1
- package/dist/nodes/Scavio/descriptions/GoogleDescription.js +1337 -10
- package/dist/nodes/Scavio/descriptions/GoogleDescription.js.map +1 -1
- package/dist/nodes/Scavio/descriptions/InstagramDescription.js +35 -2
- package/dist/nodes/Scavio/descriptions/InstagramDescription.js.map +1 -1
- package/dist/nodes/Scavio/descriptions/LinkedInDescription.js +65 -348
- package/dist/nodes/Scavio/descriptions/LinkedInDescription.js.map +1 -1
- package/dist/nodes/Scavio/descriptions/RedditDescription.js +31 -3
- package/dist/nodes/Scavio/descriptions/RedditDescription.js.map +1 -1
- package/dist/nodes/Scavio/descriptions/TikTokDescription.js +21 -24
- package/dist/nodes/Scavio/descriptions/TikTokDescription.js.map +1 -1
- package/dist/nodes/Scavio/descriptions/WalmartDescription.js +121 -19
- package/dist/nodes/Scavio/descriptions/WalmartDescription.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -16,8 +16,8 @@ In n8n: **Settings -> Community Nodes -> Install** -> enter `n8n-nodes-scavio`.
|
|
|
16
16
|
|
|
17
17
|
| Resource | Operations |
|
|
18
18
|
| --- | --- |
|
|
19
|
-
| Google | Search, AI Mode, Maps Search |
|
|
20
|
-
| Amazon | Search Products, Get Product |
|
|
19
|
+
| Google | Search, AI Mode, Maps Search, Maps Place Details, Maps Reviews, Shopping Search, Shopping Product, Shopping Product Stores, Flights Search, Hotels Search, Hotels Detail, News Search, Trends, Trending Now |
|
|
20
|
+
| Amazon | Search Products, Get Product, Get Offers |
|
|
21
21
|
| Walmart | Search Products, Get Product |
|
|
22
22
|
| YouTube | Search, Search Shorts, Search Channels, Get Suggestions, Get Video, Get Metadata, Get Comments, Get Comment Replies, Get Transcript, Get Related, Get Channel, Get Channel Videos, Get Channel Shorts, Get Channel Community, Resolve Channel, Get Streams |
|
|
23
23
|
| Reddit | Search Posts, Get Search Suggestions, Get Post, Get Post Comments, Get Comment Replies, Get Subreddit, Get Subreddit Posts, Get User, Get User Posts, Get User Comments, Get Popular, Get Trending |
|
|
@@ -25,9 +25,31 @@ In n8n: **Settings -> Community Nodes -> Install** -> enter `n8n-nodes-scavio`.
|
|
|
25
25
|
| TikTok Shop | Search Products, Get Search Suggestions, Get Product, Get Product Reviews, Get Categories, Get Category Products, Get Shop Products, Resolve URL |
|
|
26
26
|
| Instagram | Get Profile, Get User Posts, Get User Reels, Get User Tagged, Get User Stories, Get Post, Get Post Comments, Get Comment Replies, Search Users, Search Hashtags, Get User Followers, Get User Followings |
|
|
27
27
|
| X | Search, Get Tweet, Get Tweet Comments, Get Tweet Retweeters, Get User, Get User Tweets, Get User Replies, Get User Media, Get User Followers, Get User Followings, Get Trending |
|
|
28
|
-
| LinkedIn | Get Person, Get Person About, Get Person Posts, Get
|
|
28
|
+
| LinkedIn | Get Person, Get Person About, Get Person Posts, Get Company, Get Company Posts, Search Jobs, Get Job, Get Post, Get Post Comments |
|
|
29
29
|
| Account | Get Usage |
|
|
30
30
|
|
|
31
|
+
### What changed in 0.12.0
|
|
32
|
+
|
|
33
|
+
- **TikTok pagination works again.** `Cursor` was sent as a number on every paginated TikTok operation and the API rejected it with a 400. It is a string now. If you built an expression that fed a number into it, wrap it in `String()`.
|
|
34
|
+
- **TikTok `Sort By` lost its invented values.** User Posts is `Latest` / `Popular` and Search Videos is `Relevance` / `Most Liked`; the extra values never existed upstream and the old labels were wrong. A node saved with one of the removed values now falls back to `0`.
|
|
35
|
+
- **Eleven Google operations added**: Maps Place Details, Maps Reviews, Shopping Search, Shopping Product, Shopping Product Stores, Flights Search, Hotels Search, Hotels Detail, News Search, Trends and Trending Now. Existing Search, AI Mode and Maps Search nodes are untouched.
|
|
36
|
+
- **Walmart gained its real filters**: `Start Page` (the only Walmart pagination field), `Domain`, `Device`, `Fulfillment Type`, `Delivery ZIP` and `Store ID`, on Search and, where the API supports them, on Get Product.
|
|
37
|
+
- **Reddit Get Post takes a post ID.** Pick `Post ID` or `Post URL` under `Lookup By`. It returns the post only; comments come from Get Post Comments.
|
|
38
|
+
- **Instagram follower and following lists accept up to 100 per page**, matching the API. Post, reel and tagged feeds stay capped at 50.
|
|
39
|
+
|
|
40
|
+
### Amazon changed in 0.10.0 (breaking)
|
|
41
|
+
|
|
42
|
+
Amazon moved to a new upstream provider, the API now returns a clean normalized shape instead of a raw provider passthrough, and the node changed with it. Existing Amazon nodes keep running, but re-check them:
|
|
43
|
+
|
|
44
|
+
- **`Domain` is gone, replaced by `Country`.** Upstream wants an ISO 3166-1 alpha-2 marketplace code, not an `amazon.<suffix>` string. Two do not match their suffix: `amazon.com` is `us` and `amazon.co.uk` is `gb`. A saved `Domain` value is no longer sent, so a node that was set to `de` now returns the US marketplace until you set `Country` to Germany.
|
|
45
|
+
- **`Sort By` is gone.** The marketplace accepts every sort value and ignores all of them — `price-asc-rank`, `price-desc-rank`, `review-rank` and `date-desc-rank` all return the identical unordered set. It was a filter that did nothing, so it is no longer offered.
|
|
46
|
+
- **`Start Page` is now `Page`**, under Additional Options. One page per call, 1 credit per call.
|
|
47
|
+
- **`Min Price` and `Max Price` are gone.** They were never in the API request schema and the backend dropped them silently. Filter on `price` in a downstream node instead.
|
|
48
|
+
- **Response fields are renamed.** Products now expose `asin`, `title`, `url`, `image`, `price`, `currency`, `rating`, `reviews_count`, `is_sponsored`, `position`, `badge`, `sales_volume` and `delivery`. Expressions reading the old provider keys (`url_image`, `product_name`, `total_reviews`, `is_best_seller`, `buybox`) need updating.
|
|
49
|
+
- **`Get Offers` is new.** All seller offers for an ASIN — price, seller, condition, shipping, discount and which offer holds the buy box. 1 credit. Page 1 only: the response reports `has_more_pages`, but there is no verified upstream param for a later page.
|
|
50
|
+
|
|
51
|
+
### TikTok Shop
|
|
52
|
+
|
|
31
53
|
Two things to know about TikTok Shop before you build on it:
|
|
32
54
|
|
|
33
55
|
- **Get Product returns no price.** TikTok masks the price on the product page. Exact prices come from Search Products, Get Shop Products and Get Category Products.
|
|
@@ -79,7 +101,7 @@ The credential test calls `GET /api/v1/usage` (free) so you get instant feedback
|
|
|
79
101
|
## Compatibility
|
|
80
102
|
|
|
81
103
|
- Requires n8n version 1.0 or later.
|
|
82
|
-
- Tested against Scavio API
|
|
104
|
+
- Tested against the Scavio API at `https://api.scavio.dev`. Google runs on v2 (`/api/v2/google/*`), every other product on v1 (`/api/v1/*`). The old `/api/v1/google` endpoint is retired and this node never calls it.
|
|
83
105
|
|
|
84
106
|
## Resources
|
|
85
107
|
|
|
@@ -1,6 +1,19 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.amazonFields = exports.amazonOperations = void 0;
|
|
4
|
+
// Amazon moved to a new upstream provider and the API now returns a normalized
|
|
5
|
+
// shape instead of a raw provider passthrough. Params that disappeared with it:
|
|
6
|
+
//
|
|
7
|
+
// - sort_by: the marketplace accepts every sort value and ignores all of them.
|
|
8
|
+
// Verified across price-asc-rank, price-desc-rank, review-rank and
|
|
9
|
+
// date-desc-rank: identical, unordered result sets. Exposing it would be a
|
|
10
|
+
// filter that silently does nothing.
|
|
11
|
+
// - start_page: replaced by Page (the API still accepts start_page as a
|
|
12
|
+
// deprecated alias, but new workflows should not learn it).
|
|
13
|
+
// - min_price / max_price: these were never in the API request schema, so the
|
|
14
|
+
// backend silently dropped them. They only ever looked like they worked.
|
|
15
|
+
// - domain: replaced by Country, which is what upstream actually wants (an ISO
|
|
16
|
+
// 3166-1 alpha-2 marketplace code, not an amazon.<suffix> string).
|
|
4
17
|
exports.amazonOperations = [
|
|
5
18
|
{
|
|
6
19
|
displayName: 'Operation',
|
|
@@ -10,24 +23,32 @@ exports.amazonOperations = [
|
|
|
10
23
|
displayOptions: { show: { resource: ['amazon'] } },
|
|
11
24
|
options: [
|
|
12
25
|
{
|
|
13
|
-
name: '
|
|
14
|
-
value: '
|
|
15
|
-
action: '
|
|
16
|
-
description: '
|
|
17
|
-
routing: { request: { method: 'POST', url: '/api/v1/amazon/
|
|
26
|
+
name: 'Get Offers',
|
|
27
|
+
value: 'offers',
|
|
28
|
+
action: 'Get amazon offers',
|
|
29
|
+
description: 'Get every seller offer for an ASIN: price, seller name and ID, condition, shipping, discount and which offer holds the buy box. Page 1 only: the response reports has_more_pages, but there is no verified upstream param to request a later page.',
|
|
30
|
+
routing: { request: { method: 'POST', url: '/api/v1/amazon/offers' } },
|
|
18
31
|
},
|
|
19
32
|
{
|
|
20
33
|
name: 'Get Product',
|
|
21
34
|
value: 'product',
|
|
22
35
|
action: 'Get an amazon product',
|
|
23
|
-
description: 'Get
|
|
36
|
+
description: 'Get full detail for an ASIN: title, brand, price, list price, rating, review count, availability, images, videos, specifications, variants, best sellers rank and structured shipping',
|
|
24
37
|
routing: { request: { method: 'POST', url: '/api/v1/amazon/product' } },
|
|
25
38
|
},
|
|
39
|
+
{
|
|
40
|
+
name: 'Search Products',
|
|
41
|
+
value: 'search',
|
|
42
|
+
action: 'Search amazon products',
|
|
43
|
+
description: "Search Amazon by keyword and return product listings with ASIN, price, rating, review count, delivery and sponsored flag. Results always come back in the marketplace's default ranking: there is no sort param because every sort value the marketplace accepts returns the same unordered set.",
|
|
44
|
+
routing: { request: { method: 'POST', url: '/api/v1/amazon/search' } },
|
|
45
|
+
},
|
|
26
46
|
],
|
|
27
47
|
default: 'search',
|
|
28
48
|
},
|
|
29
49
|
];
|
|
30
50
|
exports.amazonFields = [
|
|
51
|
+
// ── Keyword (search) ──
|
|
31
52
|
{
|
|
32
53
|
displayName: 'Query',
|
|
33
54
|
name: 'query',
|
|
@@ -39,6 +60,10 @@ exports.amazonFields = [
|
|
|
39
60
|
routing: { request: { body: { query: '={{ $value }}' } } },
|
|
40
61
|
description: 'Product search query',
|
|
41
62
|
},
|
|
63
|
+
// ── ASIN (product, offers) ──
|
|
64
|
+
// Sent on the wire as `query`, not `asin`. The API accepts both, but `query`
|
|
65
|
+
// is the field every published Scavio client uses and keeps saved workflows
|
|
66
|
+
// working across this upgrade.
|
|
42
67
|
{
|
|
43
68
|
displayName: 'ASIN',
|
|
44
69
|
name: 'query',
|
|
@@ -46,20 +71,45 @@ exports.amazonFields = [
|
|
|
46
71
|
required: true,
|
|
47
72
|
default: '',
|
|
48
73
|
placeholder: 'B09V3KXJPB',
|
|
49
|
-
displayOptions: { show: { resource: ['amazon'], operation: ['product'] } },
|
|
74
|
+
displayOptions: { show: { resource: ['amazon'], operation: ['product', 'offers'] } },
|
|
50
75
|
routing: { request: { body: { query: '={{ $value }}' } } },
|
|
51
76
|
description: 'The 10-character Amazon product ID, e.g. B09V3KXJPB. Found in /dp/ASIN URLs.',
|
|
52
77
|
},
|
|
78
|
+
// ── Country (all operations) ──
|
|
53
79
|
{
|
|
54
|
-
displayName: '
|
|
55
|
-
name: '
|
|
56
|
-
type: '
|
|
57
|
-
default: '
|
|
58
|
-
placeholder: 'com',
|
|
80
|
+
displayName: 'Country',
|
|
81
|
+
name: 'country',
|
|
82
|
+
type: 'options',
|
|
83
|
+
default: 'us',
|
|
59
84
|
displayOptions: { show: { resource: ['amazon'] } },
|
|
60
|
-
|
|
61
|
-
|
|
85
|
+
options: [
|
|
86
|
+
{ name: 'Australia', value: 'au' },
|
|
87
|
+
{ name: 'Belgium', value: 'be' },
|
|
88
|
+
{ name: 'Brazil', value: 'br' },
|
|
89
|
+
{ name: 'Canada', value: 'ca' },
|
|
90
|
+
{ name: 'China', value: 'cn' },
|
|
91
|
+
{ name: 'Egypt', value: 'eg' },
|
|
92
|
+
{ name: 'France', value: 'fr' },
|
|
93
|
+
{ name: 'Germany', value: 'de' },
|
|
94
|
+
{ name: 'India', value: 'in' },
|
|
95
|
+
{ name: 'Italy', value: 'it' },
|
|
96
|
+
{ name: 'Japan', value: 'jp' },
|
|
97
|
+
{ name: 'Mexico', value: 'mx' },
|
|
98
|
+
{ name: 'Netherlands', value: 'nl' },
|
|
99
|
+
{ name: 'Poland', value: 'pl' },
|
|
100
|
+
{ name: 'Saudi Arabia', value: 'sa' },
|
|
101
|
+
{ name: 'Singapore', value: 'sg' },
|
|
102
|
+
{ name: 'Spain', value: 'es' },
|
|
103
|
+
{ name: 'Sweden', value: 'se' },
|
|
104
|
+
{ name: 'Turkey', value: 'tr' },
|
|
105
|
+
{ name: 'United Arab Emirates', value: 'ae' },
|
|
106
|
+
{ name: 'United Kingdom', value: 'gb' },
|
|
107
|
+
{ name: 'United States', value: 'us' },
|
|
108
|
+
],
|
|
109
|
+
routing: { request: { body: { country: '={{ $value }}' } } },
|
|
110
|
+
description: 'Amazon marketplace to query, as an ISO 3166-1 alpha-2 code. Two do not match their domain suffix: amazon.com is United States (us) and amazon.co.uk is United Kingdom (gb).',
|
|
62
111
|
},
|
|
112
|
+
// ── Additional Options (search) ──
|
|
63
113
|
{
|
|
64
114
|
displayName: 'Additional Options',
|
|
65
115
|
name: 'additionalOptions',
|
|
@@ -69,43 +119,13 @@ exports.amazonFields = [
|
|
|
69
119
|
displayOptions: { show: { resource: ['amazon'], operation: ['search'] } },
|
|
70
120
|
options: [
|
|
71
121
|
{
|
|
72
|
-
displayName: '
|
|
73
|
-
name: '
|
|
74
|
-
type: 'options',
|
|
75
|
-
default: 'featured',
|
|
76
|
-
options: [
|
|
77
|
-
{ name: 'Average Review', value: 'average_review' },
|
|
78
|
-
{ name: 'Bestsellers', value: 'bestsellers' },
|
|
79
|
-
{ name: 'Featured', value: 'featured' },
|
|
80
|
-
{ name: 'Most Recent', value: 'most_recent' },
|
|
81
|
-
{ name: 'Price: High to Low', value: 'price_high_to_low' },
|
|
82
|
-
{ name: 'Price: Low to High', value: 'price_low_to_high' },
|
|
83
|
-
],
|
|
84
|
-
routing: { request: { body: { sort_by: '={{ $value }}' } } },
|
|
85
|
-
},
|
|
86
|
-
{
|
|
87
|
-
displayName: 'Start Page',
|
|
88
|
-
name: 'start_page',
|
|
122
|
+
displayName: 'Page',
|
|
123
|
+
name: 'page',
|
|
89
124
|
type: 'number',
|
|
90
125
|
default: 1,
|
|
91
126
|
typeOptions: { minValue: 1 },
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
{
|
|
95
|
-
displayName: 'Min Price',
|
|
96
|
-
name: 'min_price',
|
|
97
|
-
type: 'number',
|
|
98
|
-
default: 0,
|
|
99
|
-
description: 'Minimum price in domain currency',
|
|
100
|
-
routing: { request: { body: { min_price: '={{ $value }}' } } },
|
|
101
|
-
},
|
|
102
|
-
{
|
|
103
|
-
displayName: 'Max Price',
|
|
104
|
-
name: 'max_price',
|
|
105
|
-
type: 'number',
|
|
106
|
-
default: 0,
|
|
107
|
-
description: 'Maximum price in domain currency',
|
|
108
|
-
routing: { request: { body: { max_price: '={{ $value }}' } } },
|
|
127
|
+
description: 'Results page, 1-based. One page per call, and each call costs 1 credit.',
|
|
128
|
+
routing: { request: { body: { page: '={{ $value }}' } } },
|
|
109
129
|
},
|
|
110
130
|
],
|
|
111
131
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AmazonDescription.js","sourceRoot":"","sources":["../../../../nodes/Scavio/descriptions/AmazonDescription.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"AmazonDescription.js","sourceRoot":"","sources":["../../../../nodes/Scavio/descriptions/AmazonDescription.ts"],"names":[],"mappings":"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"}
|