RSS-Feeds
Verbinden Sie einen RSS- oder Atom-Feed und machen Sie aus jedem neuen Eintrag einen Entwurf, einen geplanten oder einen veröffentlichten Beitrag auf den gewählten Konten, mit einer Vorlage oder KI-Texten.
Berechtigung: posts.read. Siehe Rollen und Berechtigungen.
Feeds und ihre Einträge auflisten und abrufen braucht posts.read. Erstellen, Vorschau, Aktualisieren, Pausieren, Fortsetzen, Prüfen und Löschen brauchen posts.draft und dazu die Berechtigung, die der Beitragsmodus des Feeds verlangt: posts.schedule für SCHEDULE, posts.publish für PUBLISH und ai.generate für KI-Texte. Ein Feed, den ein anderes Mitglied eingerichtet hat, braucht zum Aktualisieren, Pausieren, Fortsetzen, Prüfen oder Löschen außerdem posts.others.
Ein Feed wird nach Zeitplan geprüft, und jeder Eintrag, der nach dem Hinzufügen erscheint, wird zu einem Beitrag auf den Konten in targets. Jeder Beitrag durchläuft dieselben Prüfungen wie Beitrag erstellen. Ein Feed postet als das Mitglied, das ihn zuletzt gespeichert hat: Wer einen Feed erstellt, aktualisiert oder fortsetzt, wird mit dem Mitglied des Schlüssels zu seinem Besitzer.
| Methode | Pfad | Beschreibung |
|---|---|---|
| GET | /api/v1/rss-feeds | Die Feeds des Workspace auflisten, neueste zuerst |
| POST | /api/v1/rss-feeds | Einen Feed verbinden |
| POST | /api/v1/rss-feeds/preview | Einen Feed abrufen, ohne ihn zu speichern, und seine 5 neuesten Einträge darstellen |
| GET | /api/v1/rss-feeds/:id | Einen Feed abrufen |
| PATCH | /api/v1/rss-feeds/:id | Die gesendeten Felder ändern. Die URL kann nicht geändert werden |
| DELETE | /api/v1/rss-feeds/:id | Den Feed nicht mehr prüfen. Bereits erstellte Beiträge bleiben |
| GET | /api/v1/rss-feeds/:id/items | Die Einträge auflisten, die der Feed gesehen hat |
| POST | /api/v1/rss-feeds/:id/pause | Den Feed pausieren |
| POST | /api/v1/rss-feeds/:id/resume | Den Pausengrund löschen und den Feed innerhalb einer Minute prüfen |
| POST | /api/v1/rss-feeds/:id/check | Die nächste Prüfung auf jetzt legen; der Feed wird innerhalb einer Minute abgerufen |
POST /api/v1/rss-feeds
Ruft den Feed ab und merkt sich jeden Eintrag, der schon darin steht, damit nur später erscheinende Einträge gepostet werden. Ein Workspace kann bis zu 20 Feeds haben.
| Feld | Typ | Pflicht | Beschreibung |
|---|---|---|---|
| url | string | Ja | Öffentliche http- oder https-URL eines RSS- oder Atom-Feeds |
| targets | array | Ja | 1 bis 20 Konten, jeweils { platform, connectionId, pageId }. connectionId ist die Konto-ID aus Social Accounts, und pageId ist für FACEBOOK Pflicht |
| postMode | string | Ja | DRAFT erstellt einen Entwurf. SCHEDULE plant den Beitrag publishDelayMinutes nach dem Fund des Eintrags. PUBLISH veröffentlicht ihn sofort |
| contentMode | string | Ja | TEMPLATE füllt template. AI schreibt aus dem Artikel einen Text pro Plattform, hängt den Link an und verbraucht 1 KI-Credit pro Plattform und Eintrag |
| name | string | Nein | Bis zu 120 Zeichen. Standard ist der Titel des Feeds |
| publishDelayMinutes | integer | Nein | 5 bis 10080 (7 Tage). Pflicht, wenn postMode SCHEDULE ist |
| template | string | Nein | Beitragstext mit {title}, {link}, {description}, {author} und {feed}, bis zu 2000 Zeichen. Standard ist {title}\n\n{link}. Zuerst die Beschreibung, dann der Titel wird gekürzt, damit der Text auf jede Plattform passt; der Link wird nie gekürzt |
| aiInstructions | string | Nein | Zusätzliche Anweisungen für KI-Texte, bis zu 1000 Zeichen |
| includeImage | boolean | Nein | Das Bild des Eintrags oder das Vorschaubild des Artikels anhängen. Standard ist true |
| twitterKeepLinks | boolean | Nein | Links in X-Beiträgen klickbar lassen. Nur bei Lifetime-Deal-Plänen, und jeder X-Beitrag mit Link kostet dann mehr Credits. Standard ist false |
| includeKeywords | string[] | Nein | Bis zu 50. Nur Einträge posten, deren Titel oder Zusammenfassung eines davon enthält |
| excludeKeywords | string[] | Nein | Bis zu 50. Einträge überspringen, deren Titel oder Zusammenfassung eines davon enthält |
| maxPostsPerCheck | integer | Nein | 1 bis 10, Standard 3. Neue Einträge werden ältester zuerst gepostet; der Rest wartet auf die nächste Prüfung |
| checkIntervalMinutes | integer | Nein | 15, 30, 60, 180, 360, 720 oder 1440. Standard ist 60 |
| postLatestItem | boolean | Nein | Bei der ersten Prüfung auch den neuesten Eintrag posten. Standard ist false |
Ziele können FACEBOOK, INSTAGRAM, THREADS, TWITTER, BLUESKY, LINKEDIN, MASTODON, TELEGRAM und GOOGLE_BUSINESS sein.
Beispielanfrage:
{
"url": "https://blog.example.com/feed.xml",
"targets": [
{ "platform": "LINKEDIN", "connectionId": "conn_li_001" },
{ "platform": "FACEBOOK", "connectionId": "conn_fb_001", "pageId": "123456789012345" }
],
"postMode": "SCHEDULE",
"publishDelayMinutes": 30,
"contentMode": "TEMPLATE",
"template": "Neu im Blog: {title}\n\n{link}",
"excludeKeywords": ["sponsored"]
}Gibt 201 mit dem Feed zurück:
{
"id": "rss_01j9x",
"userId": "user_123",
"accountGroupId": "ag_01j9x",
"name": "Example Blog",
"url": "https://blog.example.com/feed.xml",
"siteUrl": "https://blog.example.com",
"status": "ACTIVE",
"postMode": "SCHEDULE",
"publishDelayMinutes": 30,
"contentMode": "TEMPLATE",
"template": "Neu im Blog: {title}\n\n{link}",
"includeImage": true,
"twitterKeepLinks": false,
"includeKeywords": [],
"excludeKeywords": ["sponsored"],
"maxPostsPerCheck": 3,
"checkIntervalMinutes": 60,
"targets": [
{ "platform": "LINKEDIN", "connectionId": "conn_li_001", "displayName": "Example Inc." },
{ "platform": "FACEBOOK", "connectionId": "conn_fb_001", "pageId": "123456789012345", "displayName": "Example" }
],
"nextCheckAt": "2026-11-08T15:00:00.000Z",
"createdAt": "2026-11-08T14:00:00.000Z",
"updatedAt": "2026-11-08T14:00:00.000Z"
}Eine URL, die kein RSS- oder Atom-Feed ist, ein bereits verbundener Feed, eine nicht unterstützte Zielplattform, ein fehlendes publishDelayMinutes oder die Grenze von 20 Feeds ergibt 400. Ein Feed, der nicht erreichbar ist, ergibt 503. Ein Schlüssel ohne die Berechtigung, die der Beitragsmodus oder die KI-Texte verlangen, ergibt 403.
Feed-Felder
| Feld | Beschreibung |
|---|---|
| userId | Das Mitglied, als das der Feed postet: wer ihn zuletzt gespeichert hat |
| status | ACTIVE oder PAUSED |
| pauseReason | Warum der Feed pausiert ist, nur gesetzt, solange er PAUSED ist. Siehe Tabelle unten |
| lastError | Der Fehler hinter der Pause, wenn ein Fehler sie ausgelöst hat |
| targets[].displayName | Der Name des Kontos, von AdaptlyPost eingetragen. Wird ignoriert, wenn Sie ihn senden |
| nextCheckAt, lastCheckedAt, lastPostedAt | Wann der Feed als Nächstes geprüft wird, wann er zuletzt geprüft wurde und wann er zuletzt einen Beitrag erstellt hat |
Die übrigen Felder enthalten die Einstellungen von oben.
| Pausengrund | Bedeutung |
|---|---|
| USER | Jemand hat ihn über die API oder die App pausiert |
| FETCH_FAILURES | 5 Abrufe hintereinander sind fehlgeschlagen |
| CONSECUTIVE_FAILURES | 3 Einträge hintereinander konnten nicht gepostet werden |
| ACCESS_LOST | Sein Besitzer hat die Berechtigung verloren, die sein Beitragsmodus braucht |
| SUBSCRIPTION_INACTIVE | Der Plan deckt das Veröffentlichen nicht mehr ab |
| CONNECTION_REMOVED | Jedes Zielkonto wurde getrennt |
Beheben Sie die Ursache und setzen Sie den Feed dann fort.
POST /api/v1/rss-feeds/preview
Nimmt url und optional template, ruft den Feed ab, ohne etwas zu speichern, und gibt url, title, siteUrl und die 5 neuesten items zurück, jeweils mit title, link, summary, publishedAt, imageUrl und text, dem mit der Vorlage dargestellten Eintrag.
GET /api/v1/rss-feeds/:id/items
Listet die Einträge auf, die der Feed gesehen hat, neueste zuerst, ohne die, die beim Hinzufügen schon im Feed standen. limit nimmt 1 bis 100, Standard 20. Gibt { "items": [...] } zurück, jeweils mit id, title, link, publishedAt, createdAt, status, postId und error.
| Eintragsstatus | Bedeutung |
|---|---|
| BASELINE | Stand schon im Feed, als er hinzugefügt wurde |
| PROCESSING | Wird gerade zu einem Beitrag |
| POSTED | Wurde zu einem Beitrag. postId verweist darauf |
| FILTERED | Von den Stichwortregeln ausgeschlossen |
| SKIPPED | Mehr als 14 Tage vor dem Hinzufügen des Feeds veröffentlicht |
| FAILED | Der Beitrag konnte nicht erstellt werden. error nennt den Grund |
Aktualisieren, pausieren, fortsetzen, prüfen und löschen
PATCH nimmt dieselben Felder wie das Erstellen, außer url und postLatestItem, und ändert nur die gesendeten. Pausieren, Fortsetzen, Prüfen und Löschen nehmen keinen Body. Alle außer Löschen geben den Feed zurück; Löschen gibt { "deleted": true } zurück. Eine ID, die nicht existiert oder zu einem anderen Workspace gehört, ergibt 404.