mo-discover

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

前置约束

Preconditions

CRITICAL — 先阅读
共享规则
,其中包含
mocli
初始化、认证、输出解析以及安全规则
CRITICAL — Read
Shared Rules
first, which includes
mocli
initialization, authentication, output parsing, and security rules

mocli discover - 墨问发现与动态

mocli discover - Mowen Discover & Activity

mocli disco activity [--recent]

mocli disco activity [--recent]

本技能用于查看
当前认证用户
的墨问动态,包括被点赞、被评论(或被回复)、被关注、被收藏、关注的人发布新笔记、关注的人发布付费笔记/合集等活动。该命令只读取动态,不会产生写入或删除操作。
This skill is used to view the Mowen activities of the currently authenticated user, including activities like being liked, being commented (or replied to), being followed, being collected, followed users publishing new notes, followed users publishing paid notes/collections, etc. This command only reads activities and does not perform write or delete operations.

使用原则

Usage Principles

  • 用户要查看“我的动态/最近谁点赞评论关注我/关注的人发了什么”时,使用本命令。
    • 展示时必须以
      reply.events
      为主序列;每个事件用
      eid
      favors
      comments
      follow_notes
      follow_fee_notes
      等详情 Map 中查找补充信息。
    • 不要直接遍历详情 Map 展示动态,否则会丢失原始排序。
    • 动态详情里的笔记 ID(如
      target_id
      note_id
      joins
      )都应到
      reply.notes
      中补齐标题、摘要和链接。
    • 动态详情里的用户 UID(如
      favor_uid
      cmt_uid
      note_uid
      )都应到
      reply.users
      中补齐昵称。
可选参数:
  • --recent string
    :时间范围。支持:
    today
    yesterday
    1h-24h
    。不指定时,默认
    1h
  • Use this command when the user wants to view "my activities/who liked, commented, followed me recently/what did followed users post".
    • When displaying, must take
      reply.events
      as the main sequence; for each event, use
      eid
      to find supplementary information in detail Maps such as
      favors
      ,
      comments
      ,
      follow_notes
      ,
      follow_fee_notes
      .
    • Do not directly traverse the detail Maps to display activities, otherwise the original order will be lost.
    • Note IDs in activity details (such as
      target_id
      ,
      note_id
      ,
      joins
      ) should be supplemented with title, abstract and link from
      reply.notes
      .
    • User UIDs in activity details (such as
      favor_uid
      ,
      cmt_uid
      ,
      note_uid
      ) should be supplemented with nicknames from
      reply.users
      .
Optional Parameters:
  • --recent string
    : Time range. Supported values:
    today
    ,
    yesterday
    ,
    1h-24h
    . Defaults to
    1h
    if not specified.

使用示例

Usage Examples

  • 查看我的最新墨问动态
    mocli disco activity
    • 查看今天的墨问动态
      mocli disco activity --recent today
    • 查看昨天的墨问动态
      mocli disco activity --recent yesterday
    • 查看最近 3 小时的墨问动态
      mocli disco activity --recent 3h
    • 查看最近 24 小时的墨问动态
      mocli disco activity --recent 24h
  • View my latest Mowen activities:
    mocli disco activity
    • View today's Mowen activities:
      mocli disco activity --recent today
    • View yesterday's Mowen activities:
      mocli disco activity --recent yesterday
    • View Mowen activities in the last 3 hours:
      mocli disco activity --recent 3h
    • View Mowen activities in the last 24 hours:
      mocli disco activity --recent 24h

参数选择规则

Parameter Selection Rules

  • 用户说“今天”“今日”时,使用
    --recent today
    • 用户说“昨天”“昨日”时,使用
      --recent yesterday
    • 用户说“最近 N 小时”且
      N
      1-24
      范围内时,使用
      --recent Nh
      ,例如
      --recent 6h
    • 用户给出的小时数超过
      24h
      ,或要求按天数筛选但不是
      today/yesterday
      时,说明当前命令只支持
      today
      yesterday
      1h-24h
      ,并询问用户是否改用受支持范围。
  • When the user says "today", use
    --recent today
    .
    • When the user says "yesterday", use
      --recent yesterday
      .
    • When the user says "recent N hours" and
      N
      is within the range of 1-24, use
      --recent Nh
      , e.g.,
      --recent 6h
      .
    • If the user provides an hour count exceeding
      24h
      , or requests filtering by days other than
      today/yesterday
      , inform the user that the current command only supports
      today
      ,
      yesterday
      ,
      1h-24h
      , and ask if they want to switch to a supported range.

