Uathoibriú
Lean ort ag obair mar a dhéanann tú anois.
Tá na sonraí agus na grianghraif cheana féin i do PIM, ERP, DAM nó i bhfillteán comhroinnte. Roghnaigh an chéad oideas a oireann: oibríonn siad go léir le gach tairseach 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: exportCén t-oideas a oireann duit?
| Tá agat… | Úsáid | Cód ag teastáil |
|---|---|---|
| CSV nó zip ar sheoladh gréasáin, freastalaí SFTP nó buicéad S3 | Allmhairiú sceidealta | níl |
| fillteán ina dtagann easpórtálacha | obx watch | níl |
| freastalaí nó ríomhaire a ritheann tascanna san oíche | cron nó Sceidealóir Tascanna | líne amháin |
| d'easpórtálacha i stór Git | GitHub Action | comhad YAML amháin |
| n8n, Make nó Zapier | Céimeanna HTTP | níl (amhairc) |
| forbróir a nascann do PIM nó ERP | An API go díreach | beagán |
Formáid amháin do gach rud
Léann gach bealach foilsithe an rud céanna: products.csv le líne amháin do gach méid, agus grianghraif darb ainm {style}_{color}_{position}.jpg (stíl, dath, suíomh). Nuair atá sé sin agat, oibríonn gach oideas thíos.
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.jpgCad atá de dhíth ort
I do riarachán, oscail Uaslódáil uathoibríoch → Eochracha rochtana agus cruthaigh eochair nua. Beidh dhá luach agat ansin: seoladh do thairsí (OBX_URL) agus an eochair féin (OBX_TOKEN). Ní thaispeántar an eochair ach uair amháin.
export OBX_URL=https://brands.kestrel.example
export OBX_TOKEN=obxi_… # admin → Automatic upload → Access keys (shown once)Tabhair a eochair féin do gach córas. Ansin is féidir leat ceann amháin a chúlghairm gan na cinn eile a bhriseadh.
1. Allmhairiú sceidealta (gan chód)
I do riarachán: Uaslódáil uathoibríoch → Iompórtálacha sceidealaithe → Cuir iompórtáil sceidealaithe leis. Roghnaigh an fhoinse agus cé chomh minic a ritheann sé.
- Seoladh gréasáin (HTTPS): seoladh products.csv, nó zip le products.csv agus grianghraif. Stóráiltear sonraí logála isteach criptithe.
- SFTP: freastalaí, úsáideoir, pasfhocal nó eochair, agus an fillteán ina bhfuil an easpórtáil.
- Buicéad S3: AWS S3, Cloudflare R2, MinIO nó Backblaze: críochphointe, buicéad, fillteán agus eochair inléite amháin.
Roghnaigh "Cuir leis agus nuashonraigh amháin" nó "Tarraing siar earraí atá ar iarraidh freisin". Tarraingíonn an dara rogha siar freisin a d'imigh ón gcomhad, ach stopann sé má d'imeodh níos mó ná leath de bhranda, ionas nach bhfolmhaíonn easpórtáil bhriste do chatalóg riamh. Taispeánann "Tástáil an ceangal" na comhaid a léifeadh sé.
An uirlis obx
Is clár aonair é obx do Windows, macOS agus Linux. Léann sé OBX_URL agus OBX_TOKEN ón timpeallacht, ní uaslódálann sé ach grianghraif nua nó athraithe, déanann sé na leaganacha gréasáin nuair is gá agus fanann sé go dtí go bhfuil gach rud próiseáilte ag do thairseach. Rith é chomh minic agus is mian leat: ní chosnaíonn earraí gan athrú faic.
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 errorsCód scoir 0 = gach rud i gceart, 2 = críochnaithe ach bhí earráidí i roinnt línte (liostaítear iad), 1 = theip air.
2. Fillteán a fhoilsíonn é féin: obx watch
Lig do do PIM, ERP nó do chomhghleacaí easpórtálacha a shábháil i bhfillteán. Foilsíonn obx watch a luaithe a athraíonn rud éigin agus scipeálann sé grianghraif nár athraigh. Rith é mar sheirbhís, nó le 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 nó Sceidealóir Tascanna 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
Stóráil OBX_URL agus OBX_TOKEN mar rúin an stóir. Oibríonn an rud céanna in GitLab CI, Bitbucket nó Azure DevOps: suiteáil obx agus rith 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 nó Zapier
Úsáid gnáthchéim HTTP Request leis an gceanntásc Authorization: Bearer agus d'eochair ina dhiaidh. Is féidir gach céim a athdhéanamh go sábháilte: ní athraíonn na sonraí céanna a sheoladh faoi dhó faic.
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>Ní dhéanann Tairseach do Cloudflare leaganacha gréasáin de ghrianghraif é féin. Foilsigh ansin le obx nó trí "Iompórtálacha" i do riarachán: déanann siad sin duit iad. Taispeántar grianghraif a thagann ar bhealach eile, mar shampla ó iompórtáil sceidealaithe, ina mbunmhéid go dtí sin.
PATCH {OBX_URL}/obx/v1/ingest/products/KO-1001
Authorization: Bearer obxi_…
Content-Type: application/merge-patch+json
{"status": "unpublished"}Ar mhaith leat fógra nuair a tharlaíonn rud éigin? I do riarachán, cuir fógra (webhook) leis le haghaidh allmhairiú críochnaithe nó iarratas nua ar rochtain, agus lig dó truicear a thosú in n8n, Make nó Zapier.
6. An API go díreach (d'fhorbróirí)
Cuimhníonn comhtháthú ar an méid a sheol sé an uair dheireanach agus ní sheolann sé ach na hathruithe, i mbaisceanna. Nó seol an CSV mar atá agus lig don tairseach é a léamh.
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>Tá gach mionsonra sa tsonraíocht:Ingest API ·oidis uathoibrithe ·Go SDK ·Do fhorbróirí