{
  "schemaVersion": "1.0",
  "item": {
    "slug": "feishu-user",
    "name": "feishu-user",
    "source": "tencent",
    "type": "skill",
    "category": "通讯协作",
    "sourceUrl": "https://clawhub.ai/HackSing/feishu-user",
    "canonicalUrl": "https://clawhub.ai/HackSing/feishu-user",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/feishu-user",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=feishu-user",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "SKILL.md",
      "scripts/feishu_client.py",
      "scripts/feishu_token.py"
    ],
    "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-04-30T16:55:25.780Z",
      "expiresAt": "2026-05-07T16:55:25.780Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=network",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=network",
        "contentDisposition": "attachment; filename=\"network-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/feishu-user"
    },
    "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/feishu-user",
    "agentPageUrl": "https://openagent3.xyz/skills/feishu-user/agent",
    "manifestUrl": "https://openagent3.xyz/skills/feishu-user/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/feishu-user/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": "Feishishu document operations using useru User",
        "body": "Fe access token authentication. Call Feishu Open API directly via REST API."
      },
      {
        "title": "Install Dependencies",
        "body": "pip install requests"
      },
      {
        "title": "Quick Start",
        "body": "from feishu_client import FeishuClient\n\n# Initialize client\nclient = FeishuClient(user_access_token=\"u-xxx\")"
      },
      {
        "title": "Step 1: Get App Credentials from Feishu Open Platform",
        "body": "Prepare the following:\n\nAPP_ID - App ID (from Feishu Open Platform app settings)\nAPP_SECRET - App Secret (from Feishu Open Platform app settings)\nREDIRECT_URI - Authorization callback URL\n\nEnable these permissions:\n\ndocx:document - Document operations\ndrive:drive.search:readonly - Cloud drive search\nsearch:docs:read - Document search"
      },
      {
        "title": "Step 2: Generate Authorization URL",
        "body": "https://accounts.feishu.cn/open-apis/authen/v1/authorize?client_id={YOUR_APP_ID}&response_type=code&redirect_uri={YOUR_REDIRECT_URI}&scope=docx%3Adocument%20drive%3Adrive.search%3Areadonly%20search%3Adocs%3Aread"
      },
      {
        "title": "Step 3: Exchange for Token",
        "body": "curl -X POST \"https://open.feishu.cn/open-apis/authen/v1/access_token\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"grant_type\": \"authorization_code\",\n    \"code\": \"{YOUR_CODE}\",\n    \"app_id\": \"{YOUR_APP_ID}\",\n    \"app_secret\": \"{YOUR_APP_SECRET}\"\n  }'\n\nThe returned access_token is your user_access_token."
      },
      {
        "title": "Usage Examples",
        "body": "from feishu_client import FeishuClient\n\n# Initialize\nclient = FeishuClient(user_access_token=\"u-xxx\")\n\n# Read document\ncontent = client.read_doc(\"doc_token\")\nprint(content)\n\n# Create document\nnew_token = client.create_doc(\"My New Document\")\nprint(f\"New document: {new_token}\")\n\n# Write document\nclient.write_doc(\"doc_token\", \"# Title\\n\\nContent\")\n\n# Append content\nclient.append_doc(\"doc_token\", \"## New Section\\n\\nMore content\")\n\n# List all blocks\nblocks = client.list_blocks(\"doc_token\")\nfor block in blocks:\n    print(block)\n\n# Get specific block\nblock = client.get_block(\"doc_token\", \"block_id\")\n\n# Update block\nclient.update_block(\"doc_token\", \"block_id\", \"New content\")\n\n# Delete block\nclient.delete_block(\"doc_token\", \"block_id\")"
      },
      {
        "title": "Convenience Functions",
        "body": "Don't want to create a client? Use functions directly:\n\nfrom feishu_client import read_document, create_document, write_document, append_document\n\n# Read\ncontent = read_document(\"doc_token\", user_access_token=\"u-xxx\")\n\n# Create\nnew_token = create_document(\"Title\", user_access_token=\"u-xxx\")\n\n# Write\nwrite_document(\"doc_token\", \"# Content\", user_access_token=\"u-xxx\")\n\n# Append\nappend_document(\"doc_token\", \"## More\", user_access_token=\"u-xxx\")"
      },
      {
        "title": "FeishuClient",
        "body": "MethodDescriptionread_doc(doc_token)Read document contentcreate_doc(title, folder_token)Create new documentwrite_doc(doc_token, content)Write document (overwrite)append_doc(doc_token, content)Append content to endlist_blocks(doc_token)List all blocksget_block(doc_token, block_id)Get specific blockupdate_block(doc_token, block_id, content)Update block contentdelete_block(doc_token, block_id)Delete block"
      },
      {
        "title": "Notes",
        "body": "user_access_token has an expiration time, needs periodic refresh\nThe scope in authorization URL must be enabled in Feishu Open Platform\nThis skill accesses personal cloud documents using user identity"
      },
      {
        "title": "Related Links",
        "body": "Feishu Open Platform: https://open.feishu.cn\nDocument API: https://open.feishu.cn/document/ukTMukTMukTM/uADOwUjLwgDMzCM4ATm"
      },
      {
        "title": "Token Auto Refresh",
        "body": "Use feishu_token.py script for automatic token refresh."
      },
      {
        "title": "Install Dependencies",
        "body": "pip install requests"
      },
      {
        "title": "First Authorization",
        "body": "# 1. Generate authorization URL\npython feishu_token.py --app-id YOUR_APP_ID --app-secret YOUR_SECRET --redirect-uri YOUR_REDIRECT_URI --url\n\nAfter user authorizes, will callback to YOUR_REDIRECT_URI?code=XXX\n\n# 2. Use authorization code to get token\npython feishu_token.py --app-id YOUR_APP_ID --app-secret YOUR_SECRET --code AUTH_CODE\n\nToken is automatically saved to ~/.config/claw-feishu-user/config.json"
      },
      {
        "title": "Refresh Token",
        "body": "python feishu_token.py --app-id YOUR_APP_ID --app-secret YOUR_SECRET --refresh"
      },
      {
        "title": "In Code",
        "body": "import json\nimport os\n\n# Read cached token\nconfig_path = os.path.expanduser(\"~/.config/claw-feishu-user/config.json\")\nwith open(config_path) as f:\n    config = json.load(f)\n\n# Use token\nclient = FeishuClient(user_access_token=config[\"access_token\"])"
      }
    ],
    "body": "Feishishu document operations using useru User\n\nFe access token authentication. Call Feishu Open API directly via REST API.\n\nInstall Dependencies\npip install requests\n\nQuick Start\nfrom feishu_client import FeishuClient\n\n# Initialize client\nclient = FeishuClient(user_access_token=\"u-xxx\")\n\nGet User Access Token\nStep 1: Get App Credentials from Feishu Open Platform\n\nPrepare the following:\n\nAPP_ID - App ID (from Feishu Open Platform app settings)\nAPP_SECRET - App Secret (from Feishu Open Platform app settings)\nREDIRECT_URI - Authorization callback URL\n\nEnable these permissions:\n\ndocx:document - Document operations\ndrive:drive.search:readonly - Cloud drive search\nsearch:docs:read - Document search\nStep 2: Generate Authorization URL\nhttps://accounts.feishu.cn/open-apis/authen/v1/authorize?client_id={YOUR_APP_ID}&response_type=code&redirect_uri={YOUR_REDIRECT_URI}&scope=docx%3Adocument%20drive%3Adrive.search%3Areadonly%20search%3Adocs%3Aread\n\nStep 3: Exchange for Token\ncurl -X POST \"https://open.feishu.cn/open-apis/authen/v1/access_token\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"grant_type\": \"authorization_code\",\n    \"code\": \"{YOUR_CODE}\",\n    \"app_id\": \"{YOUR_APP_ID}\",\n    \"app_secret\": \"{YOUR_APP_SECRET}\"\n  }'\n\n\nThe returned access_token is your user_access_token.\n\nUsage Examples\nfrom feishu_client import FeishuClient\n\n# Initialize\nclient = FeishuClient(user_access_token=\"u-xxx\")\n\n# Read document\ncontent = client.read_doc(\"doc_token\")\nprint(content)\n\n# Create document\nnew_token = client.create_doc(\"My New Document\")\nprint(f\"New document: {new_token}\")\n\n# Write document\nclient.write_doc(\"doc_token\", \"# Title\\n\\nContent\")\n\n# Append content\nclient.append_doc(\"doc_token\", \"## New Section\\n\\nMore content\")\n\n# List all blocks\nblocks = client.list_blocks(\"doc_token\")\nfor block in blocks:\n    print(block)\n\n# Get specific block\nblock = client.get_block(\"doc_token\", \"block_id\")\n\n# Update block\nclient.update_block(\"doc_token\", \"block_id\", \"New content\")\n\n# Delete block\nclient.delete_block(\"doc_token\", \"block_id\")\n\nConvenience Functions\n\nDon't want to create a client? Use functions directly:\n\nfrom feishu_client import read_document, create_document, write_document, append_document\n\n# Read\ncontent = read_document(\"doc_token\", user_access_token=\"u-xxx\")\n\n# Create\nnew_token = create_document(\"Title\", user_access_token=\"u-xxx\")\n\n# Write\nwrite_document(\"doc_token\", \"# Content\", user_access_token=\"u-xxx\")\n\n# Append\nappend_document(\"doc_token\", \"## More\", user_access_token=\"u-xxx\")\n\nAPI Reference\nFeishuClient\nMethod\tDescription\nread_doc(doc_token)\tRead document content\ncreate_doc(title, folder_token)\tCreate new document\nwrite_doc(doc_token, content)\tWrite document (overwrite)\nappend_doc(doc_token, content)\tAppend content to end\nlist_blocks(doc_token)\tList all blocks\nget_block(doc_token, block_id)\tGet specific block\nupdate_block(doc_token, block_id, content)\tUpdate block content\ndelete_block(doc_token, block_id)\tDelete block\nNotes\nuser_access_token has an expiration time, needs periodic refresh\nThe scope in authorization URL must be enabled in Feishu Open Platform\nThis skill accesses personal cloud documents using user identity\nRelated Links\nFeishu Open Platform: https://open.feishu.cn\nDocument API: https://open.feishu.cn/document/ukTMukTMukTM/uADOwUjLwgDMzCM4ATm\nToken Auto Refresh\n\nUse feishu_token.py script for automatic token refresh.\n\nInstall Dependencies\npip install requests\n\nFirst Authorization\n# 1. Generate authorization URL\npython feishu_token.py --app-id YOUR_APP_ID --app-secret YOUR_SECRET --redirect-uri YOUR_REDIRECT_URI --url\n\n\nAfter user authorizes, will callback to YOUR_REDIRECT_URI?code=XXX\n\n# 2. Use authorization code to get token\npython feishu_token.py --app-id YOUR_APP_ID --app-secret YOUR_SECRET --code AUTH_CODE\n\n\nToken is automatically saved to ~/.config/claw-feishu-user/config.json\n\nRefresh Token\npython feishu_token.py --app-id YOUR_APP_ID --app-secret YOUR_SECRET --refresh\n\nIn Code\nimport json\nimport os\n\n# Read cached token\nconfig_path = os.path.expanduser(\"~/.config/claw-feishu-user/config.json\")\nwith open(config_path) as f:\n    config = json.load(f)\n\n# Use token\nclient = FeishuClient(user_access_token=config[\"access_token\"])"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/HackSing/feishu-user",
    "publisherUrl": "https://clawhub.ai/HackSing/feishu-user",
    "owner": "HackSing",
    "version": "1.0.1",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/feishu-user",
    "downloadUrl": "https://openagent3.xyz/downloads/feishu-user",
    "agentUrl": "https://openagent3.xyz/skills/feishu-user/agent",
    "manifestUrl": "https://openagent3.xyz/skills/feishu-user/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/feishu-user/agent.md"
  }
}