← Zurück zu Systeme

eBay-API für einen KI-Agenten zum Einstellen von Artikeln einrichten

ebay-apiai-agentsebay-sellingoauth

Der KI-Agent, der meine Artikel bei eBay einstellt, kann meine Fotos gruppieren, den Artikel erkennen, anhand meiner Vergleichsangebote einen Preis festlegen und das Inserat erstellen. Ein eigenes eBay-Entwicklerkonto kann er sich nicht eröffnen. Dafür will eBay einen Menschen sehen, und für ein paar weitere Seiten danach auch.

Deshalb teilt diese Anleitung zur Einrichtung der eBay-API die Arbeit auf. Du kümmerst dich um sechs eBay-Seiten und fügst drei Werte in eine Datei auf deiner eigenen Festplatte ein. Den Rest erledigt dein Agent im Terminal: die Datenschutzseite, den Zustimmungslink, den Tausch des Codes gegen ein Token und die Prüfung der Rahmenbedingungen. Jede Schrittüberschrift sagt, wer dran ist: Du oder Du und dein Agent. Innerhalb eines Schritts gilt eine einfache Anweisung dir. Eine Zeile, die mit “Bitte deinen Agenten” beginnt, ist sein Einsatz, und du kannst zusehen, wie das JSON vorbeiscrollt.

Eine verstaubte Kamera, von $120 auf $60 reduziert, ein Roboter als KI-Agent zum Einstellen von Artikeln an einem Laptop und ein eBay-Inserat für die Kamera zu $120
Dein Agent erstellt das Inserat. Der Klick auf List now (Jetzt einstellen) wartet weiterhin auf dein Ja.

Wer bei der Einrichtung der eBay-API was macht

Schritt Du Dein Agent
Bevor du anfängst Bringst ein Verkäuferkonto, ein GitHub-Konto und einen KI-Programmieragenten mit. Beantwortest die Fragen zur Übernahme Kopiert den Code in einen privaten Ordner, installiert ihn und führt die Tests aus
1. Entwicklerkonto Registrierst dich und wartest auf die Freigabe —
2. Production-Schlüsselsatz Erstellst ihn —
3. Schlüsselsatz freischalten Füllst eBays Formular zur Kontolöschung aus —
4. Datenschutzseite Gibst einen Namen, einen Kontakt und deinen KI-Dienst an Füllt die Vorlage aus und veröffentlicht einen Gist
5. RuName (Name der Weiterleitungs-URL) Füllst ein Formular aus —
6. .env-Datei Fügst drei Werte ein Erstellt die Datei und stellt Production ein
7. Zustimmung Stimmst bei eBay zu und kopierst eine Adresse Erstellt den Link und tauscht den Code gegen ein Token
8. Rahmenbedingungen Erstellst Versand-, Zahlungs- und Rücknahmebedingungen Prüft sie und meldet dich nach deinem Ja dafür an
9. account.json Triffst die Entscheidungen, die er nicht treffen kann, und genehmigst einen neuen Standort Schreibt die Datei, wendet deine Antworten zur Übernahme an und führt fünf Prüfungen aus

Stell dir das Refresh-Token aus Schritt 7 als deinen Autoschlüssel vor und die Pipeline als einen Parkservice mit Regelwerk. Der Parkservice stellt das Auto ab: Dein Agent erstellt ein unveröffentlichtes Angebot, das Käufer nicht sehen können. Aus dem Parkplatz fährt es erst, wenn du nickst, denn die Veröffentlichung braucht dein ausdrückliches Ja. Einen Haken gibt es allerdings. Der Schlüssel selbst kann mehr, als das Regelwerk erlaubt. Deshalb bleibt er in .env auf deiner Festplatte und landet nie in einem Chat.

Die rosa Zahlen in einem Screenshot entsprechen den Schrittnummern darunter. Die Beschriftungen entsprechen eBays Seiten mit Stand November 2026. eBay benennt Dinge gelegentlich um. Wenn eine Beschriftung abweicht, halte dich deshalb an die verlinkte eBay-Seite.

Alles hier stammt aus ebay-listing-agent, der Pipeline zum Einstellen von Artikeln, die ich mit meinem eigenen Verkäuferkonto nutze. Dein Agent braucht das Repository vor Schritt 1, also hol dir den Link jetzt.

Warum diese Einrichtung der eBay-API direkt in Production beginnt

