{
  "schemaVersion": "1.0",
  "item": {
    "slug": "x-timeline-digest",
    "name": "X Timeline Digest",
    "source": "tencent",
    "type": "skill",
    "category": "开发工具",
    "sourceUrl": "https://clawhub.ai/seandong/x-timeline-digest",
    "canonicalUrl": "https://clawhub.ai/seandong/x-timeline-digest",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/x-timeline-digest",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=x-timeline-digest",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "PROMPT.md",
      "SKILL.md",
      "digest.js",
      "last_digest.txt",
      "latest_digest.json"
    ],
    "primaryDoc": "SKILL.md",
    "quickSetup": [
      "Download the package from Yavira.",
      "Extract the archive and review SKILL.md first.",
      "Import or place the package into your OpenClaw setup."
    ],
    "agentAssist": {
      "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
      "steps": [
        "Download the package from Yavira.",
        "Extract it into a folder your agent can access.",
        "Paste one of the prompts below and point your agent at the extracted folder."
      ],
      "prompts": [
        {
          "label": "New install",
          "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
        },
        {
          "label": "Upgrade existing",
          "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
        }
      ]
    },
    "sourceHealth": {
      "source": "tencent",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-05-07T17:22:31.273Z",
      "expiresAt": "2026-05-14T17:22:31.273Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=afrexai-annual-report",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=afrexai-annual-report",
        "contentDisposition": "attachment; filename=\"afrexai-annual-report-1.0.0.zip\"",
        "redirectLocation": null,
        "bodySnippet": null
      },
      "scope": "source",
      "summary": "Source download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this source.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/x-timeline-digest"
    },
    "validation": {
      "installChecklist": [
        "Use the Yavira download entry.",
        "Review SKILL.md after the package is downloaded.",
        "Confirm the extracted package contains the expected setup assets."
      ],
      "postInstallChecks": [
        "Confirm the extracted package includes the expected docs or setup files.",
        "Validate the skill or prompts are available in your target agent workspace.",
        "Capture any manual follow-up steps the agent could not complete."
      ]
    },
    "downloadPageUrl": "https://openagent3.xyz/downloads/x-timeline-digest",
    "agentPageUrl": "https://openagent3.xyz/skills/x-timeline-digest/agent",
    "manifestUrl": "https://openagent3.xyz/skills/x-timeline-digest/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/x-timeline-digest/agent.md"
  },
  "agentAssist": {
    "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
    "steps": [
      "Download the package from Yavira.",
      "Extract it into a folder your agent can access.",
      "Paste one of the prompts below and point your agent at the extracted folder."
    ],
    "prompts": [
      {
        "label": "New install",
        "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
      },
      {
        "label": "Upgrade existing",
        "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
      }
    ]
  },
  "documentation": {
    "source": "clawhub",
    "primaryDoc": "SKILL.md",
    "sections": [
      {
        "title": "Overview",
        "body": "This skill uses bird to read X/Twitter timelines and build a high-signal digest.\nSources:\n\nFor You timeline\nFollowing timeline\nWhat it does:\n\nFetch recent tweets\nFilter incrementally (avoid reprocessing)\nDeduplicate (ID + near-duplicate text)\nRank and trim\nGenerate a Chinese digest\nOutput a structured payload\n\nDelivery (Telegram, email, etc.) is NOT handled here.\nUpstream OpenClaw workflows decide how to notify users."
      },
      {
        "title": "Configuration",
        "body": "All config is read from: skills.entries[\"x-timeline-digest\"].config"
      },
      {
        "title": "Config fields",
        "body": "NameTypeDefaultDescriptionintervalHoursnumber6Interval window in hoursfetchLimitForYounumber100Tweets fetched from For YoufetchLimitFollowingnumber60Tweets fetched from FollowingmaxItemsPerDigestnumber25Max tweets in one digestsimilarityThresholdnumber0.9Near-duplicate similarity thresholdstatePathstring~/.openclaw/state/x-timeline-digest.jsonState file path"
      },
      {
        "title": "Dependencies",
        "body": "bird must be installed and available in PATH\nbird must already be authenticated (cookie login)\nRead-only usage"
      },
      {
        "title": "1. Basic (Raw JSON)",
        "body": "Run the digest generator to get a clean, deduplicated JSON payload:\n\nnode skills/x-timeline-digest/digest.js"
      },
      {
        "title": "2. Intelligent Digest (Recommended)",
        "body": "To generate the \"Smart Brief\" (Categorized, Summarized, Denoised):\n\nRun the script: node skills/x-timeline-digest/digest.js > digest.json\nRead the prompt template: read skills/x-timeline-digest/PROMPT.md\nSend the prompt to your LLM, injecting the content of digest.json where {{JSON_DATA}} is.\n\nNote: The script automatically applies heuristic filtering (removes \"gm\", ads, short spam) before outputting JSON."
      },
      {
        "title": "State Management",
        "body": "State is persisted to statePath."
      },
      {
        "title": "State structure",
        "body": "{\n\"lastRunAt\": \"2026-02-01T00:00:00+08:00\",\n\"sentTweetIds\": {\n\"123456789\": \"2026-02-01T00:00:00+08:00\"\n}\n}"
      },
      {
        "title": "Rules",
        "body": "Tweets already in sentTweetIds must not be included again\nAfter a successful run:\nUpdate lastRunAt\nAdd pushed tweet IDs to sentTweetIds\nKeep IDs for at least 30 days"
      },
      {
        "title": "Processing Pipeline",
        "body": "Fetch from For You and Following\nIncremental filter using lastRunAt\nHard deduplication by tweet id\nNear-duplicate merge using text similarity\nRank and trim to maxItemsPerDigest\nGenerate a Categorized Chinese Digest (via PROMPT.md + LLM)\n\nCategories: 🤖 AI & Tech, 💰 Crypto & Markets, 💡 Insights, 🗞️ Other\nLanguage: Simplified Chinese\nFormat: Author: Summary\nDenoising: Remove ads and low-value content"
      },
      {
        "title": "Output",
        "body": "The skill returns one JSON object:\n{\n\"window\": {\n\"start\": \"2026-02-01T00:00:00+08:00\",\n\"end\": \"2026-02-01T06:00:00+08:00\",\n\"intervalHours\": 6\n},\n\"counts\": {\n\"forYouFetched\": 100,\n\"followingFetched\": 60,\n\"afterIncremental\": 34,\n\"afterDedup\": 26,\n\"final\": 20\n},\n\"digestText\": \"中文摘要内容\",\n\"items\": [\n{\n\"id\": \"123456\",\n\"author\": \"@handle\",\n\"createdAt\": \"2026-02-01T02:15:00+08:00\",\n\"text\": \"tweet text\",\n\"url\": \"https://x.com/handle/status/123456\",\n\"sources\": [\"following\"]\n}\n]\n}"
      }
    ],
    "body": "x-timeline-digest\nOverview\n\nThis skill uses bird to read X/Twitter timelines and build a high-signal digest. Sources:\n\nFor You timeline\nFollowing timeline What it does:\nFetch recent tweets\nFilter incrementally (avoid reprocessing)\nDeduplicate (ID + near-duplicate text)\nRank and trim\nGenerate a Chinese digest\nOutput a structured payload\n\nDelivery (Telegram, email, etc.) is NOT handled here. Upstream OpenClaw workflows decide how to notify users.\n\nConfiguration\n\nAll config is read from: skills.entries[\"x-timeline-digest\"].config\n\nConfig fields\nName\tType\tDefault\tDescription\nintervalHours\tnumber\t6\tInterval window in hours\nfetchLimitForYou\tnumber\t100\tTweets fetched from For You\nfetchLimitFollowing\tnumber\t60\tTweets fetched from Following\nmaxItemsPerDigest\tnumber\t25\tMax tweets in one digest\nsimilarityThreshold\tnumber\t0.9\tNear-duplicate similarity threshold\nstatePath\tstring\t~/.openclaw/state/x-timeline-digest.json\tState file path\nDependencies\nbird must be installed and available in PATH\nbird must already be authenticated (cookie login)\nRead-only usage\nUsage\n1. Basic (Raw JSON)\n\nRun the digest generator to get a clean, deduplicated JSON payload:\n\nnode skills/x-timeline-digest/digest.js\n\n2. Intelligent Digest (Recommended)\n\nTo generate the \"Smart Brief\" (Categorized, Summarized, Denoised):\n\nRun the script: node skills/x-timeline-digest/digest.js > digest.json\nRead the prompt template: read skills/x-timeline-digest/PROMPT.md\nSend the prompt to your LLM, injecting the content of digest.json where {{JSON_DATA}} is.\n\nNote: The script automatically applies heuristic filtering (removes \"gm\", ads, short spam) before outputting JSON.\n\nBird Commands Used\nFor You timeline: bird home -n <N> --json Following timeline: bird home --following -n <N> --json\nState Management\n\nState is persisted to statePath.\n\nState structure\n\n{ \"lastRunAt\": \"2026-02-01T00:00:00+08:00\", \"sentTweetIds\": { \"123456789\": \"2026-02-01T00:00:00+08:00\" } }\n\nRules\nTweets already in sentTweetIds must not be included again\nAfter a successful run:\nUpdate lastRunAt\nAdd pushed tweet IDs to sentTweetIds\nKeep IDs for at least 30 days\nProcessing Pipeline\nFetch from For You and Following\nIncremental filter using lastRunAt\nHard deduplication by tweet id\nNear-duplicate merge using text similarity\nRank and trim to maxItemsPerDigest\nGenerate a Categorized Chinese Digest (via PROMPT.md + LLM)\nCategories: 🤖 AI & Tech, 💰 Crypto & Markets, 💡 Insights, 🗞️ Other\nLanguage: Simplified Chinese\nFormat: Author: Summary\nDenoising: Remove ads and low-value content\nOutput\n\nThe skill returns one JSON object: { \"window\": { \"start\": \"2026-02-01T00:00:00+08:00\", \"end\": \"2026-02-01T06:00:00+08:00\", \"intervalHours\": 6 }, \"counts\": { \"forYouFetched\": 100, \"followingFetched\": 60, \"afterIncremental\": 34, \"afterDedup\": 26, \"final\": 20 }, \"digestText\": \"中文摘要内容\", \"items\": [ { \"id\": \"123456\", \"author\": \"@handle\", \"createdAt\": \"2026-02-01T02:15:00+08:00\", \"text\": \"tweet text\", \"url\": \"https://x.com/handle/status/123456\", \"sources\": [\"following\"] } ] }"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/seandong/x-timeline-digest",
    "publisherUrl": "https://clawhub.ai/seandong/x-timeline-digest",
    "owner": "seandong",
    "version": "1.0.2",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/x-timeline-digest",
    "downloadUrl": "https://openagent3.xyz/downloads/x-timeline-digest",
    "agentUrl": "https://openagent3.xyz/skills/x-timeline-digest/agent",
    "manifestUrl": "https://openagent3.xyz/skills/x-timeline-digest/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/x-timeline-digest/agent.md"
  }
}