输出示例

Output Example

{
  "code": 0,
  "status": "OK",
  "reply": {
    "events": [
      {
        "eid": 2049020870318682148,
        "uid": "gMiYUcJU0GjBfKIMTmzeN",
        "type": 6,
        "sub_type": 1,
        "happened_at": 1777305989850
      }
    ],
    "follows": {},
    "favors": {
      "2048799112739434497": {
        "favor_uid": "2dsiQjSN3hrWhQu3W8nEx",
        "target_uid": "vtv_PV1fEMBb-8_BPlmDu",
        "target_id": "rdIP8aEyBDz_c38q3h0TC"
      }
    },
    "collects": {},
    "comments": {
      "2048795933738192897": {
        "cmt_uid": "0W1rAu9TJPU9ZFy_eOgqv",
        "cmt_id": "td2dQ5WXhKKD-h4PeN-Ks",
        "cmt_p_uid": "",
        "cmt_p_id": "",
        "target_uid": "vtv_PV1fEMBb-8_BPlmDu",
        "target_id": "rdIP8aEyBDz_c38q3h0TC"
      },
      "2048797711351394305": {
        "cmt_uid": "ua2x-_O32fcaYuURPi1Eo",
        "cmt_id": "eITFJYXSaElv_vIrVIeYs",
        "cmt_p_uid": "vtv_PV1fEMBb-8_BPlmDu",
        "cmt_p_id": "Eh8fTXFO-442JBUEmWCk4",
        "target_uid": "vtv_PV1fEMBb-8_BPlmDu",
        "target_id": "45JqKC3Y5PvSCj0htokSW"
      }
    },
    "trades": {},
    "follow_notes": {
      "2049020870318682148": {
        "note_id": "KS1x1z500bkEZa-PhsfQG",
        "note_uid": "0PoXMWF-V43tuXOOu-7Yw",
        "joins": []
      },
      "2048900500857122935": {
        "note_id": "iHQFI49mKnP8RclPopQSK",
        "note_uid": "_hA8gaYCCpwPkfpPhA4cA",
        "joins": [
          "GCwHPvJkl5Ox4lVB7fUWH"
        ]
      }
    },
    "follow_fee_notes": {
      "2049020870318682148": {
        "note_id": "KS1x1z500bkEZa-PhsfQG",
        "note_uid": "0PoXMWF-V43tuXOOu-7Yw",
        "joins": []
      },
      "2048900500857122935": {
        "note_id": "iHQFI49mKnP8RclPopQSK",
        "note_uid": "_hA8gaYCCpwPkfpPhA4cA",
        "joins": [
          "GCwHPvJkl5Ox4lVB7fUWH"
        ]
      }
    },
    "notes": {
      "3jv1AiAjXJ4aBC83LqdMC": {
        "note_id": "3jv1AiAjXJ4aBC83LqdMC",
        "uid": "Qiz5hxiY5wr5L76fyd8Kv",
        "title": "最近心情",
        "brief": "笔记摘要",
        "url": "https://note.mowen.cn/detail/3jv1AiAjXJ4aBC83LqdMC?from=mocli"
      },
      "ZVDGaChlin5voLpIp_9TM": {
        "note_id": "ZVDGaChlin5voLpIp_9TM",
        "uid": "Qiz5hxiY5wr5L76fyd8Kv",
        "title": "大家好呀,我是小白",
        "brief": "笔记摘要",
        "url": "https://note.mowen.cn/detail/ZVDGaChlin5voLpIp_9TM?from=mocli"
      }
    },
    "users": {
      "Qiz5hxiY5wr5L76fyd8Kv": {
        "uid": "xxxxxxxxxxxxxx",
        "name": "精卫鸟.",
        "intro": "一只小小鸟,订阅我的没几个人,所以你们都是特殊的。。"
      }
    }
  }
}
{
  "code": 0,
  "status": "OK",
  "reply": {
    "events": [
      {
        "eid": 2049020870318682148,
        "uid": "gMiYUcJU0GjBfKIMTmzeN",
        "type": 6,
        "sub_type": 1,
        "happened_at": 1777305989850
      }
    ],
    "follows": {},
    "favors": {
      "2048799112739434497": {
        "favor_uid": "2dsiQjSN3hrWhQu3W8nEx",
        "target_uid": "vtv_PV1fEMBb-8_BPlmDu",
        "target_id": "rdIP8aEyBDz_c38q3h0TC"
      }
    },
    "collects": {},
    "comments": {
      "2048795933738192897": {
        "cmt_uid": "0W1rAu9TJPU9ZFy_eOgqv",
        "cmt_id": "td2dQ5WXhKKD-h4PeN-Ks",
        "cmt_p_uid": "",
        "cmt_p_id": "",
        "target_uid": "vtv_PV1fEMBb-8_BPlmDu",
        "target_id": "rdIP8aEyBDz_c38q3h0TC"
      },
      "2048797711351394305": {
        "cmt_uid": "ua2x-_O32fcaYuURPi1Eo",
        "cmt_id": "eITFJYXSaElv_vIrVIeYs",
        "cmt_p_uid": "vtv_PV1fEMBb-8_BPlmDu",
        "cmt_p_id": "Eh8fTXFO-442JBUEmWCk4",
        "target_uid": "vtv_PV1fEMBb-8_BPlmDu",
        "target_id": "45JqKC3Y5PvSCj0htokSW"
      }
    },
    "trades": {},
    "follow_notes": {
      "2049020870318682148": {
        "note_id": "KS1x1z500bkEZa-PhsfQG",
        "note_uid": "0PoXMWF-V43tuXOOu-7Yw",
        "joins": []
      },
      "2048900500857122935": {
        "note_id": "iHQFI49mKnP8RclPopQSK",
        "note_uid": "_hA8gaYCCpwPkfpPhA4cA",
        "joins": [
          "GCwHPvJkl5Ox4lVB7fUWH"
        ]
      }
    },
    "follow_fee_notes": {
      "2049020870318682148": {
        "note_id": "KS1x1z500bkEZa-PhsfQG",
        "note_uid": "0PoXMWF-V43tuXOOu-7Yw",
        "joins": []
      },
      "2048900500857122935": {
        "note_id": "iHQFI49mKnP8RclPopQSK",
        "note_uid": "_hA8gaYCCpwPkfpPhA4cA",
        "joins": [
          "GCwHPvJkl5Ox4lVB7fUWH"
        ]
      }
    },
    "notes": {
      "3jv1AiAjXJ4aBC83LqdMC": {
        "note_id": "3jv1AiAjXJ4aBC83LqdMC",
        "uid": "Qiz5hxiY5wr5L76fyd8Kv",
        "title": "最近心情",
        "brief": "笔记摘要",
        "url": "https://note.mowen.cn/detail/3jv1AiAjXJ4aBC83LqdMC?from=mocli"
      },
      "ZVDGaChlin5voLpIp_9TM": {
        "note_id": "ZVDGaChlin5voLpIp_9TM",
        "uid": "Qiz5hxiY5wr5L76fyd8Kv",
        "title": "大家好呀,我是小白",
        "brief": "笔记摘要",
        "url": "https://note.mowen.cn/detail/ZVDGaChlin5voLpIp_9TM?from=mocli"
      }
    },
    "users": {
      "Qiz5hxiY5wr5L76fyd8Kv": {
        "uid": "xxxxxxxxxxxxxx",
        "name": "精卫鸟.",
        "intro": "一只小小鸟,订阅我的没几个人,所以你们都是特殊的。。"
      }
    }
  }
}