eBay bietet eine Sandbox (Testumgebung), einen nachgebauten Marktplatz zum Testen. Die Anleitung des Repositorys beginnt dort. Diese hier nicht. Deine Inserate liegen in Production, und ein Sandbox-Testnutzer hat anfangs weder Rahmenbedingungen noch einen Lagerstandort. Beides in der Sandbox einzurichten ist ein Umweg. Deshalb verbindet sich dein Agent von Anfang an mit deinem echten Verkäuferkonto, und die Leitplanken der Pipeline sorgen für den Schutz:

  • Der Lister-Workflow hält bei einem unveröffentlichten Angebot an. Käufer können es nicht sehen.
  • publish ohne --confirm gibt eine Zusammenfassung aus und verweigert die Ausführung. Dein Agent zeigt dir diese Zusammenfassung und wartet auf dein Ja.
  • Die beiden Befehle, die dein Verkäuferkonto ändern, setup --opt-in und setup --create-location, verweigern die Ausführung ebenfalls ohne --confirm.
  • Ein unveröffentlichtes Angebot, das du nicht möchtest, kann dein Agent mit delete-offer entfernen. Bei bereits veröffentlichten Angeboten verweigert der Befehl die Ausführung.

⚠️ Warnung: Diese Einrichtung verbindet deinen Agenten mit deinem echten Verkäuferkonto. Bewahre die Cert ID (Zertifikatkennung) und das Refresh-Token ausschließlich in .env auf. Füge sie nicht in einen Chat ein. Nimm .env nicht in einen Git-Commit auf.

Bevor du anfängst

Das bringst du mit:

  • Ein eBay-Verkäuferkonto ohne Einschränkungen, bei dem Zahlungen eingerichtet sind. Hier landen deine Inserate.
  • Den US-Marktplatz (EBAY_US). Andere Marktplätze sind ungetestet.
  • Ein GitHub-Konto. Dort veröffentlicht dein Agent in Schritt 4 eine kleine Seite.
  • Einen KI-Programmieragenten, der Terminalbefehle ausführen kann, etwa Claude Code, Cursor oder Codex CLI.

Das erledigt dein Agent:

  • Er klont das Repository und kopiert core/ in einen neuen privaten Ordner. Eine Kopie, keinen Fork: Auf GitHub ist ein Fork eines öffentlichen Repositorys ebenfalls öffentlich, und in deinen Inseratordnern werden deine Angebotskennungen stehen.
  • Er installiert Python 3.10+, ImageMagick 7 und die GitHub CLI (gh), falls sie fehlen, danach die Python-Pakete, und führt anschließend die Tests aus.
  • Er geht mit dir ADOPTION-QUESTIONS.md durch: deine Preisgrenze für eine Prüfung, die Sicherheit, die er vor dem Einstellen braucht, und die zu verwendenden Rahmenbedingungen. Er hält deine Antworten fest und wendet sie in Schritt 9 an. Deine Antworten zu Versand und Rücknahmen bestimmen, was du in Schritt 8 erstellst.

Ein Prompt zum Einfügen:

Lies ADOPTION-GUIDE.md in github.com/matbanik/ebay-listing-agent. Erledige die Schritte 1 bis 3 mit mir. Wir richten eBay in Production ein, nicht in der Sandbox. Halte vor dem eBay-API-Zugriff an.

Sag “Production” ausdrücklich so. Die Anleitung des Repositorys empfiehlt zuerst die Sandbox, und ein gewissenhafter Agent hält sich an das Repository.

1. Du: dem eBay Developers Program beitreten

Dein Verkäuferkonto kann die API nicht aufrufen. eBay betreibt sein Entwicklerprogramm wie ein separates Gebäude mit eigener Eingangstür, deshalb brauchst du ein zweites Konto. Dafür kannst du dieselbe E-Mail-Adresse wie für dein Verkäuferkonto verwenden. Es bleibt trotzdem eine andere Anmeldung.

  1. Öffne die Registrierungsseite des eBay Developers Program.
  2. Fülle das Formular aus. Gib deine E-Mail-Adresse ein zweites Mal ein, wo das Formular danach fragt.
  3. Akzeptiere das API License Agreement (API-Lizenzvereinbarung). Schließe die Prüfung ab, dass du kein Roboter bist. Wähle Join (Beitreten).
  4. Warte auf die Freigabe. Die Freigabe kann etwa einen Werktag dauern. Vor der Freigabe kannst du keine Schlüssel erstellen.

eBay fragt möglicherweise nach einer geschäftlichen E-Mail-Adresse. Gib eine an, wenn du eine hast.

2. Du: deinen eBay-Production-Schlüsselsatz erstellen

eBays Application Keys (Anwendungsschlüssel), Abschnitt Production mit verborgenen Werten für App ID (Anwendungskennung), Dev ID (Entwicklerkennung) und Cert ID sowie umrahmten Links User Tokens (Nutzertoken) und Notifications (Benachrichtigungen)
Falls die Cert ID jemals nach außen gelangt, bekommst du über Rotate (Reset) Cert ID (Zertifikatkennung erneuern beziehungsweise zurücksetzen) darunter eine neue.

