mirror of
https://github.com/simstudioai/sim.git
synced 2026-09-21 13:00:04 +08:00
feat(integrations): add Semrush (#7068)
* feat(integrations): add Semrush Adds the Semrush SEO API as a block with 44 operations across overview, domain, subdomain, URL, keyword, comparison, and backlink reports. Reports answer as delimited CSV, so the shared decoder maps each header cell back to the export column it was requested as rather than reading by position: the API may return fewer columns than were asked for, and two columns can render under the same header label. * fix(integrations): sync docs manifest for the Semrush page * fix(integrations): address Semrush review findings - Only the API key stays user-only; report selectors (target scope, limit, offset, date, sort, filter) are user-or-llm so an agent can set them - Hold the row limit at one row: a positive fraction floored to zero and sent display_limit=0 - Locate Domain vs. Domain metric columns by their own headers, so a dropped position column shortens the compared-domain run instead of shifting competition, search volume, and CPC onto the wrong values - Describe competitor and domain-list metrics as belonging to the row's domain, not to the target - Describe paid and URL traffic cost as an estimated cost, matching the Traffic Cost header those reports return, not the organic Traffic Cost (%) - Drop the newest-first claim from history outputs, which order by display_sort - Replace the erased any casts in the request tests with a typed helper
This commit is contained in:
@@ -6842,6 +6842,17 @@ export function AgiloftIcon(props: SVGProps<SVGSVGElement>) {
|
||||
)
|
||||
}
|
||||
|
||||
export function SemrushIcon(props: SVGProps<SVGSVGElement>) {
|
||||
return (
|
||||
<svg {...props} xmlns='http://www.w3.org/2000/svg' viewBox='0 0 43.3 26'>
|
||||
<path
|
||||
fill='#FF642D'
|
||||
d='M37.4,12.8c0,0.8-0.4,0.9-1.4,0.9c-1.1,0-1.3-0.2-1.4-1c-0.2-2.1-1.6-3.9-4-4c-0.7-0.1-0.9-0.3-0.9-1.3 c0-0.9,0.1-1.3,0.8-1.3C34.5,6.2,37.4,9.5,37.4,12.8z M43.3,12.8c0-6.2-4.2-12.8-14-12.8H10C9.6,0,9.3,0.2,9.3,0.6 c0,0.2,0.1,0.4,0.3,0.5c0.7,0.6,1.7,1.2,3.1,1.9c1.3,0.7,2.4,1.1,3.4,1.5c0.4,0.2,0.6,0.4,0.6,0.6c0,0.3-0.2,0.6-0.7,0.6H0.7 C0.2,5.6,0,5.9,0,6.2c0,0.3,0.1,0.5,0.3,0.7c1.2,1.3,3.2,2.9,6.1,4.7c2.5,1.6,5.7,3.3,8.2,4.5c0.4,0.2,0.6,0.4,0.6,0.7 c0,0.3-0.2,0.5-0.7,0.5H7.4c-0.4,0-0.6,0.2-0.6,0.5c0,0.2,0.1,0.4,0.3,0.6c1.6,1.5,4.2,3,7.6,4.5c4.6,1.9,9.2,3.1,14.4,3.1 C39,26,43.3,18.6,43.3,12.8z M30.4,21.7c-4.8,0-8.9-3.9-8.9-8.9c0-4.8,4-8.7,8.9-8.7c5,0,8.9,3.9,8.9,8.7 C39.3,17.7,35.4,21.7,30.4,21.7z'
|
||||
/>
|
||||
</svg>
|
||||
)
|
||||
}
|
||||
|
||||
export function AhrefsIcon(props: SVGProps<SVGSVGElement>) {
|
||||
return (
|
||||
<svg {...props} xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1065 1300'>
|
||||
|
||||
@@ -210,6 +210,7 @@ import {
|
||||
SapS4HanaIcon,
|
||||
SESIcon,
|
||||
SecretsManagerIcon,
|
||||
SemrushIcon,
|
||||
SendblueIcon,
|
||||
SendgridIcon,
|
||||
SentryIcon,
|
||||
@@ -507,6 +508,7 @@ export const blockTypeToIconMap: Record<string, IconComponent> = {
|
||||
sap_concur: SapConcurIcon,
|
||||
sap_s4hana: SapS4HanaIcon,
|
||||
secrets_manager: SecretsManagerIcon,
|
||||
semrush: SemrushIcon,
|
||||
sendblue: SendblueIcon,
|
||||
sendgrid: SendgridIcon,
|
||||
sentry: SentryIcon,
|
||||
|
||||
@@ -221,6 +221,7 @@
|
||||
"sap_concur",
|
||||
"sap_s4hana",
|
||||
"secrets_manager",
|
||||
"semrush",
|
||||
"sendblue",
|
||||
"sendgrid",
|
||||
"sentry",
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user