Feeds (RSS)
Subscribe to RSS/Atom feeds, fetch entries, and save articles to notes. Supports OPML import/export.
Type Definitions
type Feed {
id: ID!
url: String! # RSS/Atom URL
name: String! # display name (defaults to feed title)
fetchContent: Boolean! # when true, the server fetches the full article body
updatedAt: String!
}
type FeedCount {
feedId: ID!
count: Int! # total entries
unreadCount: Int!
}
type FeedEntry {
id: ID!
feedId: ID!
title: String!
description: String! # short summary
content: String! # full article body (may be empty until fetched)
url: String! # canonical article URL
publishedAt: String! # ISO 8601
read: Boolean!
favorite: Boolean!
tags: [Tag!]!
}Operations
feeds
List all subscribed feeds.
query GetFeeds {
feeds { id url name fetchContent updatedAt }
}feedsCount
Per-feed total and unread entry counts.
query GetFeedsCount {
feedsCount { feedId count unreadCount }
}feedEntries
Search feed entries (title + description). Leave query empty to list all.
query GetFeedEntries($offset: Int!, $limit: Int!, $query: String!) {
feedEntries(offset: $offset, limit: $limit, query: $query) {
id feedId title description content url publishedAt read favorite
tags { id name }
}
}feedEntryCount
Count feed entries matching a query.
query GetFeedEntryCount($query: String!) {
feedEntryCount(query: $query)
}feedEntry
Fetch a single feed entry by ID.
query GetFeedEntry($id: ID!) {
feedEntry(id: $id) { id feedId title description content url publishedAt read favorite }
}createFeed
Subscribe to a new feed. The server fetches the RSS channel to populate the name, then kicks off a one-time sync.
mutation CreateFeed($url: String!, $fetchContent: Boolean!) {
createFeed(url: $url, fetchContent: $fetchContent) { id url name fetchContent updatedAt }
}updateFeed
Update a feed's display name or fetchContent flag.
mutation UpdateFeed($id: ID!, $name: String!, $fetchContent: Boolean!) {
updateFeed(id: $id, name: $name, fetchContent: $fetchContent) { id url name fetchContent updatedAt }
}deleteFeed
Unsubscribe from a feed and delete all its entries (and their tag relations).
mutation DeleteFeed($id: ID!) {
deleteFeed(id: $id)
}syncFeeds
Trigger a one-time feed sync worker. Pass an id to sync a single feed; pass null or empty to sync all.
mutation SyncFeeds($id: ID) {
syncFeeds(id: $id)
}fetchFeedContent
Fetch the full article body for a single feed entry. Returns the updated entry.
mutation FetchFeedContent($id: ID!) {
fetchFeedContent(id: $id) { id content }
}syncFeedContent
Alias of fetchFeedContent. Kept for backward compatibility.
mutation SyncFeedContent($id: ID!) {
syncFeedContent(id: $id) { id content }
}deleteFeedEntries
Delete feed entries matching a query (and their tag relations).
mutation DeleteFeedEntries($query: String!) {
deleteFeedEntries(query: $query)
}importFeeds
Import an OPML document (as a string) into the feeds database.
mutation ImportFeeds($content: String!) {
importFeeds(content: $content)
}exportFeeds
Export all subscribed feeds as an OPML string.
mutation ExportFeeds {
exportFeeds
}