Ein Schlüsselsatz ist der Ausweis deiner App: drei Werte, die eBay sagen, welche App anklopft. Du brauchst den für Production.

  1. Öffne Application Keys (Anwendungsschlüssel) auf der Entwicklerseite.
  2. Erstelle unter Production einen Schlüsselsatz. Gib ihm einen beliebigen Anwendungstitel, zum Beispiel “my-ebay-lister”.
  3. Prüfe, ob der Abschnitt Production App ID (Client ID) (Anwendungskennung, auch Client-Kennung), Dev ID (Entwicklerkennung) und Cert ID (Client Secret) (Zertifikatkennung, geheimer Clientschlüssel) anzeigt.
  4. Lass diese Seite offen. Du brauchst sie in den Schritten 3, 5 und 6 wieder.

Die App ID identifiziert deine App. Die Cert ID ist ihr Passwort, behandle sie also entsprechend. Die Dev ID wird nicht verwendet. Die beiden umrahmten Links unter der App ID, User Tokens (Nutzertoken) und Notifications (Benachrichtigungen), führen zu den Schritten 5 und 3. Bei einem neuen Production-Schlüsselsatz steht außerdem “Your Keyset is currently disabled.” (Dein Schlüsselsatz ist derzeit deaktiviert.) Das ist normal. Schritt 3 schaltet ihn frei.

3. Du: den Production-Schlüsselsatz freischalten

eBays Benachrichtigungsformular mit Marketplace Account Deletion (Löschung eines Marktplatzkontos), dem Schalter für die Ausnahme, den Optionen für Exemption reason (Ausnahmegrund) und Submit (Absenden), mit 1 bis 4 markiert
Die Schaltflächen für die Gründe sind absichtlich unkenntlich gemacht. Das Bild soll dir die Entscheidung nicht abnehmen.

eBay schaltet einen Production-Schlüsselsatz erst frei, wenn du eine Frage beantwortest: Wenn ein eBay-Nutzer sein Konto schließt, wie erfährt deine App davon? Apps, die eBay-Nutzerdaten speichern, müssen diese Löschmitteilungen empfangen. Apps, die das nicht tun, können eine Ausnahme beantragen. Das Formular findest du hinter dem Link Notifications unter deiner App ID für Production. Du kannst auch direkt die Benachrichtigungsseite für Production öffnen.

⚠️ Achtung: Wähle nur einen Ausnahmegrund, der auf dich zutrifft. Wenn kein Grund auf deine App zutrifft, stelle keinen Antrag. Nutze den Weg über einen Endpunkt am Ende dieses Schritts. Falls sich nach dem Betätigen des Schalters ein Bestätigungsfenster öffnet, lies es. Wähle Confirm (Bestätigen) nur, wenn die Aussage auf dich zutrifft. Im Formular steht: “Failure to provide correct information may result in penalties or having your account disabled.” (Falsche Angaben können zu Sanktionen oder zur Deaktivierung deines Kontos führen.)

  1. Wähle Marketplace Account Deletion (Löschung eines Marktplatzkontos).
  2. Aktiviere den Schalter Exempted from Marketplace Account Deletion (Von Mitteilungen zur Löschung eines Marktplatzkontos ausgenommen).
  3. Wähle den Exemption reason (Ausnahmegrund), der auf dich zutrifft. Beschreibe unter Additional information (Zusätzliche Informationen), was du speicherst.
  4. Wähle Submit (Absenden).
  5. Öffne Application Keys erneut. Prüfe, ob beim Production-Schlüsselsatz die Meldung “Your Keyset is currently disabled.” steht.
  6. Ist die Meldung noch da? Halte an. Mach während der Wartezeit mit der Datenschutzseite in Schritt 4 weiter. Beginne mit der Zustimmung in Schritt 7 erst, wenn die Meldung verschwunden ist.

Darüber entscheidest du hier. Die Pipeline läuft ausschließlich mit deinem eigenen Verkäuferkonto. Andere eBay-Nutzer meldet sie nie an, und Käuferdaten speichert sie nicht. Dateien zu deinen eigenen Inseraten speichert sie aber auf deiner Festplatte: Titel, Preise, Angebotskennungen und Inseratkennungen. eBays Formulierung “any eBay data” (jegliche eBay-Daten) sagt nicht, ob das darunterfällt. Diese Entscheidung kann ich dir nicht abnehmen, und dein Agent auch nicht.

Wenn kein Grund passt oder eBay die Ausnahme ablehnt, bleibt der andere Weg: einen HTTPS-Endpunkt für den Empfang von eBays Mitteilungen anmelden. Das Repository liefert keinen mit, also hostest du ihn selbst, und die Zustimmung in Schritt 7 wartet, bis er funktioniert. eBays Anleitung zur Kontolöschung erklärt das. Einige Entwickler berichten in eBays Forum von Schlüsselsätzen, die nach dem Antrag weiterhin “Non Compliant” (Nicht konform) anzeigten. Schau dir deshalb den Schlüsselsatz an, bevor du weitermachst.

