پروتکل Feedio RSS (JSON)

پروتکل اشتراک مبتنی بر JSON برای فیدهای ویدیویی.

1. Overview

Feedio RSS is a JSON-based subscription protocol for video feeds. Unlike XML RSS/Atom, it natively includes items, creator metadata, and app-oriented fields (cover, duration, platform identifiers, deep links).

2. Transport & Versioning

SHOULD be served over HTTPS. Recommended Content-Type: application/feedio+json; charset=utf-8.

Version field: feedio_version (e.g. "1.0"). Backward compatibility: new fields must not break existing semantics; clients MUST ignore unknown fields.

3. Top-Level Structure

FieldTypeRequiredDescription
feedio_versionstringYesProtocol version
typestringYesMust be "feed"
generated_atstring (ISO8601)YesGeneration timestamp
sourceobjectYesSource metadata
itemsarray<Item>YesItems list (paged)
pagingobjectNoPaging info
extensionsobjectNoVendor extensions

4. Source Object

FieldTypeRequiredDescription
idstringYesStable unique source id
titlestringYesSource title
feed_urlstring (url)YesFeed URL (this endpoint)
site_urlstring (url)NoSite/channel URL
icon_urlstring (url)NoSource icon (e.g. 64×64 or 128×128)
avatar_urlstring (url)NoAvatar URL
descriptionstringNoSource description
languagestringNoBCP-47 language tag
categoriesarray<string>NoTopic categories
update_hintobjectNoUpdate hints (frequency/cache)

5. Item Object (Video)

FieldTypeRequiredDescription
idstringYesStable unique item id. Prefer guid or link hash.
titlestringYesTitle
urlstring (url)YesPlayback or landing page URL
published_atstring (ISO8601)YesPublish time
source_idstringYesOwning source id
summarystringNoShort summary/description
coverobjectNoCover metadata
mediaobjectNoMedia info (duration/type/etc.)
creatorobject<CreatorRef>NoCreator (publisher). If missing, follow is unavailable.
deeplinkobjectNoDeep link info (optional)
actions_hintobjectNoAction capability hints

5.1 cover object

FieldTypeRequiredDescription
urlstring (url)YesCover image URL
widthnumberNoWidth in px
heightnumberNoHeight in px
blurhashstringNoBlurhash placeholder (optional)

5.2 media object

FieldTypeRequiredDescription
urlstring (url)NoDirect video stream URL (e.g. .mp4) for in-app playback
typestringNoe.g. "video"
duration_msnumberNoDuration in ms
mimestringNoMIME type
has_audiobooleanNoHas audio
formatsarray<object>NoOptional format list

6. Creator Object

FieldTypeRequiredDescription
idstringYesStable creator id
namestringYesDisplay name
profile_urlstring (url)NoProfile URL
avatar_urlstring (url)NoAvatar URL
platformstringNoPlatform id (e.g. youtube)

Item.creator MAY be a minimal reference (id+name); other fields are optional.

7. Actions Hint

Actions Hint indicates whether Like/Save/Later/Follow are permitted. Follow is usually available only when creator exists. Clients may ignore this and assume Like/Save/Later are allowed by default.

Example object:

{
  "can_like": true,
  "can_save": true,
  "can_later": true,
  "can_follow_creator": true
}

Field definitions:

  • can_like (boolean, optional): Whether Like is allowed
  • can_save (boolean, optional): Whether Save is allowed
  • can_later (boolean, optional): Whether Later is allowed
  • can_follow_creator (boolean, optional): Whether Follow is allowed (usually creator exists)

8. Paging

FieldTypeRequiredDescription
cursorstringNoCurrent cursor
next_cursorstringNoNext cursor
has_morebooleanNoHas more

9. Dedup & Stability Rules

  • Item.id MUST be stable and unique. Prefer original guid; otherwise use a normalized URL hash.
  • published_at SHOULD be ISO8601 (UTC or with offset).
  • Clients MUST ignore unknown fields; servers MUST maintain backward compatibility.

10. Import & Share Formats

This section is not part of the Feed document itself but is used for unified QR scan and Scheme import.

Use CaseFormatExample
Single feed URLPlain URLhttps://example.com/feedio.json
Scheme import (single)feedio://import?url=<encoded>feedio://import?url=https%3A%2F%2Fexample.com%2Ffeedio.json
Scheme import (multiple)feedio://import?urls=<comma>feedio://import?urls=https%3A%2F%2Fa.com%2Ff.json,https%3A%2F%2Fb.com%2Ff.json

11. Example

{
  "feedio_version": "1.0",
  "type": "feed",
  "generated_at": "2026-02-21T12:00:00Z",
  "source": {
    "id": "source_tech_daily",
    "title": "Tech Daily",
    "feed_url": "https://example.com/feedio/tech-daily.json",
    "icon_url": "https://example.com/icons/tech-daily.png",
    "description": "Daily tech news and deep dives."
  },
  "items": [
    {
      "id": "item_20260221_001",
      "title": "AI Chips Explained in 8 Minutes",
      "url": "https://example.com/watch/ai-chips",
      "published_at": "2026-02-21T08:30:00Z",
      "source_id": "source_tech_daily",
      "cover": {
        "url": "https://example.com/covers/ai-chips.jpg"
      },
      "media": {
        "url": "https://example.com/videos/ai-chips.mp4",
        "type": "video",
        "duration_ms": 480000
      },
      "creator": {
        "id": "creator_jane_doe",
        "name": "Jane Doe"
      },
      "actions_hint": {
        "can_like": true,
        "can_save": true,
        "can_later": true,
        "can_follow_creator": true
      }
    }
  ],
  "paging": {
    "next_cursor": "c1",
    "has_more": true
  }
}

12. Client Requirements

  • If Item.creator is missing, Follow Creator must be unavailable (hidden/disabled).
  • Like/Save/Later are client-side actions (optionally synced) and do not require feed write-back.
  • Save and Later must be independent; an item can be in both.