Avtomatizacija
Delajte naprej tako kot zdaj.
Vaš PIM, ERP, DAM ali skupna mapa že ima podatke in fotografije. Izberite prvi recept, ki ustreza: vsi delujejo z vsakim portalom Open Brand Exchange.
$ 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: exportKateri recept vam ustreza?
| Imate … | Uporabite | Potrebna koda |
|---|---|---|
| CSV ali zip na spletnem naslovu, strežniku SFTP ali v vedru S3 | Načrtovani uvoz | brez |
| mapo, kamor prihajajo izvozi | obx watch | brez |
| strežnik ali računalnik, ki ponoči izvaja opravila | cron ali Razporejevalnik opravil | ena vrstica |
| izvoze v repozitoriju Git | GitHub Action | ena datoteka YAML |
| n8n, Make ali Zapier | Koraki HTTP | brez (vizualno) |
| razvijalca, ki poveže vaš PIM ali ERP | Neposredno API | malo |
En format za vse
Vsi načini objave berejo isto: products.csv z eno vrstico na velikost in fotografije z imeni {style}_{color}_{position}.jpg (model, barva, položaj). Ko to imate, delujejo vsi spodnji recepti.
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.jpgKaj potrebujete
V skrbništvu odprite Samodejno nalaganje → Dostopni ključi in ustvarite nov ključ. Dobite dve vrednosti: naslov portala (OBX_URL) in sam ključ (OBX_TOKEN). Ključ se prikaže samo enkrat.
export OBX_URL=https://brands.kestrel.example
export OBX_TOKEN=obxi_… # admin → Automatic upload → Access keys (shown once)Vsakemu sistemu dajte svoj ključ. Tako lahko enega prekličete, ne da bi pokvarili ostale.
1. Načrtovani uvoz (brez kode)
V skrbništvu: Samodejno nalaganje → Načrtovani uvozi → Dodaj načrtovani uvoz. Izberite vir in kako pogosto naj se izvaja.
- Spletni naslov (HTTPS): naslov datoteke products.csv ali arhiva zip s products.csv in fotografijami. Podatki za prijavo so shranjeni šifrirano.
- SFTP: strežnik, uporabnik, geslo ali ključ ter mapa z izvozom.
- Vedro S3: AWS S3, Cloudflare R2, MinIO ali Backblaze: končna točka, vedro, mapa in ključ samo za branje.
Izberite »Samo dodajaj in posodabljaj« ali »Umakni tudi manjkajoče artikle«. Druga možnost umakne tudi tisto, kar je izginilo iz datoteke, vendar se ustavi, če bi izginila več kot polovica blagovne znamke, tako da okvarjen izvoz nikoli ne izprazni vašega kataloga. »Preizkusi povezavo« pokaže, katere datoteke bi prebral.
Orodje obx
obx je en sam program za Windows, macOS in Linux. Iz okolja prebere OBX_URL in OBX_TOKEN, naloži samo nove ali spremenjene fotografije, po potrebi izdela spletne različice in počaka, da portal vse obdela. Zaženite ga, kolikorkrat želite: nespremenjeni artikli ne stanejo nič.
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 errorsIzhodna koda 0 = vse v redu, 2 = končano, vendar so nekatere vrstice imele napake (so izpisane), 1 = neuspešno.
2. Mapa, ki se objavi sama: obx watch
Naj PIM, ERP ali sodelavec shranjuje izvoze v mapo. obx watch objavi, takoj ko se kaj spremeni, in preskoči nespremenjene fotografije. Zaženite ga kot storitev ali z Dockerjem:
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 ali Razporejevalnik opravil Windows
# 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
Shranite OBX_URL in OBX_TOKEN kot skrivnosti repozitorija. Enako deluje v GitLab CI, Bitbucketu ali Azure DevOps: namestite obx in zaženite 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 ali Zapier
Uporabite običajen korak HTTP Request z glavo Authorization: Bearer in vašim ključem. Vsak korak lahko varno ponovite: dvakratno pošiljanje istih podatkov ne spremeni ničesar.
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>Portal za Cloudflare sam ne izdeluje spletnih različic fotografij. Tam objavljajte z obx ali prek »Uvozi« v skrbništvu: ta jih izdelata namesto vas. Fotografije, ki pridejo drugače, na primer z načrtovanim uvozom, so do takrat prikazane v izvirni velikosti.
PATCH {OBX_URL}/obx/v1/ingest/products/KO-1001
Authorization: Bearer obxi_…
Content-Type: application/merge-patch+json
{"status": "unpublished"}Želite obvestilo, ko se kaj zgodi? V skrbništvu dodajte obvestilo (webhook) za končan uvoz ali novo prošnjo za dostop in naj sproži sprožilec v n8n, Make ali Zapier.
6. Neposredno API (za razvijalce)
Integracija si zapomni, kaj je nazadnje poslala, in pošilja samo spremembe, v paketih. Lahko pa pošljete CSV, kakršen je, in ga portal prebere.
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>Vse podrobnosti so v specifikaciji:Ingest API ·recepti za avtomatizacijo ·Go SDK ·Za razvijalce