reply 字段说明

Reply Field Description

字段类型说明引用字段
events
array动态事件列表(有序)。展示动态时应优先遍历该字段,再根据每条事件的
eid
到对应详情 Map 中取数据。
ActivityEvent - 动态事件
follows
map[string]object关注类事件详情
Map
,键通常为事件
eid
。用于展示谁关注了
当前用户
-
favors
map[string]ActivityEventFavor点赞类事件详情
Map
,键通常为事件
eid
。用于展示谁点赞了哪篇笔记。
ActivityEventFavor - 点赞动态
collects
map[string]object收藏类事件详情
Map
,键通常为事件
eid
。用于展示谁收藏了哪篇笔记。
-
comments
map[string]ActivityEventComment评论类事件详情
Map
,键通常为事件
eid
。用于展示谁评论\回复了哪篇笔记。
ActivityEventComment - 评论动态
trades
map[string]object交易/付费相关事件详情
Map
,键通常为事件
eid
。用于展示谁购买了当前用户笔记或专栏
-
follow_notes
map[string]ActivityEventFollowNote
当前用户
关注的人发布普通笔记(joins 无数据)、更新合集(joins 有数据)事件详情
Map
, 键为事件
eid
ActivityEventFollowNote - 关注笔记动态
follow_fee_notes
map[string]ActivityEventFollowFeeNote
当前用户
关注的人发布付费笔记(joins 无数据)、更新付费合集(joins 有数据)事件详情
Map
,键为事件
eid
ActivityEventFollowFeeNote - 关注付费笔记动态
notes
map[string]NoteInfo笔记信息
Map
,键为笔记 ID。动态详情中出现
note_id
target_id
joins
等代表笔记 id 的字段时,可用该字段补齐笔记标题、摘要、链接等信息。
NoteInfo - 笔记信息
users
map[string]UserInfo用户信息
Map
,键为用户 UID。可用于补齐事件发起人、笔记作者等用户信息。
UserInfo - 用户信息
<a id="activity-event"></a>
FieldTypeDescriptionReference Field
events
arrayOrdered list of activity events. When displaying activities, you should traverse this field first, then retrieve data from the corresponding detail Map based on each event's
eid
.
ActivityEvent - Activity Event
follows
map[string]objectDetail Map for follow events, usually keyed by event
eid
. Used to display who followed the current user.
-
favors
map[string]ActivityEventFavorDetail Map for like events, usually keyed by event
eid
. Used to display who liked which note.
ActivityEventFavor - Like Activity
collects
map[string]objectDetail Map for collect events, usually keyed by event
eid
. Used to display who collected which note.
-
comments
map[string]ActivityEventCommentDetail Map for comment events, usually keyed by event
eid
. Used to display who commented/replied to which note.
ActivityEventComment - Comment Activity
trades
map[string]objectDetail Map for transaction/paid-related events, usually keyed by event
eid
. Used to display who purchased the current user's notes or columns.
-
follow_notes
map[string]ActivityEventFollowNoteDetail Map for events where followed users of the current user published regular notes (empty
joins
) or updated collections (non-empty
joins
), keyed by event
eid
.
ActivityEventFollowNote - Followed Note Activity
follow_fee_notes
map[string]ActivityEventFollowFeeNoteDetail Map for events where followed users of the current user published paid notes (empty
joins
) or updated paid collections (non-empty
joins
), keyed by event
eid
.
ActivityEventFollowFeeNote - Followed Paid Note Activity
notes
map[string]NoteInfoMap of note information, keyed by note ID. When fields representing note IDs such as
note_id
,
target_id
,
joins
appear in activity details, use this field to supplement note title, abstract, link, etc.
NoteInfo - Note Information
users
map[string]UserInfoMap of user information, keyed by user UID. Used to supplement user information such as event initiators and note authors.
UserInfo - User Information
<a id="activity-event"></a>

