Requirements
- Target platform
- OpenClaw
- Install method
- Manual import
- Extraction
- Extract archive
- Prerequisites
- OpenClaw
- Primary doc
- SKILL.md
Use Go2.gg API for URL shortening, link analytics, QR code generation, webhooks, and link-in-bio pages. Use when the user needs to create short links, track clicks, generate QR codes, set up link-in-bio pages, or manage branded URLs. Free tier includes short links, QR codes, and analytics. Requires GO2GG_API_KEY env var. QR code generation is free without auth.
Use Go2.gg API for URL shortening, link analytics, QR code generation, webhooks, and link-in-bio pages. Use when the user needs to create short links, track clicks, generate QR codes, set up link-in-bio pages, or manage branded URLs. Free tier includes short links, QR codes, and analytics. Requires GO2GG_API_KEY env var. QR code generation is free without auth.
Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.
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.
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.
URL shortening, analytics, QR codes, webhooks, galleries (link-in-bio). Built on Cloudflare's edge network with sub-10ms redirects globally.
Get API key from: https://go2.gg/dashboard/api-keys (free, no credit card required) export GO2GG_API_KEY="go2_your_key_here" API base: https://api.go2.gg/api/v1 Auth: Authorization: Bearer $GO2GG_API_KEY Docs: https://go2.gg/docs/api/links
Create, manage, and track short links with custom slugs, tags, expiration, passwords, and geo/device targeting.
curl -X POST "https://api.go2.gg/api/v1/links" \ -H "Authorization: Bearer $GO2GG_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "destinationUrl": "https://example.com/landing-page", "slug": "my-link", "title": "My Campaign Link", "tags": ["marketing", "q1-2025"] }' Important: Field is destinationUrl (not url). Slug is optional (auto-generated if omitted).
{ "success": true, "data": { "id": "lnk_abc123", "shortUrl": "https://go2.gg/my-link", "destinationUrl": "https://example.com/landing-page", "slug": "my-link", "domain": "go2.gg", "title": "My Campaign Link", "tags": ["marketing", "q1-2025"], "clickCount": 0, "createdAt": "2025-01-01T10:30:00Z" } }
# List all links (paginated) curl "https://api.go2.gg/api/v1/links?perPage=20&sort=clicks" \ -H "Authorization: Bearer $GO2GG_API_KEY" # Search links curl "https://api.go2.gg/api/v1/links?search=marketing&tag=q1-2025" \ -H "Authorization: Bearer $GO2GG_API_KEY" Query params: page, perPage (max 100), search, domain, tag, archived, sort (created/clicks/updated)
curl -X PATCH "https://api.go2.gg/api/v1/links/lnk_abc123" \ -H "Authorization: Bearer $GO2GG_API_KEY" \ -H "Content-Type: application/json" \ -d '{"destinationUrl": "https://example.com/updated-page", "tags": ["updated"]}'
curl -X DELETE "https://api.go2.gg/api/v1/links/lnk_abc123" \ -H "Authorization: Bearer $GO2GG_API_KEY" # Returns 204 No Content
curl "https://api.go2.gg/api/v1/links/lnk_abc123/stats" \ -H "Authorization: Bearer $GO2GG_API_KEY" Returns: totalClicks, byCountry, byDevice, byBrowser, byReferrer, overTime
# Password-protected link curl -X POST "https://api.go2.gg/api/v1/links" \ -H "Authorization: Bearer $GO2GG_API_KEY" \ -H "Content-Type: application/json" \ -d '{"destinationUrl": "https://example.com/secret", "slug": "exclusive", "password": "secure123"}' # Link with expiration + click limit curl -X POST "https://api.go2.gg/api/v1/links" \ -H "Authorization: Bearer $GO2GG_API_KEY" \ -H "Content-Type: application/json" \ -d '{"destinationUrl": "https://example.com/flash", "expiresAt": "2025-12-31T23:59:59Z", "clickLimit": 1000}' # Geo-targeted link (different URLs per country) curl -X POST "https://api.go2.gg/api/v1/links" \ -H "Authorization: Bearer $GO2GG_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "destinationUrl": "https://example.com/default", "geoTargets": {"US": "https://example.com/us", "GB": "https://example.com/uk", "IN": "https://example.com/in"} }' # Device-targeted link + app deep links curl -X POST "https://api.go2.gg/api/v1/links" \ -H "Authorization: Bearer $GO2GG_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "destinationUrl": "https://example.com/default", "deviceTargets": {"mobile": "https://m.example.com"}, "iosUrl": "https://apps.apple.com/app/myapp", "androidUrl": "https://play.google.com/store/apps/details?id=com.myapp" }' # Link with UTM parameters curl -X POST "https://api.go2.gg/api/v1/links" \ -H "Authorization: Bearer $GO2GG_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "destinationUrl": "https://example.com/product", "slug": "summer-sale", "utmSource": "email", "utmMedium": "newsletter", "utmCampaign": "summer-sale" }'
FieldTypeRequiredDescriptiondestinationUrlstringyesTarget URL to redirect toslugstringnoCustom slug (auto-generated if omitted)domainstringnoCustom domain (default: go2.gg)titlestringnoLink titledescriptionstringnoLink descriptiontagsstring[]noTags for filteringpasswordstringnoPassword protectionexpiresAtstringnoISO 8601 expiration dateclickLimitnumbernoMax clicks allowedgeoTargetsobjectnoCountry โ URL mappingdeviceTargetsobjectnoDevice โ URL mappingiosUrlstringnoiOS app deep linkandroidUrlstringnoAndroid app deep linkutmSource/Medium/Campaign/Term/ContentstringnoUTM parameters
Generate customizable QR codes. QR generation is free and requires no auth.
# Generate SVG QR code (free, no API key needed) curl -X POST "https://api.go2.gg/api/v1/qr/generate" \ -H "Content-Type: application/json" \ -d '{ "url": "https://go2.gg/my-link", "size": 512, "foregroundColor": "#1a365d", "backgroundColor": "#FFFFFF", "cornerRadius": 10, "errorCorrection": "H", "format": "svg" }' -o qr-code.svg # PNG format curl -X POST "https://api.go2.gg/api/v1/qr/generate" \ -H "Content-Type: application/json" \ -d '{"url": "https://example.com", "format": "png", "size": 1024}' -o qr-code.png
FieldTypeDefaultDescriptionurlstringrequiredURL to encodesizenumber256Size in pixels (64-2048)foregroundColorstring#000000Hex color for modulesbackgroundColorstring#FFFFFFHex color for backgroundcornerRadiusnumber0Module corner radius (0-50)errorCorrectionstringML (7%), M (15%), Q (25%), H (30%)formatstringsvgsvg or png
# Save QR config for tracking curl -X POST "https://api.go2.gg/api/v1/qr" \ -H "Authorization: Bearer $GO2GG_API_KEY" \ -H "Content-Type: application/json" \ -d '{"name": "Business Card QR", "url": "https://go2.gg/contact", "linkId": "lnk_abc123"}' # List saved QR codes curl "https://api.go2.gg/api/v1/qr" -H "Authorization: Bearer $GO2GG_API_KEY" # Download saved QR curl "https://api.go2.gg/api/v1/qr/qr_abc123/download?format=svg" \ -H "Authorization: Bearer $GO2GG_API_KEY" -o qr.svg # Delete QR curl -X DELETE "https://api.go2.gg/api/v1/qr/qr_abc123" -H "Authorization: Bearer $GO2GG_API_KEY"
Receive real-time notifications for link clicks, creations, and updates. # Create webhook curl -X POST "https://api.go2.gg/api/v1/webhooks" \ -H "Authorization: Bearer $GO2GG_API_KEY" \ -H "Content-Type: application/json" \ -d '{"name": "Click Tracker", "url": "https://your-server.com/webhook", "events": ["click", "link.created"]}' # List webhooks curl "https://api.go2.gg/api/v1/webhooks" -H "Authorization: Bearer $GO2GG_API_KEY" # Test webhook curl -X POST "https://api.go2.gg/api/v1/webhooks/wh_abc123/test" \ -H "Authorization: Bearer $GO2GG_API_KEY" # Delete webhook curl -X DELETE "https://api.go2.gg/api/v1/webhooks/wh_abc123" \ -H "Authorization: Bearer $GO2GG_API_KEY" Events: click, link.created, link.updated, link.deleted, domain.verified, qr.scanned, * (all) Webhook payloads include X-Webhook-Signature (HMAC SHA256) for verification. Retries: 5s โ 30s โ 2m โ 10m.
Create link-in-bio pages programmatically. # Create gallery curl -X POST "https://api.go2.gg/api/v1/galleries" \ -H "Authorization: Bearer $GO2GG_API_KEY" \ -H "Content-Type: application/json" \ -d '{"slug": "myprofile", "title": "My Name", "bio": "Creator & developer", "theme": "gradient"}' # Add link item curl -X POST "https://api.go2.gg/api/v1/galleries/gal_abc123/items" \ -H "Authorization: Bearer $GO2GG_API_KEY" \ -H "Content-Type: application/json" \ -d '{"type": "link", "title": "My Website", "url": "https://example.com"}' # Add YouTube embed curl -X POST "https://api.go2.gg/api/v1/galleries/gal_abc123/items" \ -H "Authorization: Bearer $GO2GG_API_KEY" \ -H "Content-Type: application/json" \ -d '{"type": "embed", "title": "Latest Video", "embedType": "youtube", "embedData": {"videoId": "dQw4w9WgXcQ"}}' # Publish gallery (makes it live at go2.gg/bio/myprofile) curl -X POST "https://api.go2.gg/api/v1/galleries/gal_abc123/publish" \ -H "Authorization: Bearer $GO2GG_API_KEY" \ -H "Content-Type: application/json" \ -d '{"isPublished": true}' # Reorder items curl -X PATCH "https://api.go2.gg/api/v1/galleries/gal_abc123/items/reorder" \ -H "Authorization: Bearer $GO2GG_API_KEY" \ -H "Content-Type: application/json" \ -d '{"itemIds": ["item_3", "item_1", "item_2"]}' # List galleries curl "https://api.go2.gg/api/v1/galleries" -H "Authorization: Bearer $GO2GG_API_KEY" Themes: default, minimal, gradient, dark, neon, custom (with customCss) Item types: link, header, divider, embed (youtube), image
import requests API_KEY = "go2_your_key_here" # or os.environ["GO2GG_API_KEY"] BASE = "https://api.go2.gg/api/v1" headers = {"Authorization": f"Bearer {API_KEY}", "Content-Type": "application/json"} # Create short link resp = requests.post(f"{BASE}/links", headers=headers, json={ "destinationUrl": "https://example.com/product", "slug": "my-product", "title": "Product Link", "tags": ["product"] }) link = resp.json()["data"] print(f"Short URL: {link['shortUrl']}") # Get analytics stats = requests.get(f"{BASE}/links/{link['id']}/stats", headers=headers).json()["data"] print(f"Clicks: {stats['totalClicks']}") # Generate QR (no auth needed) qr = requests.post(f"{BASE}/qr/generate", json={"url": link["shortUrl"], "size": 512, "format": "png"}) with open("qr.png", "wb") as f: f.write(qr.content)
ServiceEndpointMethodAuthLinks create/api/v1/linksPOSTyesLinks list/api/v1/linksGETyesLinks get/api/v1/links/:idGETyesLinks update/api/v1/links/:idPATCHyesLinks delete/api/v1/links/:idDELETEyesLinks stats/api/v1/links/:id/statsGETyesQR generate/api/v1/qr/generatePOSTnoQR save/api/v1/qrPOSTyesQR list/api/v1/qrGETyesQR download/api/v1/qr/:id/downloadGETyesWebhooks/api/v1/webhooksCRUDyesWebhook test/api/v1/webhooks/:id/testPOSTyesGalleries/api/v1/galleriesCRUDyesGallery items/api/v1/galleries/:id/itemsCRUDyesGallery publish/api/v1/galleries/:id/publishPOSTyes
PlanRequests/minFree60Pro300Business1000
CodeDescriptionSLUG_RESERVEDSlug is reservedSLUG_EXISTSSlug already in use on this domainINVALID_URLDestination URL is invalidLIMIT_REACHEDPlan's link limit reachedDOMAIN_NOT_VERIFIEDCustom domain not verified
Code helpers, APIs, CLIs, browser automation, testing, and developer operations.
Largest current source with strong distribution and engagement signals.