SuperAPI AI Directory

mo-discover

Office & productivity

View repository

Updated 10-16 06:49

About this skill

Prerequisites

CRITICAL — Read first 共享规则, which contains mocli initialization, authentication, output parsing, and security rules

mocli discover - Mowen discovery and activity

mocli disco activity [--recent]

This skill is used to view 当前认证用户 's Mowen activity, including being liked, being commented on (or replied to), being followed, being favorited, new notes published by followed people, paid notes/collections published by followed people, and other activities. This command only reads activity and does not perform write or delete operations.

Usage principles

  • When the user wants to view "my activity / who recently liked, commented on, or followed me / what followed people have posted," use this command.
  • When displaying, reply.events must be the primary sequence; for each event, look up supplementary information in the detail Maps such as eid through favors、comments、follow_notes、follow_fee_notes .
  • Do not directly iterate over the detail Maps to display activity, otherwise the original ordering will be lost.
  • Note IDs in activity details (such as target_id、note_id、joins) should all be completed with titles, summaries, and links from reply.notes .
  • User UIDs in activity details (such as favor_uid、cmt_uid、note_uid) should all be completed with nicknames from reply.users .

Optional parameters:

  • --recent string: time range. Supports:today、yesterday、1h-24h. If not specified, defaults to 1h。

Usage examples

  • View my latest Mowen activity mocli disco activity
  • View today's Mowen activity mocli disco activity --recent today
  • View yesterday's Mowen activity mocli disco activity --recent yesterday
  • View Mowen activity from the last 3 hours mocli disco activity --recent 3h
  • View Mowen activity from the last 24 hours mocli disco activity --recent 24h

Parameter selection rules

  • When the user says "today" or "today," use --recent today。
  • When the user says "yesterday" or "yesterday," use --recent yesterday。
  • When the user says "the last N hours" and N is within the range of 1-24 , use --recent Nh, for example --recent 6h。
  • When the number of hours given by the user exceeds 24h, or when filtering by days is requested but it is not today/yesterday , explain that the current command only supports today、yesterday、1h-24h, and ask the user whether 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": "一只小小鸟,订阅我的没几个人,所以你们都是特殊的。。"
      }
    },
    "comms": {
      "td2dQ5WXhKKD-h4PeN-Ks": {
        "comment_id": "td2dQ5WXhKKD-h4PeN-Ks",
        "uid": "0W1rAu9TJPU9ZFy_eOgqv",
        "created_at": 1777305900000,
        "host_uid": "vtv_PV1fEMBb-8_BPlmDu",
        "host_id": "rdIP8aEyBDz_c38q3h0TC",
        "content_html": "<p>写得太好了</p>"
      }
    }
  }
}

reply field description

Field Type Description Reference field
events array Activity event list (ordered). When displaying activity, this field should be iterated first, then data should be retrieved from the corresponding detail Map based on each event's eid . ActivityEvent - 动态事件
follows map[string]object Follow-type event details Map, the key is usually the event eid. Used to display who followed当前用户。 -
favors map[string]ActivityEventFavor Like-type event details Map, the key is usually the event eid. Used to display who liked which note. ActivityEventFavor - 点赞动态
collects map[string]object Favorite-type event details Map, the key is usually the event eid. Used to display who favorited which note. -
comments map[string]ActivityEventComment Comment-type event details Map, the key is usually the event eid. Used to display who commented on\replied to which note. ActivityEventComment - 评论动态
trades map[string]object Transaction/payment-related event details Map, the key is usually the event eid. Used to show who purchased the current user's note or column -
follow_notes map[string]ActivityEventFollowNote 当前用户Details of events where a followed person publishes a regular note (joins has no data) or updates a collection (joins has data) Map, the key is the event eid。 ActivityEventFollowNote - 关注笔记动态
follow_fee_notes map[string]ActivityEventFollowFeeNote 当前用户Details of events where a followed person publishes apaidnote (joins has no data) or updates apaidcollection (joins has data) Map, the key is the event eid。 ActivityEventFollowFeeNote - 关注付费笔记动态
notes map[string]NoteInfo Note information Map, the key is the note ID. When fields representing a note ID such as note_id、target_id、joins appear in activity details, this field can be used to fill in the note title, summary, link, and other information. NoteInfo - 笔记信息
users map[string]UserInfo User information Map, the key is the user UID. It can be used to fill in user information such as the event initiator and note author. UserInfo - 用户信息
comms map[string]CommentInfo Comment information Map, the key is the comment ID. For information such as the comment body in comment events (comments[eid]), use cmt_id to look it up in this field. CommentInfo - 评论信息

ActivityEvent - Activity event

Field Type Description
eid integer/string Event ID. Used to look up event details in detail Maps such as follows、favors、collects、comments、trades、follow_notes、follow_fee_notes . Note that during JSON parsing it may appear as a number or a string; when associating, it is safer to convert it to a string uniformly.
uid string The UID of the user related to the event. You can go to users[uid] to get information such as nickname and bio.
type integer Event type.1 Like event 2 Comment\reply event 3 Favorite event 4 Follow event 5 Transaction event 6 Indicates an event where a followed person publishes a note or updates a collection 7 Indicates an event where a followed person publishes apaidnote or updates apaidcollection
happened_at integer Event occurrence time. Usually a millisecond-level timestamp; it needs to be formatted into a readable time before display.