4. Du und dein Agent: eine Datenschutzseite veröffentlichen

Ohne eine URL zur Datenschutzerklärung erstellt eBay in Schritt 5 keinen RuName. Eine zu schreiben klingt nach Hausaufgaben. Den größten Teil davon erledigt dein Agent, denn das Repository bringt eine Vorlage mit.

  1. Gib deinem Agenten einen App-Namen, deinen Namen oder den deines Unternehmens, eine öffentliche Kontaktmöglichkeit und den KI-Dienst, den du nutzt.
  2. Bitte deinen Agenten, PRIVACY-TEMPLATE.md auszufüllen. Er speichert das Ergebnis als privacy-policy.md.
  3. Bitte deinen Agenten, privacy-policy.md als öffentlichen GitHub Gist zu veröffentlichen.
  4. Fragt gh nach einer Anmeldung? Führe gh auth login selbst aus. Folge den Anweisungen.
  5. Lies die Seite, die dein Agent veröffentlicht. Prüfe den Namen und die Kontaktangabe.
  6. Notiere den Gist-Link. Du fügst ihn in Schritt 5 in das RuName-Formular ein.

Ein Prompt zum Einfügen:

Fülle PRIVACY-TEMPLATE.md für “My eBay Lister” aus. Inhaber: [dein Name oder Unternehmen]. Kontakt: [die E-Mail-Adresse oder Seite, die du veröffentlichen wirst]. KI-Dienst: [der Dienst, den du nutzt]. Speichere das Ergebnis als privacy-policy.md, veröffentliche es als öffentlichen Gist und gib mir den Link.

Die Vorlage hat fünf kurze Teile: worauf die App zugreift, was sie speichert, mit wem sie Daten teilt, wie man sie löscht und wie man dich erreicht. Außerdem gibt es eine Zeile, in der du jeden KI-Dienst nennst, der deine Fotos analysiert. Dein Agent liest deine Fotos, um Artikel zu erkennen, also nenne den Dienst, über den du ihn laufen lässt. Die Vorlage verspricht auch nicht zu viel: “Das ist ein Ausgangspunkt, keine Rechtsberatung.” Für die Veröffentlichung selbst braucht dein Agent eine Zeile:

gh gist create --public --desc "Privacy policy: My eBay Lister" privacy-policy.md

5. Du: deinen eBay-RuName erstellen

eBays RuName-Formular, in dem das Feld für die URL der Datenschutzerklärung mit 1 und die Felder für die URLs nach Annahme und Ablehnung der Autorisierung mit 2 markiert sind
Die Datenschutz-URL muss mit https:// beginnen und darf nicht auf eBays eigene Datenschutzerklärung verweisen. Ein Gist-Link erfüllt beides.

RuName steht für “redirect URL name.” (Name der Weiterleitungs-URL.) Das ist eBays Kurzname für deine Weiterleitungseinstellungen, und er sieht aus, als wäre der Name deiner App durch einen Aktenvernichter gelaufen: YourName-YourApp-ab12-cdefgh. Du brauchst ihn für die Zustimmung. Jeder Schlüsselsatz hat seinen eigenen RuName, also erstelle diesen vom Production-Schlüsselsatz aus.

So kommst du zum Formular:

  1. Wähle auf Application Keys unter der App ID für Production User Tokens.
  2. Öffne Get a Token from eBay via Your Application (Über deine Anwendung ein Token von eBay erhalten). Wähle “You have no Redirect URLs. Click here to add one.” (Du hast keine Weiterleitungs-URLs. Klicke hier, um eine hinzuzufügen.)
  3. Fragt eBay nach einer rechtsgültigen Anschrift? Fülle das Formular aus. Wähle Continue to create RuName (Weiter zur Erstellung des RuName).

Fülle das Formular aus. Die rosa Zahlen entsprechen dieser Liste:

  1. Füge unter Your privacy policy URL (URL deiner Datenschutzerklärung) den Gist-Link aus Schritt 4 ein.
  2. Trage unter Your auth accepted URL (URL nach angenommener Autorisierung) und Your auth declined URL (URL nach abgelehnter Autorisierung) eine beliebige HTTPS-Adresse ein. Meine Einrichtung verwendet https://example.com.
  3. Gib einen Display Title (Anzeigetitel) ein, zum Beispiel “My eBay Lister”. Diesen Titel siehst du in Schritt 7 auf der Zustimmungsseite.
  4. Speichere das Formular.
  5. Kopiere den RuName. Du fügst ihn in Schritt 6 in .env ein.

