{"id":"3a7c6518-64da-46b2-990d-8249a0d94cd4","shortId":"NxYULU","kind":"skill","title":"tencentcloud-edgeone","tagline":"Manage Tencent Cloud EdgeOne (CDN + edge security). Use when the user\nasks to: list zones, purge CDN cache (URL / prefix / hostname / all),\nprefetch URLs to warm edges, check purge / prefetch task status,\nmanage acceleration domains, list / create / delete EdgeOne DNS\nrecords, in","description":"# Tencent Cloud EdgeOne (CDN + Security)\n\nManage EdgeOne zones — purge cache, prefetch URLs, manage DNS records on the zone, check WAF settings.\n\n> **Setup:** See [tencentcloud authentication](../_shared/tencentcloud.md). The SDK reads `TENCENTCLOUD_SECRET_ID` / `TENCENTCLOUD_SECRET_KEY` from env. EdgeOne is global — `Region=\"\"` is fine.\n\n## CLI (preferred)\n\nThe skill ships [`scripts/edgeone.py`](scripts/edgeone.py) — wraps zone discovery, purge / prefetch, task tracking, EdgeOne DNS records, and WAF inspection.\n\n```bash\nEO=$SKILL_DIR/scripts/edgeone.py\n\npython3 $EO zones                                                  # list zones\npython3 $EO zone zone-xxxxxxxx                                     # one zone's details\npython3 $EO domains zone-xxxxxxxx                                  # acceleration domains\npython3 $EO purge zone-xxxxxxxx --urls https://hub.example.com/index.html\npython3 $EO purge zone-xxxxxxxx --prefixes https://hub.example.com/assets/\npython3 $EO purge zone-xxxxxxxx --hosts hub.example.com\npython3 $EO purge zone-xxxxxxxx --all                              # nuclear\npython3 $EO prefetch zone-xxxxxxxx --urls https://hub.example.com/ https://hub.example.com/chat\npython3 $EO purge-tasks zone-xxxxxxxx --status processing\npython3 $EO prefetch-tasks zone-xxxxxxxx\npython3 $EO dns zone-xxxxxxxx                                      # EdgeOne DNS records\npython3 $EO dns-create zone-xxxxxxxx --name sub --type CNAME --content origin.example.com\npython3 $EO dns-delete zone-xxxxxxxx <record-id>\npython3 $EO security zone-xxxxxxxx                                 # WAF / security cfg\npython3 $EO waf zone-xxxxxxxx\n```\n\nPurge / prefetch propagation is global but typically takes 30s–2min. Use `purge-tasks --status processing` to wait.\n\n## When to Use\n\n- List EdgeOne zones / acceleration domains\n- Purge cache after a deploy (by URL, prefix, hostname, or whole zone)\n- Prefetch URLs to warm edge nodes\n- Track purge / prefetch task status\n- Manage EdgeOne DNS records (zones managed by EdgeOne use the TEO API, not DNSPod)\n- Inspect WAF / security config\n\n## Dependencies\n\n```bash\npip install tencentcloud-sdk-python\n```\n\n## Quick start\n\n```python\nimport os\nfrom tencentcloud.common import credential\nfrom tencentcloud.teo.v20220901 import teo_client, models\n\ncred = credential.EnvironmentVariableCredential().get_credential()\nclient = teo_client.TeoClient(cred, \"\")\n```\n\n## Workflows\n\n### List zones\n\n```python\nreq = models.DescribeZonesRequest()\nreq.Limit = 100\nresp = client.DescribeZones(req)\nfor z in resp.Zones:\n    print(z.ZoneId, z.ZoneName, z.Status, z.Type)\n```\n\n> Zone IDs look like `zone-xxxxxxxx`. The `ZoneName` is the apex domain (e.g. `acedata.cloud`).\n\n### List acceleration domains in a zone\n\n```python\nreq = models.DescribeAccelerationDomainsRequest()\nreq.ZoneId = \"zone-xxxxxxxx\"\nreq.Limit = 100\nresp = client.DescribeAccelerationDomains(req)\nfor d in resp.AccelerationDomains:\n    print(d.DomainName, d.DomainStatus, d.OriginDetail.OriginType)\n```\n\n### Purge cache — by URL\n\n```python\nreq = models.CreatePurgeTaskRequest()\nreq.ZoneId = \"zone-xxxxxxxx\"\nreq.Type = \"purge_url\"\nreq.Targets = [\n    \"https://hub.example.com/index.html\",\n    \"https://hub.example.com/assets/main.css\",\n]\nresp = client.CreatePurgeTask(req)\nprint(\"Task:\", resp.JobId)\n```\n\n### Purge by hostname (entire host)\n\n```python\nreq = models.CreatePurgeTaskRequest()\nreq.ZoneId = \"zone-xxxxxxxx\"\nreq.Type = \"purge_host\"\nreq.Targets = [\"hub.example.com\"]\nclient.CreatePurgeTask(req)\n```\n\n### Purge by prefix (all URLs under a path)\n\n```python\nreq = models.CreatePurgeTaskRequest()\nreq.ZoneId = \"zone-xxxxxxxx\"\nreq.Type = \"purge_prefix\"\nreq.Targets = [\"https://hub.example.com/assets/\"]\nclient.CreatePurgeTask(req)\n```\n\n### Purge ALL cache for a zone (nuclear option)\n\n```python\n# Confirm with the user — this re-fetches every cached object on next request,\n# spiking origin load.\nreq = models.CreatePurgeTaskRequest()\nreq.ZoneId = \"zone-xxxxxxxx\"\nreq.Type = \"purge_all\"\nclient.CreatePurgeTask(req)\n```\n\n### Prefetch (pre-warm edges)\n\n```python\nreq = models.CreatePrefetchTaskRequest()\nreq.ZoneId = \"zone-xxxxxxxx\"\nreq.Targets = [\n    \"https://hub.example.com/\",\n    \"https://hub.example.com/chat\",\n]\nresp = client.CreatePrefetchTask(req)\nprint(\"Task:\", resp.JobId)\n```\n\n### Track task status\n\n```python\nreq = models.DescribePurgeTasksRequest()\nreq.ZoneId = \"zone-xxxxxxxx\"\nreq.Limit = 50\n# Optional: req.Filters = [{\"Name\": \"job-id\", \"Values\": [\"<job-id>\"]}]\nresp = client.DescribePurgeTasks(req)\nfor t in resp.Tasks:\n    print(t.JobId, t.Type, t.Status, t.CreateTime)\n\n# Same shape for DescribePrefetchTasks\n```\n\n### List EdgeOne DNS records on a zone\n\n```python\nreq = models.DescribeDnsRecordsRequest()\nreq.ZoneId = \"zone-xxxxxxxx\"\nreq.Limit = 100\nresp = client.DescribeDnsRecords(req)\nfor r in resp.DnsRecords:\n    print(r.RecordId, r.Name, r.Type, r.Content)\n```\n\n### Create an EdgeOne DNS record\n\n```python\nreq = models.CreateDnsRecordRequest()\nreq.ZoneId = \"zone-xxxxxxxx\"\nreq.Name = \"sub.example.com\"\nreq.Type = \"CNAME\"\nreq.Content = \"origin.example.com\"\nreq.TTL = 600\nclient.CreateDnsRecord(req)\n```\n\n### Delete an EdgeOne DNS record\n\n```python\nreq = models.DeleteDnsRecordsRequest()\nreq.ZoneId = \"zone-xxxxxxxx\"\nreq.RecordIds = [\"<record-id>\"]\nclient.DeleteDnsRecords(req)\n```\n\n## Purge type cheatsheet\n\n| Type | When to use | Caveat |\n|---|---|---|\n| `purge_url` | Specific page / asset changed | Most surgical; up to 1000 URLs per call |\n| `purge_prefix` | A directory of assets changed (`/assets/...`) | Treats target as a prefix match |\n| `purge_host` | Full site deployment | Affects everything on the hostname |\n| `purge_all` | Emergency / major migration | All cache for the zone — origin spike inevitable |\n\n## Typical post-deploy sequence\n\n```python\n# 1. Purge the hostname so users get the new bundle\nclient.CreatePurgeTask(models.CreatePurgeTaskRequest(\n    ZoneId=\"zone-xxxxxxxx\",\n    Type=\"purge_host\",\n    Targets=[\"hub.example.com\"],\n))\n\n# 2. Prefetch the most-trafficked routes so edge cache is warm\nclient.CreatePrefetchTask(models.CreatePrefetchTaskRequest(\n    ZoneId=\"zone-xxxxxxxx\",\n    Targets=[\n        \"https://hub.example.com/\",\n        \"https://hub.example.com/chat\",\n        \"https://hub.example.com/login\",\n    ],\n))\n\n# 3. Watch for completion (typically 30s – 2min)\nimport time\nwhile True:\n    resp = client.DescribePurgeTasks(models.DescribePurgeTasksRequest(\n        ZoneId=\"zone-xxxxxxxx\",\n        Filters=[{\"Name\": \"status\", \"Values\": [\"processing\"]}],\n    ))\n    if not resp.Tasks:\n        print(\"All purge tasks done.\")\n        break\n    print(f\"{len(resp.Tasks)} tasks still processing...\")\n    time.sleep(15)\n```\n\n## Important reminders\n\n- **`purge_all` causes origin load spike.** Use only when surgical purges aren't enough.\n- **Prefetch isn't free** — it counts against your CDN traffic quota at edge-warm time. Only prefetch URLs you're confident users will hit.\n- **Purge / prefetch propagation is global** but takes 30s–2min. Plan deploy windows accordingly.\n- EdgeOne DNS and DNSPod DNS are *separate*. Domains onboarded to EdgeOne with NS-mode resolve through the TEO API; CNAME-mode domains still resolve through whatever DNS you've configured (DNSPod or third-party). Use the right skill for the right zone type.\n\n## Console links\n\n- EdgeOne console: <https://console.cloud.tencent.com/edgeone>\n- API reference: <https://www.tencentcloud.com/document/product/1145/53929>","tags":["tencentcloud","edgeone","skills","acedatacloud","acedata-cloud","agent-skills","agentskills","ai-image","ai-music","ai-tools","ai-video","claude-code"],"capabilities":["skill","source-acedatacloud","skill-tencentcloud-edgeone","topic-acedata-cloud","topic-agent-skills","topic-agentskills","topic-ai-image","topic-ai-music","topic-ai-tools","topic-ai-video","topic-claude-code","topic-cursor","topic-gemini-cli","topic-github-copilot","topic-mcp"],"categories":["Skills"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/AceDataCloud/Skills/tencentcloud-edgeone","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add AceDataCloud/Skills","source_repo":"https://github.com/AceDataCloud/Skills","install_from":"skills.sh"}},"qualityScore":"0.453","qualityRationale":"deterministic score 0.45 from registry signals: · indexed on github topic:agent-skills · 7 github stars · SKILL.md body (7,441 chars)","verified":false,"liveness":"unknown","lastLivenessCheck":null,"agentReviews":{"count":0,"score_avg":null,"cost_usd_avg":null,"success_rate":null,"latency_p50_ms":null,"narrative_summary":null,"summary_updated_at":null},"enrichmentModel":"deterministic:skill-github:v1","enrichmentVersion":1,"enrichedAt":"2026-05-18T19:14:04.507Z","embedding":null,"createdAt":"2026-05-18T13:21:35.726Z","updatedAt":"2026-05-18T19:14:04.507Z","lastSeenAt":"2026-05-18T19:14:04.507Z","tsv":"'/_shared/tencentcloud.md':71 '/assets':665 '/assets/':155,473 '/assets/main.css':426 '/chat':182,529,744 '/document/product/1145/53929':900 '/edgeone':895 '/index.html':145,423 '/login':747 '1':701 '100':352,394,586 '1000':654 '15':788 '2':722 '2min':256,754,838 '3':748 '30s':255,753,837 '50':547 '600':618 'acceler':37,134,271,381 'accord':842 'acedata.cloud':379 'affect':677 'apex':376 'api':307,862,896 'aren':802 'ask':15 'asset':648,663 'authent':70 'bash':109,315 'break':779 'bundl':710 'cach':21,55,274,407,478,494,688,731 'call':657 'caus':793 'caveat':643 'cdn':8,20,49,813 'cfg':240 'chang':649,664 'cheatsheet':638 'check':31,64 'cli':89 'client':336,342 'client.creatednsrecord':619 'client.createprefetchtask':531,734 'client.createpurgetask':428,450,474,511,711 'client.deletednsrecords':634 'client.describeaccelerationdomains':396 'client.describednsrecords':588 'client.describepurgetasks':556,760 'client.describezones':354 'cloud':6,47 'cname':221,614,864 'cname-mod':863 'complet':751 'confid':826 'config':313 'configur':874 'confirm':485 'consol':889,892 'console.cloud.tencent.com':894 'console.cloud.tencent.com/edgeone':893 'content':222 'count':810 'creat':40,214,599 'cred':338,344 'credenti':330,341 'credential.environmentvariablecredential':339 'd':399 'd.domainname':403 'd.domainstatus':404 'd.origindetail.origintype':405 'delet':41,228,621 'depend':314 'deploy':277,676,698,840 'describeprefetchtask':570 'detail':127 'dir/scripts/edgeone.py':112 'directori':661 'discoveri':98 'dns':43,59,104,203,208,213,227,298,573,602,624,844,847,871 'dns-creat':212 'dns-delet':226 'dnspod':309,846,875 'domain':38,130,135,272,377,382,850,866 'done':778 'e.g':378 'edg':9,30,289,517,730,818 'edge-warm':817 'edgeon':3,7,42,48,52,83,103,207,269,297,303,572,601,623,843,853,891 'emerg':684 'enough':804 'entir':436 'env':82 'eo':110,114,119,129,137,147,157,165,173,184,194,202,211,225,233,242 'everi':493 'everyth':678 'f':781 'fetch':492 'filter':766 'fine':88 'free':808 'full':674 'get':340,707 'global':85,251,834 'hit':829 'host':162,437,447,673,719 'hostnam':24,281,435,681,704 'hub.example.com':144,154,163,179,181,422,425,449,472,526,528,721,741,743,746 'hub.example.com/assets/':153,471 'hub.example.com/assets/main.css':424 'hub.example.com/chat':180,527,742 'hub.example.com/index.html':143,421 'hub.example.com/login':745 'id':77,366,553 'import':325,329,334,755,789 'inevit':694 'inspect':108,310 'instal':317 'isn':806 'job':552 'job-id':551 'key':80 'len':782 'like':368 'link':890 'list':17,39,116,268,346,380,571 'load':501,795 'look':367 'major':685 'manag':4,36,51,58,296,301 'match':671 'migrat':686 'mode':857,865 'model':337 'models.creatednsrecordrequest':606 'models.createprefetchtaskrequest':520,735 'models.createpurgetaskrequest':412,440,462,503,712 'models.deletednsrecordsrequest':628 'models.describeaccelerationdomainsrequest':388 'models.describednsrecordsrequest':580 'models.describepurgetasksrequest':541,761 'models.describezonesrequest':350 'most-traffick':725 'name':218,550,767 'new':709 'next':497 'node':290 'ns':856 'ns-mode':855 'nuclear':171,482 'object':495 'onboard':851 'one':124 'option':483,548 'origin':500,692,794 'origin.example.com':223,616 'os':326 'page':647 'parti':879 'path':459 'per':656 'pip':316 'plan':839 'post':697 'post-deploy':696 'pre':515 'pre-warm':514 'prefer':90 'prefetch':26,33,56,100,174,196,248,285,293,513,723,805,822,831 'prefetch-task':195 'prefix':23,152,280,454,469,659,670 'print':360,402,430,533,562,594,774,780 'process':192,262,770,786 'propag':249,832 'purg':19,32,54,99,138,148,158,166,186,247,259,273,292,406,418,433,446,452,468,476,509,636,644,658,672,682,702,718,776,791,801,830 'purge-task':185,258 'python':321,324,348,386,410,438,460,484,518,539,578,604,626,700 'python3':113,118,128,136,146,156,164,172,183,193,201,210,224,232,241 'quick':322 'quota':815 'r':591 'r.content':598 'r.name':596 'r.recordid':595 'r.type':597 're':491,825 're-fetch':490 'read':74 'record':44,60,105,209,299,574,603,625 'refer':897 'region':86 'remind':790 'req':349,355,387,397,411,429,439,451,461,475,502,512,519,532,540,557,579,589,605,620,627,635 'req.content':615 'req.filters':549 'req.limit':351,393,546,585 'req.name':611 'req.recordids':633 'req.targets':420,448,470,525 'req.ttl':617 'req.type':417,445,467,508,613 'req.zoneid':389,413,441,463,504,521,542,581,607,629 'request':498 'resolv':858,868 'resp':353,395,427,530,555,587,759 'resp.accelerationdomains':401 'resp.dnsrecords':593 'resp.jobid':432,535 'resp.tasks':561,773,783 'resp.zones':359 'right':882,886 'rout':728 'scripts/edgeone.py':94,95 'sdk':73,320 'secret':76,79 'secur':10,50,234,239,312 'see':68 'separ':849 'sequenc':699 'set':66 'setup':67 'shape':568 'ship':93 'site':675 'skill':92,111,883 'skill-tencentcloud-edgeone' 'source-acedatacloud' 'specif':646 'spike':499,693,796 'start':323 'status':35,191,261,295,538,768 'still':785,867 'sub':219 'sub.example.com':612 'surgic':651,800 't.createtime':566 't.jobid':563 't.status':565 't.type':564 'take':254,836 'target':667,720,740 'task':34,101,187,197,260,294,431,534,537,777,784 'tencent':5,46 'tencentcloud':2,69,75,78,319 'tencentcloud-edgeon':1 'tencentcloud-sdk-python':318 'tencentcloud.common':328 'tencentcloud.teo':332 'teo':306,335,861 'teo_client.teoclient':343 'third':878 'third-parti':877 'time':756,820 'time.sleep':787 'topic-acedata-cloud' 'topic-agent-skills' 'topic-agentskills' 'topic-ai-image' 'topic-ai-music' 'topic-ai-tools' 'topic-ai-video' 'topic-claude-code' 'topic-cursor' 'topic-gemini-cli' 'topic-github-copilot' 'topic-mcp' 'track':102,291,536 'traffic':814 'traffick':727 'treat':666 'true':758 'type':220,637,639,717,888 'typic':253,695,752 'url':22,27,57,142,178,279,286,409,419,456,645,655,823 'use':11,257,267,304,642,797,880 'user':14,488,706,827 'v20220901':333 'valu':554,769 've':873 'waf':65,107,238,243,311 'wait':264 'warm':29,288,516,733,819 'watch':749 'whatev':870 'whole':283 'window':841 'workflow':345 'wrap':96 'www.tencentcloud.com':899 'www.tencentcloud.com/document/product/1145/53929':898 'xxxxxxxx':123,133,141,151,161,169,177,190,200,206,217,231,237,246,371,392,416,444,466,507,524,545,584,610,632,716,739,765 'z':357 'z.status':363 'z.type':364 'z.zoneid':361 'z.zonename':362 'zone':18,53,63,97,115,117,120,122,125,132,140,150,160,168,176,189,199,205,216,230,236,245,270,284,300,347,365,370,385,391,415,443,465,481,506,523,544,577,583,609,631,691,715,738,764,887 'zone-xxxxxxxx':121,131,139,149,159,167,175,188,198,204,215,229,235,244,369,390,414,442,464,505,522,543,582,608,630,714,737,763 'zoneid':713,736,762 'zonenam':373","prices":[{"id":"fb002016-1758-42cc-8ec8-09a9ef742c2d","listingId":"3a7c6518-64da-46b2-990d-8249a0d94cd4","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"AceDataCloud","category":"Skills","install_from":"skills.sh"},"createdAt":"2026-05-18T13:21:35.726Z"}],"sources":[{"listingId":"3a7c6518-64da-46b2-990d-8249a0d94cd4","source":"github","sourceId":"AceDataCloud/Skills/tencentcloud-edgeone","sourceUrl":"https://github.com/AceDataCloud/Skills/tree/main/skills/tencentcloud-edgeone","isPrimary":false,"firstSeenAt":"2026-05-18T13:21:35.726Z","lastSeenAt":"2026-05-18T19:14:04.507Z"}],"details":{"listingId":"3a7c6518-64da-46b2-990d-8249a0d94cd4","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"AceDataCloud","slug":"tencentcloud-edgeone","github":{"repo":"AceDataCloud/Skills","stars":7,"topics":["acedata-cloud","agent-skills","agentskills","ai-image","ai-music","ai-tools","ai-video","claude-code","cursor","gemini-cli","github-copilot","mcp","npm","openai-codex","roo-code"],"license":"other","html_url":"https://github.com/AceDataCloud/Skills","pushed_at":"2026-05-18T07:35:03Z","description":"Agent Skills for AceDataCloud AI services — music, image, video generation, web search, and more. Compatible with Claude Code, GitHub Copilot, Gemini CLI, and all agentskills.io-compatible agents.","skill_md_sha":"ab6852dbcad47d3049a351925d6d375f1da94d18","skill_md_path":"skills/tencentcloud-edgeone/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/AceDataCloud/Skills/tree/main/skills/tencentcloud-edgeone"},"layout":"multi","source":"github","category":"Skills","frontmatter":{"name":"tencentcloud-edgeone","license":"Apache-2.0","description":"Manage Tencent Cloud EdgeOne (CDN + edge security). Use when the user\nasks to: list zones, purge CDN cache (URL / prefix / hostname / all),\nprefetch URLs to warm edges, check purge / prefetch task status,\nmanage acceleration domains, list / create / delete EdgeOne DNS\nrecords, inspect WAF / security configuration. Backed by the official\ntencentcloud-sdk-python TEO client."},"skills_sh_url":"https://skills.sh/AceDataCloud/Skills/tencentcloud-edgeone"},"updatedAt":"2026-05-18T19:14:04.507Z"}}