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.

Terminal
$ 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
publish.ymlGitHub Action
# .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: export

Kateri recept vam ustreza?

Imate …UporabitePotrebna koda
CSV ali zip na spletnem naslovu, strežniku SFTP ali v vedru S3Načrtovani uvozbrez
mapo, kamor prihajajo izvoziobx watchbrez
strežnik ali računalnik, ki ponoči izvaja opravilacron ali Razporejevalnik opravilena vrstica
izvoze v repozitoriju GitGitHub Actionena datoteka YAML
n8n, Make ali ZapierKoraki HTTPbrez (vizualno)
razvijalca, ki poveže vaš PIM ali ERPNeposredno APImalo

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.

products.csv (skrajšano)
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,2000100101025
Imena datotek fotografij
images/
  KO-1001_NVY_1.jpg     ← style KO-1001, colour NVY, position 1 (front)
  KO-1001_NVY_2.jpg
  KO-1001_NVY_3.jpg

Celoten format uvoza

Kaj 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 errors

Izhodna koda 0 = vse v redu, 2 = končano, vendar so nekatere vrstice imele napake (so izpisane), 1 = neuspešno.

Prenesi obx · obx-go

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/outbox
Docker
docker run -d --restart unless-stopped \
  -e OBX_URL -e OBX_TOKEN \
  -v /data/outbox:/outbox \
  ghcr.io/openbrandexchange/obx watch /outbox

3. cron ali Razporejevalnik opravil Windows

Linux ali macOS
# 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
Windows (PowerShell, enkrat)
$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/images

5. 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.

Artikel (na primer, ko se spremeni v PIM)
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}]}]}
Barva in velikost z EAN
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"}
Fotografija: najprej podatki, nato sama datoteka
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.

Umik nečesa
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.

Preskoči fotografije, ki jih portal že ima, in pošlji en paket
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"
CSV in zip s fotografijami naenkrat
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