Warum darf die URL nach Annahme eine beliebige HTTPS-Seite sein? Dort muss nichts laufen. Nach deiner Zustimmung in Schritt 7 leitet eBay deinen Browser zu dieser Adresse weiter und hängt einen einmaligen Code an. Du kopierst sie direkt aus der Adressleiste. eBays Formular ergänzt: “If you leave these fields blank, the eBay default accept and reject pages will be used.” (Wenn du diese Felder leer lässt, werden eBays Standardseiten für Annahme und Ablehnung verwendet.) Die Adresse, die du kopierst, sieht dann anders aus. Schritt 7 zeigt beide.

eBay akzeptiert auch seine eigene Datenschutzerklärung nicht als deine: Die URL muss HTTPS verwenden und “should not be eBay’s Privacy Policy URL.” (sollte nicht die URL von eBays Datenschutzerklärung sein.) eBays Quick OAuth Guide (OAuth-Kurzanleitung) verlangt einen RuName mit “OAuth Enabled” (OAuth aktiviert). Falls dein Formular diese Option zeigt, aktiviere sie.

6. Du und dein Agent: die .env-Datei ausfüllen

.env ist eine einfache Textdatei, die deine Schlüssel auf deiner eigenen Festplatte aufbewahrt. Dein Agent erstellt sie. Du trägst die geheimen Werte ein, damit sie nie durch den Chat gehen.

  1. Bitte deinen Agenten, .env aus .env.example zu erstellen, mit EBAY_ENVIRONMENT=production.
  2. Öffne .env in einem Texteditor.
  3. Füge die App ID hinter EBAY_CLIENT_ID= ein.
  4. Füge die Cert ID hinter EBAY_CLIENT_SECRET= ein.
  5. Füge den RuName hinter EBAY_REDIRECT_URI= ein. Füge den RuName ein, keine URL.
  6. Lass EBAY_USER_REFRESH_TOKEN= leer. Schritt 7 trägt den Wert ein.
  7. Speichere die Datei.

Wenn du fertig bist, sehen die fünf wichtigen Zeilen so aus, mit deinen Werten anstelle der Klammern:

EBAY_ENVIRONMENT=production
EBAY_CLIENT_ID=<Production App ID>
EBAY_CLIENT_SECRET=<Production Cert ID>
EBAY_REDIRECT_URI=<Production RuName>
EBAY_USER_REFRESH_TOKEN=

Bei der RuName-Zeile stolpern die meisten. Die Einstellung heißt redirect_uri, also wirkt eine URL wie die richtige Antwort. eBay will den RuName. Eine URL an dieser Stelle ist die häufigste Ursache für redirect_uri-Fehler.

Falls die Cert ID jemals nach außen gelangt, öffne Application Keys und wähle Rotate (Reset) Cert ID mit einer Übergangsfrist von 0, damit die alte sofort nicht mehr funktioniert. Füge die neue in .env ein. Refresh-Token bleiben bei der Erneuerung gültig, deshalb musst du Schritt 7 nicht wiederholen.

7. Du und dein Agent: Zustimmung und das eBay-Refresh-Token

Das ist der Handschlag. Du sagst eBay als Verkäufer, dass diese App deine Inserate verwalten darf. eBay gibt deinem Browser einen einmaligen Code. Dein Agent tauscht den Code gegen ein Refresh-Token, den langlebigen Schlüssel, den die Pipeline von da an verwendet. Das gesamte Zeitfenster beträgt fünf Minuten. Lies deshalb erst die Liste und leg dann los.

  1. Bitte deinen Agenten, auth-url auszuführen. Er gibt dir einen Zustimmungslink.
  2. Öffne den Zustimmungslink in deinem Browser.
  3. Fragt eBay nach einer Anmeldung? Gib den Nutzernamen und das Passwort deines Verkäuferkontos ein. Verwende nicht das Entwicklerkonto.
  4. Lies die Berechtigungen auf der Zustimmungsseite. Akzeptiere sie.
  5. Kopiere die vollständige Adresse aus der Adressleiste der Seite, die sich öffnet.
  6. Füge die vollständige Adresse in den Chat ein.
  7. Bitte deinen Agenten, damit sofort exchange-code auszuführen.
  8. Prüfe, ob dein Agent "stored": true meldet. Meldet er invalid_grant? Fang wieder oben in dieser Liste an.

So sehen die beiden Adressen aus. Dein Agent gibt dir die erste. Du gibst ihm die zweite zurück.

You open (the consent link from your agent):
https://auth.ebay.com/oauth2/authorize?client_id=<App ID>&redirect_uri=<RuName>&response_type=code&scope=https%3A//api.ebay.com/oauth/api_scope%20...

