@biggora/claude-plugins 1.1.1 → 1.2.2
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/.claude/settings.local.json +3 -1
- package/README.md +24 -17
- package/package.json +1 -1
- package/registry/registry.json +319 -244
- package/specs/coding.md +24 -0
- package/specs/pod.md +2 -0
- package/src/skills/captcha/README.md +221 -0
- package/src/skills/captcha/SKILL.md +355 -0
- package/src/skills/captcha/references/captcha-types.md +254 -0
- package/src/skills/captcha/references/services.md +172 -0
- package/src/skills/captcha/references/stealth.md +238 -0
- package/src/skills/captcha/scripts/solve_captcha.py +323 -0
- package/src/skills/captcha/scripts/solve_image_grid.py +350 -0
- package/src/skills/codex-cli/SKILL.md +21 -11
- package/src/skills/gemini-cli/SKILL.md +27 -13
- package/src/skills/gemini-cli/references/commands.md +21 -14
- package/src/skills/gemini-cli/references/configuration.md +23 -18
- package/src/skills/gemini-cli/references/headless-and-scripting.md +7 -17
- package/src/skills/gemini-cli/references/mcp-and-extensions.md +12 -6
- package/src/skills/google-merchant-api/SKILL.md +581 -0
- package/src/skills/google-merchant-api/references/accounts.md +247 -0
- package/src/skills/google-merchant-api/references/content-api-legacy.md +216 -0
- package/src/skills/google-merchant-api/references/datasources.md +233 -0
- package/src/skills/google-merchant-api/references/inventories.md +201 -0
- package/src/skills/google-merchant-api/references/migration.md +267 -0
- package/src/skills/google-merchant-api/references/products.md +316 -0
- package/src/skills/google-merchant-api/references/promotions.md +201 -0
- package/src/skills/google-merchant-api/references/reports.md +240 -0
- package/src/skills/lv-aggregators-api/SKILL.md +113 -0
- package/src/skills/lv-aggregators-api/references/integration-guide.md +368 -0
- package/src/skills/lv-aggregators-api/references/kurpirkt.md +103 -0
- package/src/skills/lv-aggregators-api/references/salidzini.md +122 -0
- package/src/skills/notebook-lm/SKILL.md +1 -1
- package/src/skills/screen-recording/SKILL.md +243 -213
- package/src/skills/screen-recording/references/design-patterns.md +4 -2
- package/src/skills/screen-recording/references/ffmpeg-recording.md +473 -0
- package/src/skills/screen-recording/references/{approach1-programmatic.md → programmatic-generation.md} +45 -22
- package/src/skills/screen-recording/references/python-fallback.md +222 -0
- package/src/skills/tailwindcss-best-practices/SKILL.md +180 -0
- package/src/skills/tailwindcss-best-practices/references/best-practices-utility-patterns.md +87 -0
- package/src/skills/tailwindcss-best-practices/references/core-installation.md +109 -0
- package/src/skills/tailwindcss-best-practices/references/core-preflight.md +200 -0
- package/src/skills/tailwindcss-best-practices/references/core-responsive.md +163 -0
- package/src/skills/tailwindcss-best-practices/references/core-source-detection.md +114 -0
- package/src/skills/tailwindcss-best-practices/references/core-theme.md +108 -0
- package/src/skills/tailwindcss-best-practices/references/core-utility-classes.md +59 -0
- package/src/skills/tailwindcss-best-practices/references/core-variants.md +204 -0
- package/src/skills/tailwindcss-best-practices/references/effects-form-controls.md +76 -0
- package/src/skills/tailwindcss-best-practices/references/effects-mask.md +91 -0
- package/src/skills/tailwindcss-best-practices/references/effects-scroll-snap.md +59 -0
- package/src/skills/tailwindcss-best-practices/references/effects-text-shadow.md +78 -0
- package/src/skills/tailwindcss-best-practices/references/effects-transition-animation.md +80 -0
- package/src/skills/tailwindcss-best-practices/references/effects-visibility-interactivity.md +82 -0
- package/src/skills/tailwindcss-best-practices/references/features-content-detection.md +175 -0
- package/src/skills/tailwindcss-best-practices/references/features-custom-styles.md +203 -0
- package/src/skills/tailwindcss-best-practices/references/features-dark-mode.md +137 -0
- package/src/skills/tailwindcss-best-practices/references/features-functions-directives.md +241 -0
- package/src/skills/tailwindcss-best-practices/references/features-upgrade.md +160 -0
- package/src/skills/tailwindcss-best-practices/references/layout-aspect-ratio.md +39 -0
- package/src/skills/tailwindcss-best-practices/references/layout-columns.md +80 -0
- package/src/skills/tailwindcss-best-practices/references/layout-display.md +110 -0
- package/src/skills/tailwindcss-best-practices/references/layout-flexbox.md +112 -0
- package/src/skills/tailwindcss-best-practices/references/layout-grid.md +87 -0
- package/src/skills/tailwindcss-best-practices/references/layout-height.md +97 -0
- package/src/skills/tailwindcss-best-practices/references/layout-inset.md +103 -0
- package/src/skills/tailwindcss-best-practices/references/layout-logical-properties.md +92 -0
- package/src/skills/tailwindcss-best-practices/references/layout-margin.md +126 -0
- package/src/skills/tailwindcss-best-practices/references/layout-min-max-sizing.md +63 -0
- package/src/skills/tailwindcss-best-practices/references/layout-object-fit-position.md +64 -0
- package/src/skills/tailwindcss-best-practices/references/layout-overflow.md +57 -0
- package/src/skills/tailwindcss-best-practices/references/layout-padding.md +77 -0
- package/src/skills/tailwindcss-best-practices/references/layout-position.md +85 -0
- package/src/skills/tailwindcss-best-practices/references/layout-tables.md +67 -0
- package/src/skills/tailwindcss-best-practices/references/layout-width.md +102 -0
- package/src/skills/tailwindcss-best-practices/references/transform-base.md +68 -0
- package/src/skills/tailwindcss-best-practices/references/transform-rotate.md +70 -0
- package/src/skills/tailwindcss-best-practices/references/transform-scale.md +83 -0
- package/src/skills/tailwindcss-best-practices/references/transform-skew.md +62 -0
- package/src/skills/tailwindcss-best-practices/references/transform-translate.md +77 -0
- package/src/skills/tailwindcss-best-practices/references/typography-font-text.md +142 -0
- package/src/skills/tailwindcss-best-practices/references/typography-list-style.md +65 -0
- package/src/skills/tailwindcss-best-practices/references/typography-text-align.md +60 -0
- package/src/skills/tailwindcss-best-practices/references/visual-background.md +76 -0
- package/src/skills/tailwindcss-best-practices/references/visual-border.md +108 -0
- package/src/skills/tailwindcss-best-practices/references/visual-effects.md +111 -0
- package/src/skills/tailwindcss-best-practices/references/visual-svg.md +82 -0
- package/src/skills/test-mobile-app/SKILL.md +11 -6
- package/src/skills/test-mobile-app/scripts/analyze_apk.py +15 -4
- package/src/skills/test-mobile-app/scripts/check_environment.py +5 -5
- package/src/skills/test-mobile-app/scripts/run_tests.py +1 -1
- package/src/skills/test-web-ui/SKILL.md +264 -84
- package/src/skills/test-web-ui/scripts/discover.py +25 -12
- package/src/skills/test-web-ui/scripts/run_tests.py +3 -2
- package/src/skills/tm-search/SKILL.md +242 -106
- package/src/skills/tm-search/references/scraping-fallback.md +60 -95
- package/src/skills/tm-search/scripts/tm_search.py +453 -375
- package/src/skills/vite-best-practices/SKILL.md +115 -0
- package/src/skills/vite-best-practices/references/build-and-ssr.md +255 -0
- package/src/skills/vite-best-practices/references/core-config.md +231 -0
- package/src/skills/vite-best-practices/references/core-features.md +222 -0
- package/src/skills/vite-best-practices/references/core-plugin-api.md +294 -0
- package/src/skills/vite-best-practices/references/environment-api.md +108 -0
- package/src/skills/vite-best-practices/references/rolldown-migration.md +242 -0
- package/src/skills/screen-recording/references/approach2-xvfb.md +0 -232
|
@@ -0,0 +1,240 @@
|
|
|
1
|
+
# Reports Sub-API Reference
|
|
2
|
+
|
|
3
|
+
Base: `https://merchantapi.googleapis.com/reports/v1`
|
|
4
|
+
|
|
5
|
+
Query performance data, competitive insights, and market benchmarks using a SQL-like language.
|
|
6
|
+
|
|
7
|
+
## Endpoint
|
|
8
|
+
|
|
9
|
+
| Method | Endpoint | Description |
|
|
10
|
+
|--------|----------|-------------|
|
|
11
|
+
| `POST` | `/accounts/{account}/reports:search` | Execute a report query |
|
|
12
|
+
|
|
13
|
+
## Query Language
|
|
14
|
+
|
|
15
|
+
Reports use Merchant Center Query Language (MCQL):
|
|
16
|
+
|
|
17
|
+
```sql
|
|
18
|
+
SELECT
|
|
19
|
+
field1,
|
|
20
|
+
field2,
|
|
21
|
+
metric1,
|
|
22
|
+
metric2
|
|
23
|
+
FROM table_name
|
|
24
|
+
WHERE condition1 AND condition2
|
|
25
|
+
ORDER BY metric1 DESC
|
|
26
|
+
LIMIT 100
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
## Available Tables
|
|
30
|
+
|
|
31
|
+
### Performance Tables
|
|
32
|
+
|
|
33
|
+
| Table | Description |
|
|
34
|
+
|-------|-------------|
|
|
35
|
+
| `product_performance_view` | Product-level clicks, impressions, CTR, conversions |
|
|
36
|
+
| `non_product_performance_view` | Website traffic analytics (non-product pages) |
|
|
37
|
+
|
|
38
|
+
### Competitive Tables
|
|
39
|
+
|
|
40
|
+
| Table | Description |
|
|
41
|
+
|-------|-------------|
|
|
42
|
+
| `price_competitiveness_product_view` | Your prices vs. benchmark prices |
|
|
43
|
+
| `price_insights_product_view` | Pricing optimization suggestions |
|
|
44
|
+
| `competitive_visibility_competitor_view` | Market share analysis |
|
|
45
|
+
| `competitive_visibility_benchmark_view` | Category benchmarks |
|
|
46
|
+
| `competitive_visibility_top_merchant_view` | Top merchants in category |
|
|
47
|
+
|
|
48
|
+
### Best Sellers Tables
|
|
49
|
+
|
|
50
|
+
| Table | Description |
|
|
51
|
+
|-------|-------------|
|
|
52
|
+
| `best_sellers_product_cluster_view` | Top-selling product clusters |
|
|
53
|
+
| `best_sellers_brand_view` | Top-selling brands |
|
|
54
|
+
|
|
55
|
+
### Product Status Tables
|
|
56
|
+
|
|
57
|
+
| Table | Description |
|
|
58
|
+
|-------|-------------|
|
|
59
|
+
| `product_view` | Product data and status information |
|
|
60
|
+
|
|
61
|
+
## Common Metrics
|
|
62
|
+
|
|
63
|
+
| Metric | Description |
|
|
64
|
+
|--------|-------------|
|
|
65
|
+
| `metrics.clicks` | Total clicks |
|
|
66
|
+
| `metrics.impressions` | Total impressions |
|
|
67
|
+
| `metrics.ctr` | Click-through rate |
|
|
68
|
+
| `metrics.conversions` | Total conversions |
|
|
69
|
+
| `metrics.conversionValue` | Total conversion value |
|
|
70
|
+
| `metrics.orders` | Total orders |
|
|
71
|
+
|
|
72
|
+
## Common Segments
|
|
73
|
+
|
|
74
|
+
| Segment | Description |
|
|
75
|
+
|---------|-------------|
|
|
76
|
+
| `segments.date` | Date (YYYY-MM-DD) |
|
|
77
|
+
| `segments.offerId` | Product offer ID |
|
|
78
|
+
| `segments.title` | Product title |
|
|
79
|
+
| `segments.brand` | Product brand |
|
|
80
|
+
| `segments.categoryL1` - `categoryL5` | Category levels |
|
|
81
|
+
| `segments.productTypeL1` - `productTypeL5` | Product type levels |
|
|
82
|
+
| `segments.customLabel0` - `customLabel4` | Custom labels |
|
|
83
|
+
| `segments.program` | Program (SHOPPING_ADS, FREE_LISTINGS, etc.) |
|
|
84
|
+
|
|
85
|
+
## Query Examples
|
|
86
|
+
|
|
87
|
+
### Product Performance by Date
|
|
88
|
+
|
|
89
|
+
```json
|
|
90
|
+
{
|
|
91
|
+
"query": "SELECT segments.date, segments.offerId, segments.title, metrics.clicks, metrics.impressions, metrics.ctr FROM product_performance_view WHERE segments.date BETWEEN '2024-01-01' AND '2024-01-31' ORDER BY metrics.clicks DESC LIMIT 50"
|
|
92
|
+
}
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
### Top Products by Conversions
|
|
96
|
+
|
|
97
|
+
```json
|
|
98
|
+
{
|
|
99
|
+
"query": "SELECT segments.offerId, segments.title, segments.brand, metrics.conversions, metrics.conversionValue FROM product_performance_view WHERE segments.date BETWEEN '2024-01-01' AND '2024-03-31' AND segments.program = 'SHOPPING_ADS' ORDER BY metrics.conversions DESC LIMIT 20"
|
|
100
|
+
}
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
### Price Competitiveness
|
|
104
|
+
|
|
105
|
+
```json
|
|
106
|
+
{
|
|
107
|
+
"query": "SELECT segments.offerId, segments.title, metrics.benchmarkPrice, metrics.price FROM price_competitiveness_product_view WHERE segments.date = '2024-01-15' ORDER BY segments.offerId"
|
|
108
|
+
}
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
### Brand Performance
|
|
112
|
+
|
|
113
|
+
```json
|
|
114
|
+
{
|
|
115
|
+
"query": "SELECT segments.brand, metrics.clicks, metrics.impressions, metrics.ctr FROM product_performance_view WHERE segments.date BETWEEN '2024-01-01' AND '2024-01-31' ORDER BY metrics.clicks DESC LIMIT 10"
|
|
116
|
+
}
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
## Response Format
|
|
120
|
+
|
|
121
|
+
```json
|
|
122
|
+
{
|
|
123
|
+
"results": [
|
|
124
|
+
{
|
|
125
|
+
"productPerformanceView": {
|
|
126
|
+
"date": { "year": 2024, "month": 1, "day": 15 },
|
|
127
|
+
"offerId": "SKU-001",
|
|
128
|
+
"title": "Premium Headphones",
|
|
129
|
+
"clicks": "142",
|
|
130
|
+
"impressions": "5230",
|
|
131
|
+
"ctr": 0.0272
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
],
|
|
135
|
+
"nextPageToken": "abc123"
|
|
136
|
+
}
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
## Pagination
|
|
140
|
+
|
|
141
|
+
Reports support pagination via `pageSize` and `pageToken` in the request body:
|
|
142
|
+
|
|
143
|
+
```json
|
|
144
|
+
{
|
|
145
|
+
"query": "SELECT ... FROM ...",
|
|
146
|
+
"pageSize": 1000,
|
|
147
|
+
"pageToken": "abc123"
|
|
148
|
+
}
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
Default page size varies by table. Max is typically 1000 rows per page.
|
|
152
|
+
|
|
153
|
+
## Code Example
|
|
154
|
+
|
|
155
|
+
```javascript
|
|
156
|
+
async function getProductPerformance(merchantId, token, startDate, endDate) {
|
|
157
|
+
const results = [];
|
|
158
|
+
let pageToken = '';
|
|
159
|
+
|
|
160
|
+
do {
|
|
161
|
+
const body = {
|
|
162
|
+
query: `
|
|
163
|
+
SELECT
|
|
164
|
+
segments.offerId,
|
|
165
|
+
segments.title,
|
|
166
|
+
metrics.clicks,
|
|
167
|
+
metrics.impressions,
|
|
168
|
+
metrics.ctr,
|
|
169
|
+
metrics.conversions
|
|
170
|
+
FROM product_performance_view
|
|
171
|
+
WHERE segments.date BETWEEN '${startDate}' AND '${endDate}'
|
|
172
|
+
ORDER BY metrics.clicks DESC
|
|
173
|
+
`,
|
|
174
|
+
pageSize: 1000,
|
|
175
|
+
};
|
|
176
|
+
if (pageToken) body.pageToken = pageToken;
|
|
177
|
+
|
|
178
|
+
const response = await fetch(
|
|
179
|
+
`https://merchantapi.googleapis.com/reports/v1/accounts/${merchantId}/reports:search`,
|
|
180
|
+
{
|
|
181
|
+
method: 'POST',
|
|
182
|
+
headers: {
|
|
183
|
+
'Authorization': `Bearer ${token}`,
|
|
184
|
+
'Content-Type': 'application/json',
|
|
185
|
+
},
|
|
186
|
+
body: JSON.stringify(body),
|
|
187
|
+
}
|
|
188
|
+
);
|
|
189
|
+
|
|
190
|
+
const data = await response.json();
|
|
191
|
+
results.push(...(data.results || []));
|
|
192
|
+
pageToken = data.nextPageToken || '';
|
|
193
|
+
} while (pageToken);
|
|
194
|
+
|
|
195
|
+
return results;
|
|
196
|
+
}
|
|
197
|
+
```
|
|
198
|
+
|
|
199
|
+
```python
|
|
200
|
+
import requests
|
|
201
|
+
|
|
202
|
+
def get_product_performance(merchant_id, token, start_date, end_date):
|
|
203
|
+
results = []
|
|
204
|
+
page_token = ''
|
|
205
|
+
|
|
206
|
+
while True:
|
|
207
|
+
body = {
|
|
208
|
+
'query': f"""
|
|
209
|
+
SELECT
|
|
210
|
+
segments.offerId,
|
|
211
|
+
segments.title,
|
|
212
|
+
metrics.clicks,
|
|
213
|
+
metrics.impressions,
|
|
214
|
+
metrics.ctr,
|
|
215
|
+
metrics.conversions
|
|
216
|
+
FROM product_performance_view
|
|
217
|
+
WHERE segments.date BETWEEN '{start_date}' AND '{end_date}'
|
|
218
|
+
ORDER BY metrics.clicks DESC
|
|
219
|
+
""",
|
|
220
|
+
'pageSize': 1000,
|
|
221
|
+
}
|
|
222
|
+
if page_token:
|
|
223
|
+
body['pageToken'] = page_token
|
|
224
|
+
|
|
225
|
+
response = requests.post(
|
|
226
|
+
f'https://merchantapi.googleapis.com/reports/v1/accounts/{merchant_id}/reports:search',
|
|
227
|
+
headers={
|
|
228
|
+
'Authorization': f'Bearer {token}',
|
|
229
|
+
'Content-Type': 'application/json',
|
|
230
|
+
},
|
|
231
|
+
json=body,
|
|
232
|
+
)
|
|
233
|
+
data = response.json()
|
|
234
|
+
results.extend(data.get('results', []))
|
|
235
|
+
page_token = data.get('nextPageToken', '')
|
|
236
|
+
if not page_token:
|
|
237
|
+
break
|
|
238
|
+
|
|
239
|
+
return results
|
|
240
|
+
```
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: lv-aggregators-api
|
|
3
|
+
description: >
|
|
4
|
+
Use this skill whenever the user wants to work with Latvian price comparison / aggregator
|
|
5
|
+
platforms, specifically Salidzini.lv or KurPirkt.lv. Triggers include: creating or generating
|
|
6
|
+
XML product feeds, integrating an e-commerce store with Latvian aggregators, exporting product
|
|
7
|
+
catalogs for salidzini or kurpirkt, validating XML feed format, debugging feed errors,
|
|
8
|
+
setting up product data export for Latvian price comparison sites, or any mention of
|
|
9
|
+
"salidzini", "kurpirkt", "cenu salīdzināšana", "preču eksports", "XML feed Latvia",
|
|
10
|
+
"Latvian marketplace integration", or "price aggregator feed". Also use when the user mentions
|
|
11
|
+
e-commerce product feeds for the Latvian market, product data export in LV context, or wants
|
|
12
|
+
to list products on Latvian comparison shopping engines, even without naming a specific platform.
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
# Latvian Price Aggregator APIs
|
|
16
|
+
|
|
17
|
+
Generate and manage XML product feeds for Latvia's two major price comparison platforms: **Salidzini.lv** and **KurPirkt.lv**.
|
|
18
|
+
|
|
19
|
+
## Platform Overview
|
|
20
|
+
|
|
21
|
+
| Aspect | Salidzini.lv | KurPirkt.lv |
|
|
22
|
+
|--------|-------------|-------------|
|
|
23
|
+
| Daily visitors | ~47,000 | 30,000-45,000 |
|
|
24
|
+
| Monthly visitors | ~1.3 million | N/A |
|
|
25
|
+
| Listed shops | N/A | 1,200+ |
|
|
26
|
+
| Feed format | XML (UTF-8) | XML (UTF-8) |
|
|
27
|
+
| Feed update | At least daily | Regular (daily recommended) |
|
|
28
|
+
| Contact | Web form on shops_info.php | kurpirkt@kurpirkt.lv / +371 26533032 |
|
|
29
|
+
| Registration | Online form | Email application |
|
|
30
|
+
|
|
31
|
+
Both platforms use similar XML feed formats with minor differences in field names and requirements. If a shop targets both platforms, a single feed generator can produce both formats with minimal adjustments.
|
|
32
|
+
|
|
33
|
+
## Quick Start
|
|
34
|
+
|
|
35
|
+
To integrate with either platform:
|
|
36
|
+
|
|
37
|
+
1. **Generate an XML feed** from your product database (see format details in reference files)
|
|
38
|
+
2. **Host the feed** at a public URL (e.g., `https://yourshop.lv/export/salidzini.xml`)
|
|
39
|
+
3. **Auto-update** the feed at least once daily via a scheduled script/cron job
|
|
40
|
+
4. **Place the aggregator's banner** on your shop's homepage
|
|
41
|
+
5. **Submit your application** through the platform's registration process
|
|
42
|
+
6. **Validate** your feed using the platform's validator (Salidzini provides one at their shops_info page)
|
|
43
|
+
|
|
44
|
+
## Feed Format Comparison
|
|
45
|
+
|
|
46
|
+
Both platforms use `<root>` as the root element and `<item>` for each product. The key differences:
|
|
47
|
+
|
|
48
|
+
| Field | Salidzini.lv | KurPirkt.lv | Notes |
|
|
49
|
+
|-------|-------------|-------------|-------|
|
|
50
|
+
| Product name | `<name>` (required) | `<name>` (required) | Max 200 chars on Salidzini |
|
|
51
|
+
| Product URL | `<link>` (required) | `<link>` (required) | Max 500 chars, full URL |
|
|
52
|
+
| Price | `<price>` (required) | `<price>` (required) | EUR, dot decimal separator |
|
|
53
|
+
| Image | `<image>` | `<image>` | White bg, no logos/watermarks |
|
|
54
|
+
| Brand | `<brand>` | `<manufacturer>` | **Different tag name** |
|
|
55
|
+
| Category | `<category_full>` | `<category_full>` | Hierarchy with `>>` (Salidzini) or `>` (KurPirkt) |
|
|
56
|
+
| Category link | `<category_link>` | `<category_link>` | Optional on KurPirkt |
|
|
57
|
+
| Stock | `<in_stock>` | `<in_stock>` | Numeric quantity |
|
|
58
|
+
| Used/refurbished | `<used>` | `<used>` | Value `1` for used items |
|
|
59
|
+
| Delivery cost | `<delivery_latvija>` | `<delivery_cost_riga>` | **Different tag name & scope** |
|
|
60
|
+
| Delivery days | `<delivery_days_latvija>` | N/A | Salidzini only |
|
|
61
|
+
| In-store pickup days | `<delivery_days_shop>` | N/A | Salidzini only |
|
|
62
|
+
| Service fee | `<service_fee>` | N/A | Salidzini only |
|
|
63
|
+
| Model | `<model>` | N/A | Salidzini only |
|
|
64
|
+
| Color | `<color>` | N/A | Salidzini only |
|
|
65
|
+
| MPN | `<mpn>` | N/A | Salidzini only |
|
|
66
|
+
| EAN/GTIN | `<ean>` | N/A | Salidzini only |
|
|
67
|
+
| Adult content | `<adult>` | N/A | `yes`/`no`, required for adult shops |
|
|
68
|
+
| OTC medicine | `<over_the_counter_medicine>` | N/A | Salidzini only, value `1` |
|
|
69
|
+
|
|
70
|
+
## Reference Files
|
|
71
|
+
|
|
72
|
+
For detailed per-platform documentation, field specifications, code examples, and validation rules:
|
|
73
|
+
|
|
74
|
+
- **`references/salidzini.md`** - Complete Salidzini.lv feed specification, all fields, rules, and examples
|
|
75
|
+
- **`references/kurpirkt.md`** - Complete KurPirkt.lv feed specification and registration process
|
|
76
|
+
- **`references/integration-guide.md`** - Code examples for generating feeds in Node.js, PHP, Python; dual-feed strategy; validation; scheduling
|
|
77
|
+
|
|
78
|
+
Read the relevant reference file when you need detailed field-level documentation or implementation code.
|
|
79
|
+
|
|
80
|
+
## Common Rules (Both Platforms)
|
|
81
|
+
|
|
82
|
+
### Pricing
|
|
83
|
+
- All prices in **EUR with VAT** included
|
|
84
|
+
- Use **dot** (`.`) as decimal separator
|
|
85
|
+
- Price must be the final price a consumer pays (excluding delivery)
|
|
86
|
+
- Include any additional fees in the price
|
|
87
|
+
|
|
88
|
+
### Product Names
|
|
89
|
+
- Include brand/manufacturer, model, and product code
|
|
90
|
+
- Keep names concise and descriptive
|
|
91
|
+
- No promotional text ("Free shipping", "Best price", "Sale", etc.)
|
|
92
|
+
- No vague phrases ("Best choice", "Highest quality", "Buy now")
|
|
93
|
+
|
|
94
|
+
### Images
|
|
95
|
+
- Must show the actual product appearance
|
|
96
|
+
- **White background**, no frames
|
|
97
|
+
- No shop logos, prices, watermarks, or promotional overlays
|
|
98
|
+
- No text like "In stock", "Gift", "0% credit"
|
|
99
|
+
- If no product image available, leave the `<image>` tag empty
|
|
100
|
+
- Salidzini: min 500x500px recommended, max 16MB
|
|
101
|
+
|
|
102
|
+
### Prohibited Content
|
|
103
|
+
- Alcohol and tobacco products (Salidzini)
|
|
104
|
+
- Products with delivery times exceeding 30 days (Salidzini)
|
|
105
|
+
- Duplicate product entries
|
|
106
|
+
- Products not available for purchase/delivery in Latvia
|
|
107
|
+
|
|
108
|
+
### Feed Technical Requirements
|
|
109
|
+
- **UTF-8 encoding** (declared in XML header)
|
|
110
|
+
- Feed response time must be under **5 minutes** (Salidzini)
|
|
111
|
+
- Host at a stable public URL on your registered domain
|
|
112
|
+
- Auto-generate and update at least daily
|
|
113
|
+
- CDATA sections supported: `<name><![CDATA[Product Name]]></name>`
|