anymorph 0.2.6 → 0.5.0
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 +53 -39
- package/dist/index.js +9261 -256
- package/package.json +2 -1
- package/dist/skillpacks/geo/skills/brand-owned-diagnosis/SKILL.md +0 -54
- package/dist/skillpacks/geo/skills/brand-owned-diagnosis/agents/openai.yaml +0 -4
- package/dist/skillpacks/geo/skills/brand-owned-diagnosis/references/diagnosis-contract.md +0 -96
- package/dist/skillpacks/geo/skills/brand-owned-diagnosis/references/workflow.md +0 -191
- package/dist/skillpacks/geo/skills/geo-generating-actions/SKILL.md +0 -100
- package/dist/skillpacks/geo/skills/geo-generating-actions/agents/openai.yaml +0 -4
- package/dist/skillpacks/geo/skills/geo-generating-actions/references/orchestrator.workflow.md +0 -274
- package/dist/skillpacks/geo/skills/geo-initializing-strategy/SKILL.md +0 -50
- package/dist/skillpacks/geo/skills/geo-initializing-strategy/agents/openai.yaml +0 -4
- package/dist/skillpacks/geo/skills/geo-initializing-strategy/references/external-authority-diagnosis.md +0 -66
- package/dist/skillpacks/geo/skills/geo-initializing-strategy/references/foundation-diagnosis.md +0 -86
- package/dist/skillpacks/geo/skills/geo-initializing-strategy/references/memory-contract.md +0 -15
- package/dist/skillpacks/geo/skills/geo-initializing-strategy/references/semantic-clusters-diagnosis.md +0 -58
- package/dist/skillpacks/geo/skills/geo-initializing-strategy/references/strategy-map-contract.md +0 -26
- package/dist/skillpacks/geo/skills/geo-initializing-strategy/references/visibility-diagnosis.md +0 -50
- package/dist/skillpacks/geo/skills/geo-pages-diagnosis/SKILL.md +0 -51
- package/dist/skillpacks/geo/skills/geo-pages-diagnosis/agents/openai.yaml +0 -4
- package/dist/skillpacks/geo/skills/geo-pages-diagnosis/references/diagnosis-contract.md +0 -106
- package/dist/skillpacks/geo/skills/geo-pages-diagnosis/references/workflow.md +0 -219
- package/dist/skillpacks/geo/skills/geo-writer/SKILL.md +0 -234
- package/dist/skillpacks/geo/skills/geo-writer/agents/openai.yaml +0 -4
- package/dist/skillpacks/geo/skills/geo-writer/references/content-writer-contract.md +0 -316
- package/dist/skillpacks/geo/skills/geo-writer/references/direct-sql.md +0 -187
- package/dist/skillpacks/geo/skills/geo-writer/references/seo-geo-insights.md +0 -269
- package/dist/skillpacks/geo/skills/social-execution-planning/SKILL.md +0 -53
- package/dist/skillpacks/geo/skills/social-execution-planning/agents/openai.yaml +0 -5
- package/dist/skillpacks/geo/skills/social-execution-planning/references/execution-contract.md +0 -68
- package/dist/skillpacks/geo/skills/social-execution-planning/references/platform-playbooks.md +0 -59
- package/dist/skillpacks/geo/skills/social-execution-planning/references/reddit-rules.md +0 -69
- package/dist/skillpacks/geo/skills/third-party-diagnosis/SKILL.md +0 -54
- package/dist/skillpacks/geo/skills/third-party-diagnosis/agents/openai.yaml +0 -4
- package/dist/skillpacks/geo/skills/third-party-diagnosis/references/diagnosis-contract.md +0 -111
- package/dist/skillpacks/geo/skills/third-party-diagnosis/references/workflow.md +0 -174
|
@@ -1,111 +0,0 @@
|
|
|
1
|
-
# GEO Strategy: Third-Party Diagnosis
|
|
2
|
-
|
|
3
|
-
You diagnose external citation surfaces.
|
|
4
|
-
|
|
5
|
-
Do not force proposals. Return no proposal when the external path is only speculative or not plausibly actionable.
|
|
6
|
-
|
|
7
|
-
## Scope
|
|
8
|
-
|
|
9
|
-
Work on:
|
|
10
|
-
|
|
11
|
-
- cited third-party domains
|
|
12
|
-
- competitor presence on cited sources
|
|
13
|
-
- tenant-owned third-party profiles
|
|
14
|
-
- submission/listing/review opportunities with evidence of feasibility
|
|
15
|
-
- negative or risky external sentiment
|
|
16
|
-
|
|
17
|
-
Do not recommend outreach only because a domain is frequently cited.
|
|
18
|
-
|
|
19
|
-
## Evidence Order
|
|
20
|
-
|
|
21
|
-
Use the cheapest sufficient evidence.
|
|
22
|
-
|
|
23
|
-
1. Common run context and routed candidates.
|
|
24
|
-
2. `list_geo_strategy_candidates` for the first third-party domain slice.
|
|
25
|
-
3. `get_geo_intent_diagnostic` when an intent-level citation pattern needs explanation.
|
|
26
|
-
4. `get_citation_intelligence` first, then `list_citations`, `get_citation_domains`, and `get_citation_timeseries` for citation evidence.
|
|
27
|
-
5. `list_ai_responses` for answer excerpts and recommendation reasons.
|
|
28
|
-
6. `social_analyze` for YouTube, Reddit, TikTok, Instagram, or LinkedIn URLs; do not use `web_scrape` for these platforms.
|
|
29
|
-
7. `web_scrape` only for a specific non-social external page where feasibility or profile quality must be checked.
|
|
30
|
-
8. `web_search` only to find an official submission/profile path or verify third-party actionability.
|
|
31
|
-
|
|
32
|
-
## Candidate Types
|
|
33
|
-
|
|
34
|
-
- `competitor_cited_surface_gap`
|
|
35
|
-
- `owned_3p_profile_gap`
|
|
36
|
-
- `submission_target`
|
|
37
|
-
- `owned_3p_refresh`
|
|
38
|
-
- `authority_source_monitor`
|
|
39
|
-
- `negative_or_risk_domain`
|
|
40
|
-
- `not_actionable`
|
|
41
|
-
|
|
42
|
-
## Root Cause Buckets
|
|
43
|
-
|
|
44
|
-
Allowed buckets:
|
|
45
|
-
|
|
46
|
-
- `third_party_presence_gap`
|
|
47
|
-
- `external_authority_gap`
|
|
48
|
-
- `owned_3p_entity_gap`
|
|
49
|
-
- `submission_feasibility_gap`
|
|
50
|
-
- `sentiment_risk`
|
|
51
|
-
- `not_actionable`
|
|
52
|
-
- `insufficient_evidence`
|
|
53
|
-
|
|
54
|
-
## Action Families
|
|
55
|
-
|
|
56
|
-
Allowed families:
|
|
57
|
-
|
|
58
|
-
- `refresh_owned_3p_profile`
|
|
59
|
-
- `publish_owned_3p_content`
|
|
60
|
-
- `request_submission_inclusion`
|
|
61
|
-
- `update_listing_or_profile`
|
|
62
|
-
- `collect_reviews`
|
|
63
|
-
- `monitor_only`
|
|
64
|
-
- `no_action`
|
|
65
|
-
|
|
66
|
-
Prefer a concrete action when there is a plausible evidence-backed path. Use `monitor_only` or `no_action` when feasibility is too speculative.
|
|
67
|
-
|
|
68
|
-
When `list_geo_strategy_candidates` returns `competitor_presence`, `tenant_presence`, and `actionability`, use those fields as the primary planning frame:
|
|
69
|
-
|
|
70
|
-
- Propose action for `competitor_cited_surface_gap` when competitors are present, tenant presence is missing or weak, and `actionability.actionable=true`.
|
|
71
|
-
- Propose `owned_3p_profile_gap` when the tenant has an owned profile URL but the cited surface shows weak tenant presence.
|
|
72
|
-
- Keep editorial, forum, unknown, or `actionability.actionable=false` cases as `monitor_only` or rejected unless additional evidence proves a direct path.
|
|
73
|
-
|
|
74
|
-
## Output
|
|
75
|
-
|
|
76
|
-
Produce one `third_party` diagnosis object in this shape.
|
|
77
|
-
|
|
78
|
-
Do not write intermediate diagnosis JSON files directly.
|
|
79
|
-
|
|
80
|
-
Do not include `workspaceId`, `runId`, `channel`, final action id, or final `assetType`; the orchestrator can derive them.
|
|
81
|
-
|
|
82
|
-
Use this shape:
|
|
83
|
-
|
|
84
|
-
```json
|
|
85
|
-
{
|
|
86
|
-
"summary": "Short diagnosis.",
|
|
87
|
-
"proposals": [
|
|
88
|
-
{
|
|
89
|
-
"intentId": "intent_123",
|
|
90
|
-
"candidateType": "submission_target",
|
|
91
|
-
"target": { "domain": "example.com", "url": "https://example.com/vendor-list" },
|
|
92
|
-
"rootCauses": [
|
|
93
|
-
{ "bucket": "third_party_presence_gap", "confidence": 0.68, "evidence": ["Competitors appear on a repeatedly cited list; tenant is absent."] }
|
|
94
|
-
],
|
|
95
|
-
"actionFamily": "request_submission_inclusion",
|
|
96
|
-
"operations": ["Prepare human-reviewed inclusion request"],
|
|
97
|
-
"priority": "medium",
|
|
98
|
-
"confidence": "medium",
|
|
99
|
-
"evidence": [
|
|
100
|
-
{ "type": "source", "ref": "citation_domain:example.com", "summary": "Repeatedly cited for weak intent." }
|
|
101
|
-
],
|
|
102
|
-
"whyNow": "Why this matters this week.",
|
|
103
|
-
"risks": ["External owner may not accept submissions."]
|
|
104
|
-
}
|
|
105
|
-
],
|
|
106
|
-
"rejected": [
|
|
107
|
-
{ "ref": "example.org", "reason": "Frequently cited but no action path found." }
|
|
108
|
-
],
|
|
109
|
-
"noActionRationale": "Use when proposals is empty."
|
|
110
|
-
}
|
|
111
|
-
```
|
|
@@ -1,174 +0,0 @@
|
|
|
1
|
-
# Third-Party Diagnosis Workflow
|
|
2
|
-
|
|
3
|
-
## Role
|
|
4
|
-
|
|
5
|
-
The `third_party` channel diagnosis reviews external citation surfaces and decides whether third-party action is warranted.
|
|
6
|
-
|
|
7
|
-
It always participates in the orchestrated run, but it should not force proposals when evidence is not actionable.
|
|
8
|
-
|
|
9
|
-
It covers two action channels:
|
|
10
|
-
|
|
11
|
-
- `owned_3p`: tenant-controlled third-party profiles or channels
|
|
12
|
-
- `submission_3p`: external domains where inclusion, listing, outreach, or profile updates may be possible
|
|
13
|
-
|
|
14
|
-
## Non-Goals
|
|
15
|
-
|
|
16
|
-
- Do not recommend outreach only because a domain is frequently cited.
|
|
17
|
-
- Do not assume a domain is actionable without category or feasibility evidence.
|
|
18
|
-
- Do not replace brand-owned or GEO page fixes with third-party work unless evidence shows the bottleneck is external authority or third-party presence.
|
|
19
|
-
|
|
20
|
-
## Inputs
|
|
21
|
-
|
|
22
|
-
- common run context from the orchestrator
|
|
23
|
-
- tenant `agent/BRAND.md`
|
|
24
|
-
- tenant `agent/STRATEGY.md`
|
|
25
|
-
- tenant `agent/LEARNINGS.md`
|
|
26
|
-
- relevant rows from:
|
|
27
|
-
- `geo_recommendation_quadrants`
|
|
28
|
-
- `geo_intent_citations`
|
|
29
|
-
- `geo_third_party_domains`
|
|
30
|
-
- `geo_competitor_citations`
|
|
31
|
-
- `geo_third_party_sentiment`
|
|
32
|
-
- `geo_strategy_actions_recent`
|
|
33
|
-
- brand social profiles
|
|
34
|
-
- competitor/domain evidence when available
|
|
35
|
-
- social evidence from the scraper SocialAnalyzer for YouTube, Reddit, TikTok, Instagram, and LinkedIn
|
|
36
|
-
- submission/contact feasibility scrape only when needed for non-social pages
|
|
37
|
-
|
|
38
|
-
## Workflow
|
|
39
|
-
|
|
40
|
-
### 1. Review External Citation Pattern
|
|
41
|
-
|
|
42
|
-
Look for:
|
|
43
|
-
|
|
44
|
-
- domains repeatedly cited for weak intents
|
|
45
|
-
- competitor presence on cited domains
|
|
46
|
-
- tenant absence on cited domains
|
|
47
|
-
- negative or weak sentiment on external sources
|
|
48
|
-
- owned third-party profiles that are cited but under-optimized
|
|
49
|
-
|
|
50
|
-
Do not treat citation count alone as actionability.
|
|
51
|
-
|
|
52
|
-
### 2. Classify Candidate Type
|
|
53
|
-
|
|
54
|
-
#### A. Submission Target
|
|
55
|
-
|
|
56
|
-
Use when:
|
|
57
|
-
|
|
58
|
-
- competitors are present on a cited third-party domain
|
|
59
|
-
- tenant brand is absent or weak
|
|
60
|
-
- domain category is directory, review site, marketplace, partner page, or open listicle
|
|
61
|
-
- there is evidence of submission/contact feasibility
|
|
62
|
-
|
|
63
|
-
Potential action:
|
|
64
|
-
|
|
65
|
-
- create listing
|
|
66
|
-
- update profile
|
|
67
|
-
- request inclusion
|
|
68
|
-
- collect reviews
|
|
69
|
-
|
|
70
|
-
#### B. Competitor-Cited Surface Gap
|
|
71
|
-
|
|
72
|
-
Use when `list_geo_strategy_candidates` reports:
|
|
73
|
-
|
|
74
|
-
- `candidate_type=competitor_cited_surface_gap`
|
|
75
|
-
- `competitor_presence.status=present`
|
|
76
|
-
- `tenant_presence.status=missing` or `weak`
|
|
77
|
-
- `actionability.actionable=true`
|
|
78
|
-
|
|
79
|
-
Potential action:
|
|
80
|
-
|
|
81
|
-
- request inclusion
|
|
82
|
-
- create or update listing
|
|
83
|
-
- collect reviews on the cited surface
|
|
84
|
-
|
|
85
|
-
#### C. Owned 3P Profile Gap
|
|
86
|
-
|
|
87
|
-
Use when:
|
|
88
|
-
|
|
89
|
-
- `candidate_type=owned_3p_profile_gap`
|
|
90
|
-
- `tenant_presence.owned_profile_url` is present
|
|
91
|
-
- owned third-party page is cited, competitor-cited, or likely relevant
|
|
92
|
-
- tenant messaging, category terms, proof, or content coverage is weak
|
|
93
|
-
|
|
94
|
-
Potential action:
|
|
95
|
-
|
|
96
|
-
- update owned profile
|
|
97
|
-
- publish owned-channel post
|
|
98
|
-
- add category keywords and proof
|
|
99
|
-
|
|
100
|
-
For YouTube, Reddit, TikTok, Instagram, and LinkedIn URLs, inspect the content with `social_analyze`.
|
|
101
|
-
Do not use generic web scraping for those platforms.
|
|
102
|
-
|
|
103
|
-
#### D. Authority Source Monitor
|
|
104
|
-
|
|
105
|
-
Use when:
|
|
106
|
-
|
|
107
|
-
- domain is highly cited
|
|
108
|
-
- source is not directly controllable
|
|
109
|
-
- no clear submission path exists
|
|
110
|
-
|
|
111
|
-
Potential action:
|
|
112
|
-
|
|
113
|
-
- `no_action`
|
|
114
|
-
- monitor only
|
|
115
|
-
- PR/analyst relations note in `rationale.md`
|
|
116
|
-
|
|
117
|
-
#### E. Negative Or Risk Domain
|
|
118
|
-
|
|
119
|
-
Use when:
|
|
120
|
-
|
|
121
|
-
- sentiment is negative
|
|
122
|
-
- domain appears repeatedly
|
|
123
|
-
- factual correction or review response may be needed
|
|
124
|
-
|
|
125
|
-
Potential action:
|
|
126
|
-
|
|
127
|
-
- monitor sentiment
|
|
128
|
-
- prepare factual correction
|
|
129
|
-
- flag for human review
|
|
130
|
-
|
|
131
|
-
### 3. Pick Root Cause Buckets
|
|
132
|
-
|
|
133
|
-
Allowed buckets:
|
|
134
|
-
|
|
135
|
-
- `third_party_presence_gap`
|
|
136
|
-
- `external_authority_gap`
|
|
137
|
-
- `owned_3p_entity_gap`
|
|
138
|
-
- `submission_feasibility_gap`
|
|
139
|
-
- `sentiment_risk`
|
|
140
|
-
- `not_actionable`
|
|
141
|
-
- `insufficient_evidence`
|
|
142
|
-
|
|
143
|
-
### 4. Route Action
|
|
144
|
-
|
|
145
|
-
Allowed action families:
|
|
146
|
-
|
|
147
|
-
- `refresh_owned_3p_profile`
|
|
148
|
-
- `publish_owned_3p_content`
|
|
149
|
-
- `request_submission_inclusion`
|
|
150
|
-
- `update_listing_or_profile`
|
|
151
|
-
- `collect_reviews`
|
|
152
|
-
- `monitor_only`
|
|
153
|
-
- `no_action`
|
|
154
|
-
|
|
155
|
-
Prefer a concrete action when the candidate carries a plausible evidence-backed path. Use `monitor_only` or `no_action` when feasibility is speculative.
|
|
156
|
-
|
|
157
|
-
### 5. Output JSON
|
|
158
|
-
|
|
159
|
-
Return:
|
|
160
|
-
|
|
161
|
-
- channel summary
|
|
162
|
-
- proposals
|
|
163
|
-
- rejected candidates
|
|
164
|
-
- no-action rationale
|
|
165
|
-
|
|
166
|
-
If no third-party action is warranted, return an empty `proposals` array and explain why.
|
|
167
|
-
|
|
168
|
-
## Guardrails
|
|
169
|
-
|
|
170
|
-
- Frequency is not actionability.
|
|
171
|
-
- Citation count alone does not justify outreach.
|
|
172
|
-
- Prefer `monitor_only` when feasibility is unknown.
|
|
173
|
-
- Require evidence before labeling a domain as submission-friendly.
|
|
174
|
-
- Do not emit third-party actions that the product cannot execute or review.
|