You copy (from the address bar, after you accept):
https://example.com/?code=v%5E1.1%23i%5E1%23...&expires_in=299

Der Teil nach code= ist jedes Mal neu. Er funktioniert einmal und läuft nach 299 Sekunden ab. Genau das sagt dir expires_in=299. Deine Adresse kann weitere Teile enthalten, etwa state=. Kopiere sie vollständig. Dein Agent liest den Code heraus.

Kannst du das bedenkenlos in einen Chat einfügen? Der Code funktioniert einmal und verfällt nach fünf Minuten. eBay tauscht ihn nur zusammen mit deiner Cert ID gegen ein Token, und die Cert ID bleibt in .env. Ohne die Cert ID ist der Code also nutzlos. Zwei Stellen sehen ihn aber: der Chat und die Website hinter deiner URL nach Annahme, die deine Zieladresse protokollieren kann. Keine von beiden bekommt deine Cert ID, und sobald dein Agent den Code eingetauscht hat, ist er verbraucht. Im Zustimmungslink stehen deine App ID und dein RuName. Das ist normal: Jeder OAuth-Zustimmungslink enthält sie.

Hast du die URL nach Annahme in Schritt 5 leer gelassen? Dann schickt eBay dich auf seine eigene Seite, und die Adresse beginnt so:

https://signin.ebay.com/ws/eBayISAPI.dll?ThirdPartyAuthSucessFailure&isAuthSuccessful=true&state=null&code=v%5E1...

Ja, “Sucess.” So schreibt es eBay, nicht ich. Der Teil code= ist ebenfalls enthalten, und exchange-code liest ihn aus jeder Adresse. Dieser Weg hält den Code außerdem von einer Website fern, die du nicht selbst betreibst. Meine eigene Einrichtung verwendet example.com, deshalb habe ich diesen Weg nicht selbst durchgespielt.

Was Gültigkeitsdauer Wer sich darum kümmert
Code 299 Sekunden, eine Verwendung Du kopierst ihn einmal
Zugriffstoken 2 Stunden Das Tool erneuert es selbstständig
Refresh-Token Etwa 18 Monate Wiederhole diesen Schritt, wenn es abläuft

Falls etwas schiefgeht:

  • invalid_grant: Der Code wurde bereits verwendet oder war älter als fünf Minuten. Hol dir einen neuen Link und füge die Adresse schneller ein.
  • redirect_uri-Fehler: In .env steht eine URL oder ein Sandbox-RuName statt des Production-RuName.
  • invalid_client: App ID und Cert ID stammen aus unterschiedlichen Schlüsselsätzen, oder EBAY_ENVIRONMENT ist nicht production.

8. Du und dein Agent: eBay-Rahmenbedingungen erstellen

Menü Account (Konto) in My eBay (Mein eBay), in dem Selling (Verkaufen) und Business Policies (Rahmenbedingungen) mit 1 und 2 markiert sind, mit dem Hinweis, dass Create policy (Bedingung erstellen) oben rechts steht
Versandbedingungen sind ebenfalls Rahmenbedingungen. Du findest sie nicht unter Shipping Preferences (Versandeinstellungen) direkt darunter.

Rahmenbedingungen sind gespeicherte Antworten auf die Fragen, die jedes Inserat stellt: Wie wird versandt, wie bezahlt der Käufer und was passiert bei einer Rückgabe? Dein Agent hängt sie über ihre Kennung an jedes Angebot. Sein Tool kann Rahmenbedingungen lesen, hat aber keinen Befehl, um sie zu erstellen. Deshalb bist hier du dran.

Bitte deinen Agenten, zuerst policies auszuführen. Der Befehl listet deine vorhandenen Rahmenbedingungen auf. Wenn du bereits Bedingungen für kostenlosen Versand, Zahlungsbedingungen und Rücknahmebedingungen mit 30 Tagen hast, spring zu Schritt 9. Wenn policies meldet, dass dein Konto nicht für Business Policies angemeldet ist, kann dein Agent setup --opt-in --confirm ausführen, aber erst nach deinem Ja. Bitte deinen Agenten danach, policies erneut auszuführen. Sobald der Anmeldefehler verschwunden ist, erstelle deine Rahmenbedingungen. Laut den Notizen des Repositorys kann diese Wartezeit zwischen wenigen Minuten und 24 Stunden liegen.

  1. Öffne My eBay (Mein eBay). Wähle Account (Konto). Wähle im Menü links Selling (Verkaufen).
  2. Wähle Business Policies (Rahmenbedingungen). Die Seite Manage your business policies (Deine Rahmenbedingungen verwalten) öffnet sich.
  3. Wähle oben rechts Create policy (Bedingung erstellen). Wähle die Art der Bedingung.