ActivityEvent - 动态事件

ActivityEvent - Activity Event

字段类型说明
eid
integer/string事件 ID。用于到
follows
favors
collects
comments
trades
follow_notes
follow_fee_notes
等详情 Map 中查找事件详情。注意 JSON 解析时可能以数字或字符串出现,做关联时统一转成字符串更稳妥。
uid
string与事件相关的用户 UID。可到
users[uid]
获取昵称、简介等信息。
type
integer事件类型。
1
点赞事件
2
评论\回复事件
3
收藏事件
4
关注事件
5
交易事件
6
表示关注的人发布笔记、更新合集事件
7
表示关注的人发布付费笔记、更新付费合集事件
happened_at
integer事件发生时间。通常为毫秒级时间戳,展示前需格式化为可读时间。
<a id="activity-event-favor"></a>
FieldTypeDescription
eid
integer/stringEvent ID. Used to look up event details in detail Maps like
follows
,
favors
,
collects
,
comments
,
trades
,
follow_notes
,
follow_fee_notes
. Note that it may appear as a number or string during JSON parsing; it's safer to convert it to a string uniformly when associating.
uid
stringUser UID related to the event. Retrieve nickname, intro, etc. from
users[uid]
.
type
integerEvent type.
1
= Like event,
2
= Comment/reply event,
3
= Collect event,
4
= Follow event,
5
= Transaction event,
6
= Followed user published note or updated collection,
7
= Followed user published paid note or updated paid collection
happened_at
integerEvent occurrence time. Usually a millisecond-level timestamp; need to format it into readable time before displaying.
<a id="activity-event-favor"></a>

