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.

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

Kura recepte jums der?

Jums ir…IzmantojietVajadzīgais kods
CSV vai zip tīmekļa adresē, SFTP serverī vai S3 krātuvēPlānots importsnav
mape, kurā nonāk eksportiobx watchnav
serveris vai dators, kas naktī izpilda uzdevumuscron vai Uzdevumu plānotājsviena rinda
eksporti Git repozitorijāGitHub Actionviens YAML fails
n8n, Make vai ZapierHTTP soļinav (vizuāli)
izstrādātājs, kas pieslēdz jūsu PIM vai ERPTieši APInedaudz

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.

products.csv (saīsināts)
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
Fotoattēlu failu nosaukumi
images/
  KO-1001_NVY_1.jpg     ← style KO-1001, colour NVY, position 1 (front)
  KO-1001_NVY_2.jpg
  KO-1001_NVY_3.jpg

Pilns importa formāts

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

Izejas kods 0 = viss kārtībā, 2 = pabeigts, bet dažās rindās bija kļūdas (tās uzskaitītas), 1 = neizdevās.

Lejupielādēt obx · obx-go

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/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 vai Windows Uzdevumu plānotājs

Linux vai 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, vienreiz)
$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/images

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

Prece (piemēram, kad tā mainās 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}]}]}
Krāsa un izmērs ar 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"}
Fotoattēls: vispirms dati, tad pats fails
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ā.

Kaut kā atsaukšana
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.

Izlaist fotoattēlus, kas portālam jau ir, un nosūtīt vienu partiju
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 un zip ar fotoattēliem vienā reizē
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