Erstelle so drei Bedingungen, eine nach der anderen.

Versandbedingungen

eBays Formular für Versandbedingungen, in dem Cost type (Kostenart), eingestellt auf Flat (Pauschal), mit 1 und das Kontrollkästchen Offer free shipping (Kostenlosen Versand anbieten) mit 2 markiert sind
Wenn Offer free shipping aktiviert ist, werden die Felder Buyer pays (Käufer zahlt) bei $0.00 ausgegraut.

Die Preiskalkulation der Pipeline rechnet die Versandkosten in den Artikelpreis ein. Deshalb braucht sie Bedingungen für kostenlosen Versand. Lass den berechneten Versand aus. Die Fragen zur Übernahme im Repository nennen ihn als Beispiel für Bedingungen, die an Paketfehlern scheitern können.

  1. Wähle unter Cost type (Kostenart) Flat: Same cost to all buyers (Pauschal: Gleiche Kosten für alle Käufer).
  2. Aktiviere Offer free shipping (Kostenlosen Versand anbieten).
  3. Gib einen Policy name (Namen der Bedingung) ein, zum Beispiel “Free domestic shipping” (Kostenloser Inlandsversand).
  4. Wähle die Shipping method (Versandart), die zu deinen Artikeln passt.
  5. Wähle die Handling time (Bearbeitungszeit), die zu deinen Artikeln passt.
  6. Wähle Save (Speichern).

Zahlungs- und Rücknahmebedingungen

  1. Erstelle Zahlungsbedingungen. Aktiviere Require immediate payment when buyer uses Buy It Now (Sofortige Zahlung verlangen, wenn der Käufer Sofort-Kaufen nutzt). Wähle Save.
  2. Erstelle Rücknahmebedingungen. Aktiviere unter den Inlandsrückgaben Accept returns (Rückgaben akzeptieren).
  3. Wähle unter Allowed within (Zulässig innerhalb von) 30 Days (30 Tagen). Wähle unter Return shipping paid by (Rückversand bezahlt von) Buyer (Käufer). Wähle Save.
  4. Bitte deinen Agenten, policies erneut auszuführen.
  5. Prüfe, ob alle drei Bedingungen erscheinen.

Meine Zahlungsbedingungen verlangen sofortige Zahlung, und die Standard-Rücknahmebedingungen des Repositorys sehen 30 Tage vor, wobei der Käufer den Rückversand bezahlt. eBays Formular gibt noch einen eigenen Anstoß: “Offering a minimum 30-day return policy helps your listings qualify for Top Rated Seller Benefits.” (Eine Rücknahmefrist von mindestens 30 Tagen hilft deinen Inseraten, sich für die Vorteile für Verkäufer mit Top-Bewertung zu qualifizieren.)

9. Du und dein Agent: account.json schreiben und die Prüfungen ausführen

Deine Bedingungskennungen und dein Lagerstandort unterscheiden sich von denen aller anderen. Deshalb stehen sie in account.json, einer privaten Datei neben .env. Dein Agent schreibt sie mit setup. Dieser Befehl befragt niemanden. Er behält Entscheidungen bei, die schon in account.json gespeichert sind. Ansonsten nimmt er den einzigen Kandidaten, etwa deinen einzigen Standort oder deine einzigen Rücknahmebedingungen mit 30 Tagen. Wenn er nicht entscheiden kann, sagt er das in seinen choices und wartet auf ein Flag. Du triffst die Entscheidungen, die er nicht treffen kann.

  1. Bitte deinen Agenten, setup --dry-run auszuführen. Der Befehl meldet, was er gefunden hat und was er nicht entscheiden kann.
  2. Lies die choices zusammen mit deinem Agenten. Steht in einer Zeile “found: pass”? Sag deinem Agenten, welche Bedingung oder welchen Standort er verwenden soll.
  3. Kein Lagerstandort vorhanden? Gib deinem Agenten deine Postleitzahl, deinen Ort und deinen Bundesstaat. Genehmige den Befehl --create-location.
  4. Bitte deinen Agenten, setup --dry-run mit deinen Entscheidungen erneut auszuführen.
  5. Steht unter problems noch etwas? Wiederhole die Schritte 2 bis 4.
  6. Bitte deinen Agenten, setup mit denselben Entscheidungen auszuführen. Der Befehl schreibt account.json.
  7. Bitte deinen Agenten, deine übrigen Antworten zur Übernahme anzuwenden. ADOPTION-QUESTIONS.md nennt für jede Antwort den Schlüssel oder die Datei.
  8. Prüfe die Preisgrenze und den Gebührensatz im Abschnitt pipeline von account.json.
  9. Bitte deinen Agenten, die fünf Prüfungen unten auszuführen. Alle fünf sollten erfolgreich sein.

