Automatiseerimine

Jätkake tööd nii nagu praegu.

Teie PIM-is, ERP-s, DAM-is või jagatud kaustas on andmed ja fotod juba olemas. Valige esimene sobiv retsept: kõik töötavad iga Open Brand Exchange'i portaaliga.

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

Milline retsept teile sobib?

Teil on…KasutageVajalik kood
CSV või zip veebiaadressil, SFTP-serveris või S3-ämbrisAjastatud importpuudub
kaust, kuhu ekspordid jõuavadobx watchpuudub
server või arvuti, mis käitab öösel ülesandeidcron või Tööajastiüks rida
ekspordid Giti hoidlasGitHub Actionüks YAML-fail
n8n, Make või ZapierHTTP-sammudpuudub (visuaalne)
arendaja, kes ühendab teie PIM-i või ERPAPI otsenatuke

Üks vorming kõigeks

Kõik avaldamisviisid loevad sama: products.csv ühe reaga suuruse kohta ja fotod nimega {style}_{color}_{position}.jpg (mudel, värv, asukoht). Kui see on olemas, töötab iga allpool olev retsept.

products.csv (lühendatud)
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
Fotode failinimed
images/
  KO-1001_NVY_1.jpg     ← style KO-1001, colour NVY, position 1 (front)
  KO-1001_NVY_2.jpg
  KO-1001_NVY_3.jpg

Täielik impordivorming

Mida vajate

Avage halduses Automaatne üleslaadimine → Juurdepääsuvõtmed ja looge uus võti. Teil on siis kaks väärtust: portaali aadress (OBX_URL) ja võti ise (OBX_TOKEN). Võtit näidatakse ainult üks kord.

export OBX_URL=https://brands.kestrel.example
export OBX_TOKEN=obxi_…   # admin → Automatic upload → Access keys (shown once)

Andke igale süsteemile oma võti. Nii saate ühe tühistada ilma teisi rikkumata.

1. Ajastatud import (ilma koodita)

Halduses: Automaatne üleslaadimine → Ajastatud impordid → Lisa ajastatud import. Valige allikas ja kui sageli see käivitub.

  • Veebiaadress (HTTPS): products.csv või products.csv ja fotosid sisaldava zip-faili aadress. Sisselogimisandmed salvestatakse krüptitult.
  • SFTP: server, kasutaja, parool või võti ning ekspordiga kaust.
  • S3-ämber: AWS S3, Cloudflare R2, MinIO või Backblaze: lõpp-punkt, ämber, kaust ja kirjutuskaitstud võti.

Valige „Ainult lisa ja uuenda” või „Võta puuduvad tooted ka võrgust maha”. Teine võtab maha ka selle, mis failist kadus, kuid peatub, kui kaoks üle poole brändist, nii et vigane eksport ei tühjenda kunagi teie kataloogi. „Testi ühendust” näitab, milliseid faile see loeks.

Tööriist obx

obx on üks programm Windowsile, macOS-ile ja Linuxile. See loeb keskkonnast OBX_URL-i ja OBX_TOKEN-i, laadib üles ainult uued või muudetud fotod, teeb vajaduse korral veebiversioonid ja ootab, kuni portaal on kõik töödelnud. Käivitage seda nii sageli, kui soovite: muutmata tooted ei maksa midagi.

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

Väljumiskood 0 = kõik korras, 2 = valmis, kuid mõnel real oli vigu (need loetletakse), 1 = ebaõnnestus.

Laadi obx alla · obx-go

2. Kaust, mis avaldab end ise: obx watch

Laske PIM-il, ERP-l või kolleegil salvestada ekspordid kausta. obx watch avaldab kohe, kui midagi muutub, ja jätab muutmata fotod vahele. Käivitage see teenusena või Dockeriga:

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 või Windowsi Tööajasti

Linux või 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, üks kord)
$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

Salvestage OBX_URL ja OBX_TOKEN hoidla saladustena. Sama töötab GitLab CI-s, Bitbucketis või Azure DevOpsis: paigaldage obx ja käivitage 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 või Zapier

Kasutage tavalist HTTP Request sammu päisega Authorization: Bearer ja oma võtmega. Iga sammu võib ohutult korrata: samade andmete kaks korda saatmine ei muuda midagi.

Toode (näiteks kui see PIM-is muutub)
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}]}]}
Värv ja suurus koos EAN-iga
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"}
Foto: kõigepealt andmed, siis fail ise
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>

Portaal Cloudflare'ile ei tee fotodest ise veebiversioone. Avaldage seal obx-iga või haldusliidese kaudu „Impordid”: need teevad need teie eest. Muul viisil saabunud fotod, näiteks ajastatud impordist, näidatakse seni originaalsuuruses.

Millegi tagasivõtmine
PATCH {OBX_URL}/obx/v1/ingest/products/KO-1001
Authorization: Bearer obxi_…
Content-Type: application/merge-patch+json

{"status": "unpublished"}

Soovite teadet, kui midagi juhtub? Lisage halduses teavitus (webhook) lõppenud impordi või uue juurdepääsutaotluse kohta ja laske sellel käivitada päästik n8n-is, Make'is või Zapieris.

6. API otse (arendajatele)

Liides mäletab, mida see viimati saatis, ja saadab ainult muudatused, partiidena. Või saatke CSV nii, nagu see on, ja laske portaalil see lugeda.

Jätke vahele fotod, mis portaalil juba on, ja saatke üks partii
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 ja fotode zip ühe korraga
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>

Kõik üksikasjad on spetsifikatsioonis:Ingest API ·automatiseerimise retseptid ·Go SDK ·Arendajatele