ActivityEventFavor - 点赞动态

ActivityEventFavor - Like Activity

字段类型说明
favor_uid
string点赞用户 UID。到
users[favor_uid]
获取点赞用户昵称、简介等信息。
target_uid
string被点赞笔记的作者 UID。通常是当前认证用户,也可到
users[target_uid]
获取作者信息。
target_id
string被点赞笔记 ID。到
notes[target_id]
获取笔记标题、摘要、链接等信息。
FieldTypeDescription
favor_uid
stringUID of the user who liked. Retrieve nickname, intro, etc. of the liking user from
users[favor_uid]
.
target_uid
stringUID of the author of the liked note. Usually the currently authenticated user; you can also retrieve author information from
users[target_uid]
.
target_id
stringID of the liked note. Retrieve note title, abstract, link, etc. from
notes[target_id]
.

点赞展示规则

Like Display Rules

  • 展示文案优先使用:
    users[favor_uid].name
    点赞了
    notes[target_id].title
    • 如果
      notes[target_id]
      不存在,仍展示
      target_id
      ,不要丢弃该事件。
    • 如果
      users[favor_uid]
      不存在,展示 UID。
<a id="activity-event-comment"></a>
  • Priority display copy:
    users[favor_uid].name
    liked
    notes[target_id].title
    .
    • If
      notes[target_id]
      does not exist, still display
      target_id
      and do not discard the event.
    • If
      users[favor_uid]
      does not exist, display the UID.
<a id="activity-event-comment"></a>

ActivityEventComment - 评论动态

ActivityEventComment - Comment Activity

字段类型说明
cmt_uid
string评论发起者 UID。到
users[cmt_uid]
获取评论用户昵称、简介等信息。
cmt_id
string评论 ID。当前动态列表通常只给出评论 ID,不一定包含评论正文。
cmt_p_uid
string被回复评论的作者 UID。为空时表示这是对笔记的直接评论;非空时表示回复某人的评论。
cmt_p_id
string被回复评论 ID。为空时表示这是对笔记的直接评论;非空时表示回复某条评论。
target_uid
string被评论笔记的作者 UID。通常是当前认证用户,也可到
users[target_uid]
获取作者信息。
target_id
string被评论笔记 ID。到
notes[target_id]
获取笔记标题、摘要、链接等信息。
FieldTypeDescription
cmt_uid
stringUID of the comment initiator. Retrieve nickname, intro, etc. of the commenting user from
users[cmt_uid]
.
cmt_id
stringComment ID. The current activity list usually only provides the comment ID, not necessarily the comment content.
cmt_p_uid
stringUID of the author of the replied comment. Empty means it's a direct comment on the note; non-empty means it's a reply to someone's comment.
cmt_p_id
stringID of the replied comment. Empty means it's a direct comment on the note; non-empty means it's a reply to a specific comment.
target_uid
stringUID of the author of the commented note. Usually the currently authenticated user; you can also retrieve author information from
users[target_uid]
.
target_id
stringID of the commented note. Retrieve note title, abstract, link, etc. from
notes[target_id]
.

评论展示规则

