Automatizācija
Strādājiet tāpat kā līdz šim.
Jūsu PIM, ERP, DAM vai koplietota mape jau satur datus un fotoattēlus. Izvēlieties pirmo piemēroto recepti: visas darbojas ar jebkuru Open Brand Exchange portālu.
$ obx push ./export
Publishing to brands.kestrel.example (Kestrel, Kestrel Trail)
images: 27 checked, 3 uploaded (4.2 MB) in 3s
Done: rows: 40, images: 27 → new: 2 · updated: 3 · unchanged: 35# .github/workflows/publish.yml
on:
push:
paths: ["export/**"]
jobs:
publish:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: openbrandexchange/obx-go/push-action@v0
with:
url: ${{ secrets.OBX_URL }}
token: ${{ secrets.OBX_TOKEN }}
folder: exportKura recepte jums der?
| Jums ir… | Izmantojiet | Vajadzīgais kods |
|---|---|---|
| CSV vai zip tīmekļa adresē, SFTP serverī vai S3 krātuvē | Plānots imports | nav |
| mape, kurā nonāk eksporti | obx watch | nav |
| serveris vai dators, kas naktī izpilda uzdevumus | cron vai Uzdevumu plānotājs | viena rinda |
| eksporti Git repozitorijā | GitHub Action | viens YAML fails |
| n8n, Make vai Zapier | HTTP soļi | nav (vizuāli) |
| izstrādātājs, kas pieslēdz jūsu PIM vai ERP | Tieši API | nedaudz |
Viens formāts visam
Visi publicēšanas veidi lasa vienu un to pašu: products.csv ar vienu rindu katram izmēram un fotoattēlus ar nosaukumu {style}_{color}_{position}.jpg (modelis, krāsa, pozīcija). Kad tas ir, darbojas visas zemāk esošās receptes.
brand,style_number,name:en,name:nl,item_type,season,materials,color_code,color_name:en,size,gtin
Kestrel,KO-1001,Merino Crew Sweater,Merino trui met ronde hals,sweater,AW26,main: 100% merino_wool,NVY,Navy,S,2000100101018
Kestrel,KO-1001,Merino Crew Sweater,Merino trui met ronde hals,sweater,AW26,main: 100% merino_wool,NVY,Navy,M,2000100101025images/
KO-1001_NVY_1.jpg ← style KO-1001, colour NVY, position 1 (front)
KO-1001_NVY_2.jpg
KO-1001_NVY_3.jpgKas jums vajadzīgs
Pārvaldībā atveriet Automātiska augšupielāde → Piekļuves atslēgas un izveidojiet jaunu atslēgu. Jums būs divas vērtības: portāla adrese (OBX_URL) un pati atslēga (OBX_TOKEN). Atslēga tiek parādīta tikai vienreiz.
export OBX_URL=https://brands.kestrel.example
export OBX_TOKEN=obxi_… # admin → Automatic upload → Access keys (shown once)Katrai sistēmai dodiet savu atslēgu. Tā varat atsaukt vienu, nesabojājot pārējās.
1. Plānots imports (bez koda)
Pārvaldībā: Automātiska augšupielāde → Plānotie importi → Pievienot plānotu importu. Izvēlieties avotu un biežumu.
- Tīmekļa adrese (HTTPS): products.csv vai zip arhīva ar products.csv un fotoattēliem adrese. Pieteikšanās dati tiek glabāti šifrēti.
- SFTP: serveris, lietotājs, parole vai atslēga un mape ar eksportu.
- S3 krātuve: AWS S3, Cloudflare R2, MinIO vai Backblaze: galapunkts, krātuve, mape un tikai lasāma atslēga.
Izvēlieties “Tikai pievienot un atjaunināt” vai “Atsaukt arī trūkstošās preces”. Otrā iespēja atsauc arī to, kas pazuda no faila, bet apstājas, ja pazustu vairāk nekā puse zīmola, tāpēc bojāts eksports nekad neiztukšos jūsu katalogu. “Pārbaudīt savienojumu” parāda, kurus failus tas nolasītu.
Rīks obx
obx ir viena programma operētājsistēmām Windows, macOS un Linux. Tā nolasa OBX_URL un OBX_TOKEN no vides, augšupielādē tikai jaunus vai mainītus fotoattēlus, pēc vajadzības izveido tīmekļa versijas un gaida, līdz portāls visu apstrādā. Palaidiet to tik bieži, cik vēlaties: nemainītas preces neko nemaksā.
obx info # check the token, see limits and brands
obx push --csv products.csv --images ./images # publish a CSV and a folder (or zip) of images
obx push --package export.zip # the same, as one zip
obx push --csv products.csv --images ./images --mirror # also take offline what is no longer in the file
obx push --csv products.csv --images ./images --dry-run # only check, change nothing
obx watch ./outbox # keep publishing whatever lands in a folder
obx status # recent jobs and their errorsIzejas kods 0 = viss kārtībā, 2 = pabeigts, bet dažās rindās bija kļūdas (tās uzskaitītas), 1 = neizdevās.
2. Mape, kas publicē sevi pati: obx watch
Ļaujiet PIM, ERP vai kolēģim saglabāt eksportus mapē. obx watch publicē, tiklīdz kaut kas mainās, un izlaiž nemainītos fotoattēlus. Palaidiet to kā pakalpojumu vai ar Docker:
obx watch /data/outboxdocker run -d --restart unless-stopped \
-e OBX_URL -e OBX_TOKEN \
-v /data/outbox:/outbox \
ghcr.io/openbrandexchange/obx watch /outbox3. cron vai Windows Uzdevumu plānotājs
# crontab -e: every night at 02:30
30 2 * * * OBX_URL=https://brands.kestrel.example OBX_TOKEN=obxi_… /usr/local/bin/obx push --csv /exports/products.csv --images /exports/images >> /var/log/obx.log 2>&1$action = New-ScheduledTaskAction -Execute "C:\Tools\obx.exe" -Argument "push --csv D:\Export\products.csv --images D:\Export\images"
$trigger = New-ScheduledTaskTrigger -Daily -At 2:30am
[Environment]::SetEnvironmentVariable("OBX_URL", "https://brands.kestrel.example", "Machine")
[Environment]::SetEnvironmentVariable("OBX_TOKEN", "obxi_…", "Machine")
Register-ScheduledTask -TaskName "Publish to OBX" -Action $action -Trigger $trigger -User "SYSTEM"4. GitHub Action
Saglabājiet OBX_URL un OBX_TOKEN kā repozitorija noslēpumus. Tas pats darbojas GitLab CI, Bitbucket vai Azure DevOps: instalējiet obx un palaidiet obx push.
# .github/workflows/publish.yml (secrets: OBX_URL, OBX_TOKEN)
name: Publish product content
on:
push:
branches: [main]
paths: ["export/**"]
schedule:
- cron: "30 2 * * *"
workflow_dispatch:
jobs:
publish:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install obx
run: |
curl -fsSL https://github.com/openbrandexchange/obx-go/releases/latest/download/obx_linux_amd64.tar.gz | tar -xz obx
sudo mv obx /usr/local/bin/
- name: Publish
env:
OBX_URL: ${{ secrets.OBX_URL }}
OBX_TOKEN: ${{ secrets.OBX_TOKEN }}
run: obx push --csv export/products.csv --assets-csv export/assets.csv --images export/images5. n8n, Make vai Zapier
Izmantojiet parastu HTTP Request soli ar galveni Authorization: Bearer un savu atslēgu. Katru soli var droši atkārtot: to pašu datu divreizēja sūtīšana neko nemaina.
PUT {OBX_URL}/obx/v1/ingest/products/KO-1001
Authorization: Bearer obxi_…
Content-Type: application/json
{"style_number": "KO-1001",
"name": {"en": "Merino Crew Sweater", "nl": "Merino trui met ronde hals"},
"item_type": "sweater", "season": "AW26",
"materials": [{"part": "main", "fibers": [{"fiber": "merino_wool", "percentage": 100}]}]}PUT {OBX_URL}/obx/v1/ingest/variants/2000100101025
Authorization: Bearer obxi_…
Content-Type: application/json
{"product_external_id": "KO-1001", "gtin": "2000100101025",
"color": {"code": "NVY", "name": {"en": "Navy"}}, "size": "M"}PUT {OBX_URL}/obx/v1/ingest/assets/KO-1001_NVY_1
Authorization: Bearer obxi_…
Content-Type: application/json
{"product_external_id": "KO-1001", "color_code": "NVY",
"role": "packshot", "view": "front", "position": 1}
PUT {OBX_URL}/obx/v1/ingest/assets/KO-1001_NVY_1/files/original
Authorization: Bearer obxi_…
Content-Type: image/jpeg
<the image file as binary body>Portāls Cloudflare pats neveido fotoattēlu tīmekļa versijas. Publicējiet tur ar obx vai ar “Importi” administrācijā: tie tās izveido jūsu vietā. Citādi saņemti fotoattēli, piemēram, no ieplānota importa, līdz tam tiek rādīti oriģinālajā izmērā.
PATCH {OBX_URL}/obx/v1/ingest/products/KO-1001
Authorization: Bearer obxi_…
Content-Type: application/merge-patch+json
{"status": "unpublished"}Vēlaties paziņojumu, kad kaut kas notiek? Pārvaldībā pievienojiet paziņojumu (webhook) par pabeigtu importu vai jaunu piekļuves pieprasījumu un ļaujiet tam palaist trigeri n8n, Make vai Zapier.
6. Tieši API (izstrādātājiem)
Integrācija atceras, ko nosūtīja pēdējo reizi, un sūta tikai izmaiņas, pa partijām. Vai arī nosūtiet CSV, kāds tas ir, un ļaujiet portālam to nolasīt.
URL="$OBX_URL/obx/v1/ingest"; AUTH="Authorization: Bearer $OBX_TOKEN"
# 1. Upload only the images the node does not have yet (addressed by sha256).
for f in images/*.jpg; do
sha=$(shasum -a 256 "$f" | cut -d' ' -f1)
curl -sf -I -H "$AUTH" "$URL/blobs/$sha" >/dev/null || \
curl -sf -X PUT -H "$AUTH" -H 'Content-Type: image/jpeg' --data-binary @"$f" "$URL/blobs/$sha"
done
# 2. One batch of up to 1000 operations (NDJSON), processed in order.
cat > batch.ndjson <<'EOF'
{"op":"upsert","kind":"product","external_id":"KO-1001","data":{"style_number":"KO-1001","name":{"en":"Merino Crew Sweater"}}}
{"op":"upsert","kind":"variant","external_id":"2000100101025","data":{"product_external_id":"KO-1001","gtin":"2000100101025","color":{"code":"NVY"},"size":"M"}}
{"op":"unpublish","kind":"product","external_id":"KO-0999"}
EOF
curl -s -X POST -H "$AUTH" -H 'Content-Type: application/x-ndjson' \
-H "Idempotency-Key: nightly-$(date +%F)" --data-binary @batch.ndjson "$URL/batch"curl -s -X POST -H "Authorization: Bearer $OBX_TOKEN" \
-F [email protected] -F [email protected] \
-F 'options={"mode":"upsert"};type=application/json' \
"$OBX_URL/obx/v1/ingest/imports" # returns a job; poll $OBX_URL/obx/v1/ingest/jobs/<id>Visa informācija ir specifikācijā:Ingest API ·automatizācijas receptes ·Go SDK ·Izstrādātājiem