Deine Entscheidungen werden als Flags übergeben. Dein Agent übergibt eine Bedingungskennung mit --fulfillment (so nennt eBay den Versand), --payment oder --return und einen Standort mit --location-key. Zwei Antworten zur Übernahme kommen auf demselben Weg mit: --disallow-fulfillment kennzeichnet Versandbedingungen, die dein Agent niemals verwenden darf, und --return-14-day benennt Rücknahmebedingungen mit 14 Tagen, falls du solche hast:

python tools/ebay_api.py setup --dry-run --fulfillment <ID> --return <ID> --location-key HOME-01

So sieht der Standortbefehl aus, den dein Agent nach deinem Ja ausführt:

python tools/ebay_api.py setup --create-location --location-key HOME-01 --postal-code <ZIP> --city <city> --state <ST> --confirm

Punkt 7 oben übersieht man leicht, denn setup liest dein eBay-Konto, nicht deine Antworten zur Übernahme. Der Befehl füllt pipeline mit den Standardwerten des Repositorys: alles über $200 prüfen lassen, bei einer Sicherheit unter 0,70 nachfragen, 13,6 % Verkaufsprovision und $0.40 pro Bestellung. Diese Werte gelten, bis dein Agent die Datei bearbeitet. Spätere setup-Durchläufe behalten die Änderungen bei. Deine übrigen Antworten, etwa zur Fotoquelle und zu Sicherungen, kommen in die Workflow-Dateien und AGENTS.md. Die Schritte 5 und 6 in ADOPTION-GUIDE.md listen jede Änderung auf. Schritt 7 dort ergänzt einen Validierungslauf mit einem erfundenen Stirnlampen-Inserat, der bei eBay nichts anfasst.

Dann kommen die fünf Prüfungen aus Schritt 9:

python tools/ebay_api.py setup --dry-run              # "problems": [] means ready
python tools/ebay_api.py policies
python tools/ebay_api.py categories "flashlight"
python tools/ebay_api.py browse "flashlight" --limit 1
python tools/ebay_api.py reconcile

Hier ist ein echter setup --dry-run aus meinem eigenen Konto, gekürzt und mit unkenntlich gemachten Kennungen. Es ist ein erneuter Durchlauf, deshalb steht bei jeder Auswahl “kept from account.json.” Die Zeile, auf die du achtest, ist "problems": [].

{
  "file": "<your folder>/account.json",
  "written": false,
  ...
  "choices": {
    "merchantLocationKey": "kept from account.json",
    "fulfillment": "kept from account.json",
    "payment": "kept from account.json",
    "return": "kept from account.json"
  },
  "problems": [],
  ...
  "next": "Ready: the Lister copies these IDs into offer.json; validate_payload.py checks them"
}

"written": false bedeutet, dass der Probelauf nachgesehen und die Datei unverändert gelassen hat.

Dein erster Artikel: Wer macht was?

Damit ist deine eBay-API eingerichtet. Ab jetzt legst du Fotos in einem Ordner ab, und dein Agent führt fünf Workflows nacheinander aus. Für dich bleiben nur ein paar Zwischenstopps:

Workflow Das machst du
Import Legst die Fotos ab. Prüfst die Gruppierung
Curator Korrigierst die Erkennung, falls sie falsch ist
Evaluator Fügst auf Nachfrage Vergleichsangebote verkaufter Artikel aus Terapeak ein
Lister Nichts. Er hält bei einem unveröffentlichten Angebot an
Review Liest listing-draft.md und genehmigst oder lehnst ab

Warum Terapeak von Hand? Der Browse-Befehl des Tools sieht, was andere Verkäufer gerade verlangen, nicht, was Käufer tatsächlich bezahlt haben. Ein Angebotspreis ist eine Obergrenze, kein Verkauf. Deshalb bittet der Evaluator dich um Vergleichsangebote verkaufter Artikel, und die findest du in Terapeak im Seller Hub (Verkäufer-Cockpit).

So arbeitet der Parkservice. Er stellt jedes Auto ordentlich als unveröffentlichtes Angebot auf dem Parkplatz ab. Alles über deiner Preisgrenze wartet schon vor dem Einparken auf dich. Nichts verlässt den Parkplatz, bis du den Abholschein übergibst, und dieser Schein ist dein Ja im Review-Schritt.

Hol dir ebay-listing-agent auf GitHub, gib deinem Agenten ADOPTION-GUIDE.md und sag ihm “Production, nicht Sandbox”. Wenn eine Beschriftung in dieser Anleitung zur Einrichtung der eBay-API nicht mehr zu eBays Seite passt, eröffne ein Issue im Repository. Dann muss der nächste Verkäufer nicht danach suchen.

Ressourcen


Abonnieren