Comment Display Rules

  • cmt_p_id
    为空时,展示为:
    users[cmt_uid].name
    评论了
    notes[target_id].title
    • cmt_p_id
      非空时,展示为:
      users[cmt_uid].name
      回复了
      users[cmt_p_uid].name
      notes[target_id].title
      下的评论。
    • 如果评论正文不在
      comments[eid]
      中,不要编造正文;只展示评论 ID
      cmt_id
      和关联笔记信息。
    • 如果
      notes[target_id]
      或相关用户信息缺失,保留 ID 展示。
<a id="activity-event-follow-note"></a>
  • When
    cmt_p_id
    is empty, display as:
    users[cmt_uid].name
    commented on
    notes[target_id].title
    .
    • When
      cmt_p_id
      is non-empty, display as:
      users[cmt_uid].name
      replied to
      users[cmt_p_uid].name
      's comment under
      notes[target_id].title
      .
    • If the comment content is not in
      comments[eid]
      , do not fabricate content; only display the comment ID
      cmt_id
      and associated note information.
    • If
      notes[target_id]
      or related user information is missing, retain the ID for display.
<a id="activity-event-follow-note"></a>

ActivityEventFollowNote - 关注笔记动态

ActivityEventFollowNote - Followed Note Activity

字段类型说明
note_id
string主笔记 ID。到
notes[note_id]
获取标题、摘要、链接等信息。
note_uid
string主笔记作者 UID。到
users[note_uid]
获取作者信息。
joins
array[string]关联笔记 ID 列表,通常用于合集更新的场景,表示被加入到主笔记中的笔记 ID。可逐个到
notes[join_note_id]
获取标题。
<a id="activity-event-follow-fee-note"></a>
FieldTypeDescription
note_id
stringMain note ID. Retrieve title, abstract, link, etc. from
notes[note_id]
.
note_uid
stringUID of the author of the main note. Retrieve author information from
users[note_uid]
.
joins
array[string]List of associated note IDs, usually used in collection update scenarios, representing the note IDs added to the main note. Retrieve the title of each sub-note from
notes[join_note_id]
.
<a id="activity-event-follow-fee-note"></a>

ActivityEventFollowFeeNote - 关注付费笔记动态

ActivityEventFollowFeeNote - Followed Paid Note Activity

当前字段与
ActivityEventFollowNote
一致,但语义独立:该结构只用于
follow_fee_notes
,表示关注的人发布付费笔记或更新付费合集。后续如果付费动态增加价格、订单、权限等字段,应扩展本结构,而不是合并到
ActivityEventFollowNote
字段类型说明
note_id
string主付费笔记或付费合集 ID。到
notes[note_id]
获取标题、摘要、链接等信息。
note_uid
string主付费笔记作者 UID。到
users[note_uid]
获取作者信息。
joins
array[string]关联笔记 ID 列表,通常用于付费合集更新的场景,表示被加入到主付费合集中的笔记 ID。可逐个到
notes[join_note_id]
获取标题。
Current fields are consistent with
ActivityEventFollowNote
, but semantically independent: this structure is only used for
follow_fee_notes
, indicating that followed users published paid notes or updated paid collections. If fields such as price, order, permissions are added to paid activities in the future, this structure should be extended instead of merging into
ActivityEventFollowNote
.
FieldTypeDescription
note_id
stringID of the main paid note or paid collection. Retrieve title, abstract, link, etc. from
notes[note_id]
.
note_uid
stringUID of the author of the main paid note. Retrieve author information from
users[note_uid]
.
joins
array[string]List of associated note IDs, usually used in paid collection update scenarios, representing the note IDs added to the main paid collection. Retrieve the title of each sub-note from
notes[join_note_id]
.

动态解析规则

