@superagnt/seo-data 2.0.5 → 2.0.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +9 -15
- package/index.js +220 -0
- package/openclaw.plugin.json +7 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -10,17 +10,11 @@ openclaw plugins install @superagnt/seo-data
|
|
|
10
10
|
|
|
11
11
|
This package is the official **OpenClaw** plugin for **SEO** social and public data via [superagnt](https://superagnt.com). Pair it with the [documentation](https://superagnt.com/docs) and your superagnt API key.
|
|
12
12
|
|
|
13
|
-
##
|
|
13
|
+
## What this plugin contains
|
|
14
14
|
|
|
15
|
-
|
|
16
|
-
`SUPERAGNT_API_KEY`. For the live workspace tool surface — the full value
|
|
17
|
-
layer (data sources plus workspace Postgres, schedules, canvases,
|
|
18
|
-
enrichment), growing server-side with no plugin update — install the
|
|
19
|
-
primary superagnt plugin instead:
|
|
15
|
+
A fixed, baked-in toolset for the **SEO** endpoints listed below — nothing else. It authenticates with your `SUPERAGNT_API_KEY` and calls the superagnt REST API directly. It does not add tools for other platforms and does not change after install; new capabilities only arrive through an explicit plugin update.
|
|
20
16
|
|
|
21
|
-
|
|
22
|
-
openclaw plugins install @superagnt/superagnt
|
|
23
|
-
```
|
|
17
|
+
Prefer MCP? The `@superagnt/superagnt` plugin connects the workspace MCP server instead, whose tool surface is managed by the user in the superagnt app.
|
|
24
18
|
|
|
25
19
|
## Overview
|
|
26
20
|
|
|
@@ -48,7 +42,7 @@ SEO and search intelligence through the superagnt unified API.
|
|
|
48
42
|
|
|
49
43
|
## Authentication
|
|
50
44
|
|
|
51
|
-
Use a single **superagnt API key** (Bearer token). Set `SUPERAGNT_API_KEY` in your environment, or complete browser login when the gateway prompts you. Create and manage keys in the [superagnt
|
|
45
|
+
Use a single **superagnt API key** (Bearer token). Set `SUPERAGNT_API_KEY` in your environment, or complete browser login when the gateway prompts you. Create and manage keys in the [superagnt app](https://app.superagnt.com/dashboard).
|
|
52
46
|
|
|
53
47
|
## API coverage
|
|
54
48
|
|
|
@@ -56,19 +50,19 @@ Use a single **superagnt API key** (Bearer token). Set `SUPERAGNT_API_KEY` in yo
|
|
|
56
50
|
| --- | --- |
|
|
57
51
|
| **Platform** | `seo` |
|
|
58
52
|
| **REST base** | `https://api.superagnt.com/v1/data/seo` |
|
|
59
|
-
| **OpenAPI operations** |
|
|
60
|
-
| **OpenClaw tools** |
|
|
53
|
+
| **OpenAPI operations** | 22 |
|
|
54
|
+
| **OpenClaw tools** | 22 |
|
|
61
55
|
|
|
62
56
|
## Documentation
|
|
63
57
|
|
|
64
58
|
- [Documentation](https://superagnt.com/docs) — getting started and concepts
|
|
65
59
|
- [API reference (SEO)](https://superagnt.com/docs/apis/seo) — endpoints and schemas
|
|
66
|
-
- [
|
|
60
|
+
- [superagnt app](https://app.superagnt.com/dashboard) — API keys and usage
|
|
67
61
|
|
|
68
62
|
## Related
|
|
69
63
|
|
|
70
|
-
- **Skill (curl-oriented):** `clawhub install seo-data` on [ClawHub](https://clawhub.ai/superagnt/skills/seo-data)
|
|
71
|
-
- **All platforms plugin:** `@superagnt/
|
|
64
|
+
- **Skill (curl-oriented):** `clawhub install superagnt/seo-data` on [ClawHub](https://clawhub.ai/superagnt/skills/seo-data)
|
|
65
|
+
- **All platforms plugin:** `@superagnt/social-data` if you need LinkedIn, YouTube, TikTok, X, Instagram, Reddit, and Facebook in one package.
|
|
72
66
|
|
|
73
67
|
## License
|
|
74
68
|
|
package/index.js
CHANGED
|
@@ -118,6 +118,10 @@ export default function register(api) {
|
|
|
118
118
|
"depth": {
|
|
119
119
|
"type": "integer",
|
|
120
120
|
"description": "Number of results to return, in steps of 10. Default 10 (cheapest). Each additional 10 results bills as one more results page."
|
|
121
|
+
},
|
|
122
|
+
"load_async_ai_overview": {
|
|
123
|
+
"type": "boolean",
|
|
124
|
+
"description": "Set to true to load AI Overviews that Google renders asynchronously, so the `ai_overview` item comes back with its text and cited sources (`markdown`, `items`, `references`). Left off, an async overview still appears, flagged `asynchronous_ai_overview: true`, but with those fields null: you can tell an overview exists, not what it cites. In the default markdown view, the overview row lists its cited sources as `cited_domains`. Adds up to about 0.36 cents per call (roughly double the default-depth price), charged only when an overview actually had to be loaded; the response's `meta.costCents` shows what the call billed. Default false."
|
|
121
125
|
}
|
|
122
126
|
},
|
|
123
127
|
"required": [
|
|
@@ -599,6 +603,222 @@ export default function register(api) {
|
|
|
599
603
|
},
|
|
600
604
|
})
|
|
601
605
|
|
|
606
|
+
api.registerTool({
|
|
607
|
+
name: 'superagnt_seo_chatgpt_app_answer',
|
|
608
|
+
description: "ChatGPT app answer",
|
|
609
|
+
parameters: {
|
|
610
|
+
"type": "object",
|
|
611
|
+
"properties": {
|
|
612
|
+
"keyword": {
|
|
613
|
+
"type": "string",
|
|
614
|
+
"description": "The question to ask ChatGPT, as a user would type it."
|
|
615
|
+
},
|
|
616
|
+
"location_code": {
|
|
617
|
+
"type": "integer",
|
|
618
|
+
"description": "Geo target as a location code. Common values: 2840 United States (default), 2826 United Kingdom, 2124 Canada, 2036 Australia, 2276 Germany."
|
|
619
|
+
},
|
|
620
|
+
"language_code": {
|
|
621
|
+
"type": "string",
|
|
622
|
+
"description": "Two-letter language code, e.g. 'en' (default)."
|
|
623
|
+
},
|
|
624
|
+
"force_web_search": {
|
|
625
|
+
"type": "boolean",
|
|
626
|
+
"description": "Push ChatGPT to search the web and cite current sources. Citations are still not guaranteed."
|
|
627
|
+
}
|
|
628
|
+
},
|
|
629
|
+
"required": [
|
|
630
|
+
"keyword"
|
|
631
|
+
]
|
|
632
|
+
},
|
|
633
|
+
execute: async (_toolCallId, input) => {
|
|
634
|
+
const key = ensureApiKey()
|
|
635
|
+
const params = parseToolInput(input)
|
|
636
|
+
return callSuperagnt(key, 'POST', '/chatgpt-app-answer', undefined, params)
|
|
637
|
+
},
|
|
638
|
+
})
|
|
639
|
+
|
|
640
|
+
api.registerTool({
|
|
641
|
+
name: 'superagnt_seo_gemini_app_answer',
|
|
642
|
+
description: "Gemini app answer",
|
|
643
|
+
parameters: {
|
|
644
|
+
"type": "object",
|
|
645
|
+
"properties": {
|
|
646
|
+
"keyword": {
|
|
647
|
+
"type": "string",
|
|
648
|
+
"description": "The question to ask Gemini, as a user would type it."
|
|
649
|
+
},
|
|
650
|
+
"location_code": {
|
|
651
|
+
"type": "integer",
|
|
652
|
+
"description": "Geo target as a location code. Common values: 2840 United States (default), 2826 United Kingdom, 2124 Canada, 2036 Australia, 2276 Germany."
|
|
653
|
+
},
|
|
654
|
+
"language_code": {
|
|
655
|
+
"type": "string",
|
|
656
|
+
"description": "Two-letter language code, e.g. 'en' (default)."
|
|
657
|
+
}
|
|
658
|
+
},
|
|
659
|
+
"required": [
|
|
660
|
+
"keyword"
|
|
661
|
+
]
|
|
662
|
+
},
|
|
663
|
+
execute: async (_toolCallId, input) => {
|
|
664
|
+
const key = ensureApiKey()
|
|
665
|
+
const params = parseToolInput(input)
|
|
666
|
+
return callSuperagnt(key, 'POST', '/gemini-app-answer', undefined, params)
|
|
667
|
+
},
|
|
668
|
+
})
|
|
669
|
+
|
|
670
|
+
api.registerTool({
|
|
671
|
+
name: 'superagnt_seo_chatgpt_api_answer',
|
|
672
|
+
description: "OpenAI API answer with citations",
|
|
673
|
+
parameters: {
|
|
674
|
+
"type": "object",
|
|
675
|
+
"properties": {
|
|
676
|
+
"user_prompt": {
|
|
677
|
+
"type": "string",
|
|
678
|
+
"description": "The question to ask the model."
|
|
679
|
+
},
|
|
680
|
+
"model_name": {
|
|
681
|
+
"type": "string",
|
|
682
|
+
"description": "The model to ask: gpt-4o-mini, gpt-4o, gpt-5-mini (default gpt-4o-mini)."
|
|
683
|
+
},
|
|
684
|
+
"max_output_tokens": {
|
|
685
|
+
"type": "integer",
|
|
686
|
+
"description": "Cap on the answer's length in tokens, 16-2048 (default 1024). Web search can push a model slightly past it. gpt-5-mini needs at least 1024."
|
|
687
|
+
},
|
|
688
|
+
"web_search": {
|
|
689
|
+
"type": "boolean",
|
|
690
|
+
"description": "Let the model search the web and cite sources (default true). Citations are still not guaranteed."
|
|
691
|
+
},
|
|
692
|
+
"force_web_search": {
|
|
693
|
+
"type": "boolean",
|
|
694
|
+
"description": "Push the model to search the web before answering. Needs `web_search`; citations are still not guaranteed."
|
|
695
|
+
},
|
|
696
|
+
"web_search_country_iso_code": {
|
|
697
|
+
"type": "string",
|
|
698
|
+
"description": "Two-letter country code the web search runs from, e.g. 'US'."
|
|
699
|
+
}
|
|
700
|
+
},
|
|
701
|
+
"required": [
|
|
702
|
+
"user_prompt"
|
|
703
|
+
]
|
|
704
|
+
},
|
|
705
|
+
execute: async (_toolCallId, input) => {
|
|
706
|
+
const key = ensureApiKey()
|
|
707
|
+
const params = parseToolInput(input)
|
|
708
|
+
return callSuperagnt(key, 'POST', '/chatgpt-api-answer', undefined, params)
|
|
709
|
+
},
|
|
710
|
+
})
|
|
711
|
+
|
|
712
|
+
api.registerTool({
|
|
713
|
+
name: 'superagnt_seo_claude_api_answer',
|
|
714
|
+
description: "Claude API answer with citations",
|
|
715
|
+
parameters: {
|
|
716
|
+
"type": "object",
|
|
717
|
+
"properties": {
|
|
718
|
+
"user_prompt": {
|
|
719
|
+
"type": "string",
|
|
720
|
+
"description": "The question to ask the model."
|
|
721
|
+
},
|
|
722
|
+
"model_name": {
|
|
723
|
+
"type": "string",
|
|
724
|
+
"description": "The model to ask: claude-haiku-4-5, claude-sonnet-4-5 (default claude-haiku-4-5)."
|
|
725
|
+
},
|
|
726
|
+
"max_output_tokens": {
|
|
727
|
+
"type": "integer",
|
|
728
|
+
"description": "Cap on the answer's length in tokens, 16-2048 (default 1024). Web search can push a model slightly past it."
|
|
729
|
+
},
|
|
730
|
+
"web_search": {
|
|
731
|
+
"type": "boolean",
|
|
732
|
+
"description": "Let the model search the web and cite sources (default true). Citations are still not guaranteed."
|
|
733
|
+
},
|
|
734
|
+
"force_web_search": {
|
|
735
|
+
"type": "boolean",
|
|
736
|
+
"description": "Push the model to search the web before answering. Needs `web_search`; citations are still not guaranteed."
|
|
737
|
+
},
|
|
738
|
+
"web_search_country_iso_code": {
|
|
739
|
+
"type": "string",
|
|
740
|
+
"description": "Two-letter country code the web search runs from, e.g. 'US'."
|
|
741
|
+
}
|
|
742
|
+
},
|
|
743
|
+
"required": [
|
|
744
|
+
"user_prompt"
|
|
745
|
+
]
|
|
746
|
+
},
|
|
747
|
+
execute: async (_toolCallId, input) => {
|
|
748
|
+
const key = ensureApiKey()
|
|
749
|
+
const params = parseToolInput(input)
|
|
750
|
+
return callSuperagnt(key, 'POST', '/claude-api-answer', undefined, params)
|
|
751
|
+
},
|
|
752
|
+
})
|
|
753
|
+
|
|
754
|
+
api.registerTool({
|
|
755
|
+
name: 'superagnt_seo_gemini_api_answer',
|
|
756
|
+
description: "Gemini API answer with citations",
|
|
757
|
+
parameters: {
|
|
758
|
+
"type": "object",
|
|
759
|
+
"properties": {
|
|
760
|
+
"user_prompt": {
|
|
761
|
+
"type": "string",
|
|
762
|
+
"description": "The question to ask the model."
|
|
763
|
+
},
|
|
764
|
+
"model_name": {
|
|
765
|
+
"type": "string",
|
|
766
|
+
"description": "The model to ask: gemini-2.5-flash-lite, gemini-2.5-flash, gemini-2.0-flash (default gemini-2.5-flash-lite)."
|
|
767
|
+
},
|
|
768
|
+
"max_output_tokens": {
|
|
769
|
+
"type": "integer",
|
|
770
|
+
"description": "Cap on the answer's length in tokens, 16-2048 (default 1024). Web search can push a model slightly past it."
|
|
771
|
+
},
|
|
772
|
+
"web_search": {
|
|
773
|
+
"type": "boolean",
|
|
774
|
+
"description": "Let the model search the web and cite sources (default true). Citations are still not guaranteed."
|
|
775
|
+
}
|
|
776
|
+
},
|
|
777
|
+
"required": [
|
|
778
|
+
"user_prompt"
|
|
779
|
+
]
|
|
780
|
+
},
|
|
781
|
+
execute: async (_toolCallId, input) => {
|
|
782
|
+
const key = ensureApiKey()
|
|
783
|
+
const params = parseToolInput(input)
|
|
784
|
+
return callSuperagnt(key, 'POST', '/gemini-api-answer', undefined, params)
|
|
785
|
+
},
|
|
786
|
+
})
|
|
787
|
+
|
|
788
|
+
api.registerTool({
|
|
789
|
+
name: 'superagnt_seo_perplexity_api_answer',
|
|
790
|
+
description: "Perplexity API answer with citations",
|
|
791
|
+
parameters: {
|
|
792
|
+
"type": "object",
|
|
793
|
+
"properties": {
|
|
794
|
+
"user_prompt": {
|
|
795
|
+
"type": "string",
|
|
796
|
+
"description": "The question to ask the model."
|
|
797
|
+
},
|
|
798
|
+
"model_name": {
|
|
799
|
+
"type": "string",
|
|
800
|
+
"description": "The model to ask: sonar, sonar-pro (default sonar)."
|
|
801
|
+
},
|
|
802
|
+
"max_output_tokens": {
|
|
803
|
+
"type": "integer",
|
|
804
|
+
"description": "Cap on the answer's length in tokens, 16-2048 (default 1024). Web search can push a model slightly past it."
|
|
805
|
+
},
|
|
806
|
+
"web_search_country_iso_code": {
|
|
807
|
+
"type": "string",
|
|
808
|
+
"description": "Two-letter country code the web search runs from, e.g. 'US'. Sonar models always search the web."
|
|
809
|
+
}
|
|
810
|
+
},
|
|
811
|
+
"required": [
|
|
812
|
+
"user_prompt"
|
|
813
|
+
]
|
|
814
|
+
},
|
|
815
|
+
execute: async (_toolCallId, input) => {
|
|
816
|
+
const key = ensureApiKey()
|
|
817
|
+
const params = parseToolInput(input)
|
|
818
|
+
return callSuperagnt(key, 'POST', '/perplexity-api-answer', undefined, params)
|
|
819
|
+
},
|
|
820
|
+
})
|
|
821
|
+
|
|
602
822
|
api.registerTool({
|
|
603
823
|
name: 'superagnt_seo_tech_stack',
|
|
604
824
|
description: "Technologies a website runs",
|
package/openclaw.plugin.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"id": "seo-data",
|
|
3
3
|
"name": "SEO Data",
|
|
4
4
|
"description": "SEO and search intelligence through the superagnt unified API.",
|
|
5
|
-
"version": "2.0.
|
|
5
|
+
"version": "2.0.7",
|
|
6
6
|
"contracts": {
|
|
7
7
|
"tools": [
|
|
8
8
|
"superagnt_seo_google_search",
|
|
@@ -19,6 +19,12 @@
|
|
|
19
19
|
"superagnt_seo_backlink_gap",
|
|
20
20
|
"superagnt_seo_page_audit",
|
|
21
21
|
"superagnt_seo_ai_visibility",
|
|
22
|
+
"superagnt_seo_chatgpt_app_answer",
|
|
23
|
+
"superagnt_seo_gemini_app_answer",
|
|
24
|
+
"superagnt_seo_chatgpt_api_answer",
|
|
25
|
+
"superagnt_seo_claude_api_answer",
|
|
26
|
+
"superagnt_seo_gemini_api_answer",
|
|
27
|
+
"superagnt_seo_perplexity_api_answer",
|
|
22
28
|
"superagnt_seo_tech_stack",
|
|
23
29
|
"superagnt_seo_tech_search"
|
|
24
30
|
]
|