ActivityEventFavor - Like activity

Field Type Description
favor_uid string UID of the liking user. Go to users[favor_uid] to get information such as the liking user's nickname and bio.
target_uid string UID of the author of the liked note. Usually the currently authenticated user; you can also go to users[target_uid] to get author information.
target_id string ID of the liked note. Go to notes[target_id] to get information such as the note title, summary, and link.

Like display rules

  • Display text should preferably use:users[favor_uid].name liked notes[target_id].title。
  • If notes[target_id] does not exist, still display target_id; do not discard this event.
  • If users[favor_uid] does not exist, display the UID.

ActivityEventComment - Comment activity

Field Type Description
cmt_uid string UID of the comment initiator. Go to users[cmt_uid] to get information such as the commenting user's nickname and bio.
cmt_id string Comment ID. Look up information such as the comment body in comms[cmt_id] (such as content_html)。
cmt_p_uid string UID of the author of the comment being replied to. When empty, it indicates this is a direct comment on the note; when non-empty, it indicates a reply to someone's comment.
cmt_p_id string The ID of the comment being replied to. When empty, it indicates this is a direct comment on the note; when non-empty, it indicates a reply to a certain comment.
target_uid string The author UID of the note being commented on. Usually the currently authenticated user, but can also be obtained from users[target_uid] to get author information.
target_id string The ID of the note being commented on. Go to notes[target_id] to get information such as the note title, summary, and link.

Comment display rules

  • 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 .
  • Look up the comment body using cmt_id to comms , take comms[cmt_id].content_html for display; if comms[cmt_id] does not exist, do not fabricate the body, only display the comment ID cmt_id and the associated note information.
  • If notes[target_id] or related user information is missing, keep displaying the ID.

ActivityEventFollowNote - Follow note activity

Field Type Description
note_id string Main note ID. Go to notes[note_id] to get information such as the title, summary, and link.
note_uid string Main note author UID. Go to users[note_uid] to get author information.
joins array[string] List of associated note IDs, usually used in collection update scenarios, indicating the note IDs added to the main note. You can go to notes[join_note_id] one by one to get the titles.

ActivityEventFollowFeeNote - Follow paid note activity

The current fields are consistent with ActivityEventFollowNote , but the semantics are independent: this structure is only used for follow_fee_notes, indicating that a followed person published a paid note or updated a paid collection. If paid activity later adds fields such as price, order, or permissions, this structure should be extended rather than merged into ActivityEventFollowNote。

Field Type Description
note_id string Main paid note or paid collection ID. Go to notes[note_id] to get information such as the title, summary, and link.
note_uid string Main paid note author UID. Go to users[note_uid] to get author information.
joins array[string] List of associated note IDs, usually used in paid collection update scenarios, indicating the note IDs added to the main paid collection. You can go to notes[join_note_id] one by one to get the titles.

Activity parsing rules

  • Use the order of reply.events as the display order; do not directly iterate over the various detail Maps.
  • For each event, convert eid to a string, then look up the corresponding details in follows、favors、collects、comments、trades、follow_notes、follow_fee_notes in sequence.
  • If favors[eid]is matched, display as a certain user liked a certain note; use favor_uid to find the liking user, use target_id to find the note, and use target_uid to find the note author.
  • If comments[eid]is matched, display as a certain user commented on or replied to a certain note; use cmt_uid to find the commenting user, use target_id to find the note; when cmt_p_id is non-empty, then use cmt_p_uid to find the replied-to user; look up the comment body using cmt_id to comms .
  • If follow_notes[eid]is matched, display as当前用户a followed person published a new note or updated a collection; use note_uid to find the author, use note_id Find the note title, summary, and link; if joins is not empty, use joins the note ID in it to find the title, summary, and link of the sub-note.
  • If it matches follow_fee_notes[eid], display as当前用户A followed person published a paid note or updated a paid collection; use note_uid to find the author, use note_id to find the note title, summary, and link; if joins is not empty, use joins the note ID in it to find the title, summary, and link of the sub-note.
  • If it matches a Map such as favorites, follows, or transactions, prioritize using fields such as UID, note_id, target_id, and comment/content in the detail object, and use users、notes to fill in the nickname and note title.
  • If an event does not match any detail Map, do not discard it; display the event ID, user, type, and occurrence time, and explain that this event type is not yet recognized.
  • Timestamp happened_at may be at the microsecond level; when formatting, determine by length/value to avoid mistakenly treating it as a second-level timestamp.

Display suggestions

  • When there is little data, display item by item in reverse chronological order: time, activity type, user, note title, summary, link.
  • When there is a lot of data, you can first summarize the counts by type, then list the most recent key activities.
  • For note titles, prioritize using notes[note_id].title If the title itself does not contain 「」 or 『』, wrap it with 『』; for authors, prioritize using users[note_uid].name。
  • In activity display, whether it is users[uid].name or notes[note_id].title, when the client supports Markdown or HTML links and the corresponding home_url or url is not empty, the name or title must be wrapped with a link; the specific format and handling of missing fields follow the shared display rules.
  • For paid notes/collections, if flag.with_fee is true, you can explicitly mark it as "paid".
Display rules

** Reference ** 公共展示规则