Activity Parsing Rules

  • reply.events
    的顺序作为展示顺序,不要直接遍历各类详情 Map。
    • 对每个事件,将
      eid
      转为字符串后,依次在
      follows
      favors
      collects
      comments
      trades
      follow_notes
      follow_fee_notes
      中查找对应详情。
    • 若命中
      favors[eid]
      ,展示为某用户点赞了某篇笔记;使用
      favor_uid
      找点赞用户,使用
      target_id
      找笔记,使用
      target_uid
      找笔记作者。
    • 若命中
      comments[eid]
      ,展示为某用户评论或回复了某篇笔记;使用
      cmt_uid
      找评论用户,使用
      target_id
      找笔记;当
      cmt_p_id
      非空时,再使用
      cmt_p_uid
      找被回复用户。
    • 若命中
      follow_notes[eid]
      ,展示为
      当前用户
      关注的人发布了新笔记或者更新了合集;使用
      note_uid
      找作者,使用
      note_id
      找笔记标题、摘要和链接;如果
      joins
      不为空,使用
      joins
      中的笔记 ID 找子笔记的标题、摘要和链接。
    • 若命中
      follow_fee_notes[eid]
      ,展示为
      当前用户
      关注的人发布了付费笔记或更新付费合集;使用
      note_uid
      找作者,使用
      note_id
      找笔记标题、摘要和链接;如果
      joins
      不为空,使用
      joins
      中的笔记 ID 找子笔记的标题、摘要和链接。
    • 若命中收藏、关注、交易等 Map,应优先使用详情对象里的 UID、note_id、target_id、comment/content 等字段,并通过
      users
      notes
      补齐昵称和笔记标题。
    • 若某个事件没有命中任何详情 Map,不要丢弃;展示事件 ID、用户、类型、发生时间,并说明该事件类型暂未识别。
    • 时间戳
      happened_at
      可能是微秒级;格式化时需要按长度/数值判断,避免误当秒级时间戳。
  • Use the order of
    reply.events
    as the display order; do not directly traverse various detail Maps.
    • For each event, convert
      eid
      to a string, then search for corresponding details in
      follows
      ,
      favors
      ,
      collects
      ,
      comments
      ,
      trades
      ,
      follow_notes
      ,
      follow_fee_notes
      in sequence.
    • If
      favors[eid]
      is hit, display as a certain user liked a certain note; use
      favor_uid
      to find the liking user,
      target_id
      to find the note, and
      target_uid
      to find the note author.
    • If
      comments[eid]
      is hit, display as a certain user commented or replied to a certain note; use
      cmt_uid
      to find the commenting user,
      target_id
      to find the note; when
      cmt_p_id
      is non-empty, use
      cmt_p_uid
      to find the replied user.
    • If
      follow_notes[eid]
      is hit, display as the current user's followed user published a new note or updated a collection; use
      note_uid
      to find the author,
      note_id
      to find the note title, abstract and link; if
      joins
      is not empty, use the note IDs in
      joins
      to find the title, abstract and link of sub-notes.
    • If
      follow_fee_notes[eid]
      is hit, display as the current user's followed user published a paid note or updated a paid collection; use
      note_uid
      to find the author,
      note_id
      to find the note title, abstract and link; if
      joins
      is not empty, use the note IDs in
      joins
      to find the title, abstract and link of sub-notes.
    • If collect, follow, transaction, etc. Maps are hit, prioritize using fields like UID, note_id, target_id, comment/content in the detail object, and supplement nicknames and note titles through
      users
      and
      notes
      .
    • If an event does not hit any detail Map, do not discard it; display the event ID, user, type, occurrence time, and indicate that this event type is not yet recognized.
    • The timestamp
      happened_at
      may be microsecond-level; when formatting, you need to judge by length/value to avoid mistaking it for a second-level timestamp.

展示建议

Display Suggestions

  • 数据较少时,按时间倒序逐条展示:时间、动态类型、用户、笔记标题、摘要、链接。
    • 数据较多时,可先按类型汇总数量,再列出最近若干条重点动态。
    • 笔记标题优先使用
      notes[note_id].title
      如果标题本身不包含「」或『』,就用『』包裹,作者优先使用
      users[note_uid].name
    • 对付费笔记/合集,如果
      flag.with_fee
      为 true,可明确标注“付费”。
  • When there is little data, display each item in reverse chronological order: time, activity type, user, note title, abstract, link.
    • When there is a lot of data, you can first summarize the quantity by type, then list the recent key activities.
    • Prioritize using
      notes[note_id].title
      for the note title; if the title itself does not contain「」or『』, wrap it with『』; prioritize using
      users[note_uid].name
      for the author.
    • For paid notes/collections, if
      flag.with_fee
      is true, clearly mark "Paid".

展示规则

Display Rules

** 参考 **
公共展示规则
** Reference **
Common Display Rules