Go SDK
Every tool as a typed Go method, structured errors, and package site for analytics, IndexNow and deploys.
github.com/Seolyticize/sdk-go has a typed input struct and method for every tool, generated from the registry that runs the API. Standard library only.
go get github.com/Seolyticize/sdk-goCalls
client := seolyticize.New("") // reads SEOLYTICIZE_API_KEY
out, err := client.GetAuditSummary(ctx, seolyticize.GetAuditSummaryInput{ClientID: "client_…"})
var summary struct{ PagesCrawled int `json:"pagesCrawled"` }
json.Unmarshal(out, &summary)Results are the tool's JSON as json.RawMessage. Optional numbers and booleans are pointers: Limit: seolyticize.Ptr(int64(50)). client.Call(ctx, "tool_name", input) reaches tools newer than the module, and client.ListTools(ctx, "weekly") lists what your key may call.
Errors
var apiErr *seolyticize.Error
if errors.As(err, &apiErr) {
log.Println(apiErr.Status, apiErr.Code, apiErr.Next, apiErr.RequestID)
}
if seolyticize.IsCode(err, "unknown_client") { … }The retry rules match the other SDKs: 429 always, server and network errors only for read-only tools.
On your site
import "github.com/Seolyticize/sdk-go/site"
tag := site.AnalyticsTag("SITE_KEY", site.TagOptions{Exclude: []string{"/account/*"}})
mux.Handle("/"+key+".txt", site.IndexNowKeyHandler(key))
site.NotifyDeploy(ctx, hookURL, nil)
site.TrackEvent(ctx, site.Event{SiteKey: "SITE_KEY", URL: "https://example.com/pricing", Name: "Signup"})Updated