anymorph 0.4.0 → 0.6.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.
Files changed (76) hide show
  1. package/README.md +3 -3
  2. package/dist/index.js +79 -6
  3. package/package.json +1 -1
  4. package/dist/skillpacks/geo/scaffold/AGENTS.md +0 -38
  5. package/dist/skillpacks/geo/scaffold/CLAUDE.md +0 -33
  6. package/dist/skillpacks/geo/shared/evidence-principles.md +0 -35
  7. package/dist/skillpacks/geo/shared/geo-principles.md +0 -281
  8. package/dist/skillpacks/geo/shared/vertical-playbooks/beauty.md +0 -65
  9. package/dist/skillpacks/geo/shared/vertical-playbooks/commerce.md +0 -65
  10. package/dist/skillpacks/geo/shared/vertical-playbooks/ota.md +0 -62
  11. package/dist/skillpacks/geo/shared/vertical-playbooks/saas.md +0 -64
  12. package/dist/skillpacks/geo/skills/brand-owned-diagnosis/SKILL.md +0 -54
  13. package/dist/skillpacks/geo/skills/brand-owned-diagnosis/agents/openai.yaml +0 -4
  14. package/dist/skillpacks/geo/skills/brand-owned-diagnosis/references/diagnosis-contract.md +0 -95
  15. package/dist/skillpacks/geo/skills/brand-owned-diagnosis/references/workflow.md +0 -194
  16. package/dist/skillpacks/geo/skills/geo-generating-actions/SKILL.md +0 -188
  17. package/dist/skillpacks/geo/skills/geo-generating-actions/agents/openai.yaml +0 -4
  18. package/dist/skillpacks/geo/skills/geo-generating-actions/references/orchestrator.workflow.md +0 -440
  19. package/dist/skillpacks/geo/skills/geo-generating-actions/scripts/geo-scaffold.mjs +0 -358
  20. package/dist/skillpacks/geo/skills/geo-generating-actions/scripts/geo.mjs +0 -66
  21. package/dist/skillpacks/geo/skills/geo-initializing-strategy/SKILL.md +0 -50
  22. package/dist/skillpacks/geo/skills/geo-initializing-strategy/agents/openai.yaml +0 -4
  23. package/dist/skillpacks/geo/skills/geo-initializing-strategy/references/external-authority-diagnosis.md +0 -66
  24. package/dist/skillpacks/geo/skills/geo-initializing-strategy/references/foundation-diagnosis.md +0 -86
  25. package/dist/skillpacks/geo/skills/geo-initializing-strategy/references/memory-contract.md +0 -15
  26. package/dist/skillpacks/geo/skills/geo-initializing-strategy/references/semantic-clusters-diagnosis.md +0 -58
  27. package/dist/skillpacks/geo/skills/geo-initializing-strategy/references/strategy-map-contract.md +0 -26
  28. package/dist/skillpacks/geo/skills/geo-initializing-strategy/references/visibility-diagnosis.md +0 -50
  29. package/dist/skillpacks/geo/skills/geo-local-setup/SKILL.md +0 -66
  30. package/dist/skillpacks/geo/skills/geo-local-setup/agents/openai.yaml +0 -4
  31. package/dist/skillpacks/geo/skills/geo-page-writer/SKILL.md +0 -81
  32. package/dist/skillpacks/geo/skills/geo-page-writer/agents/openai.yaml +0 -4
  33. package/dist/skillpacks/geo/skills/geo-page-writer/references/research.md +0 -61
  34. package/dist/skillpacks/geo/skills/geo-page-writer/references/validation.md +0 -59
  35. package/dist/skillpacks/geo/skills/geo-page-writer/references/writing.md +0 -55
  36. package/dist/skillpacks/geo/skills/geo-page-writer/scripts/check-page-mdx.mjs +0 -210
  37. package/dist/skillpacks/geo/skills/geo-page-writer/scripts/collect-page-sources.mjs +0 -303
  38. package/dist/skillpacks/geo/skills/geo-pages-diagnosis/SKILL.md +0 -51
  39. package/dist/skillpacks/geo/skills/geo-pages-diagnosis/agents/openai.yaml +0 -4
  40. package/dist/skillpacks/geo/skills/geo-pages-diagnosis/references/diagnosis-contract.md +0 -125
  41. package/dist/skillpacks/geo/skills/geo-pages-diagnosis/references/workflow.md +0 -269
  42. package/dist/skillpacks/geo/skills/geo-writer/SKILL.md +0 -234
  43. package/dist/skillpacks/geo/skills/geo-writer/agents/openai.yaml +0 -4
  44. package/dist/skillpacks/geo/skills/geo-writer/references/content-writer-contract.md +0 -316
  45. package/dist/skillpacks/geo/skills/geo-writer/references/direct-sql.md +0 -187
  46. package/dist/skillpacks/geo/skills/geo-writer/references/seo-geo-insights.md +0 -269
  47. package/dist/skillpacks/geo/skills/seo-ecommerce-opportunity/SKILL.md +0 -82
  48. package/dist/skillpacks/geo/skills/seo-ecommerce-opportunity/agents/openai.yaml +0 -5
  49. package/dist/skillpacks/geo/skills/seo-ecommerce-opportunity/references/ecommerce-rules.md +0 -31
  50. package/dist/skillpacks/geo/skills/seo-internal-link-opportunity/SKILL.md +0 -57
  51. package/dist/skillpacks/geo/skills/seo-internal-link-opportunity/agents/openai.yaml +0 -5
  52. package/dist/skillpacks/geo/skills/seo-internal-link-opportunity/references/link-rules.md +0 -28
  53. package/dist/skillpacks/geo/skills/seo-opportunity-audit/SKILL.md +0 -141
  54. package/dist/skillpacks/geo/skills/seo-opportunity-audit/agents/openai.yaml +0 -5
  55. package/dist/skillpacks/geo/skills/seo-opportunity-audit/references/action-contract.md +0 -62
  56. package/dist/skillpacks/geo/skills/seo-opportunity-audit/scripts/seo-toolkit.mjs +0 -248
  57. package/dist/skillpacks/geo/skills/seo-page-diagnosis/SKILL.md +0 -56
  58. package/dist/skillpacks/geo/skills/seo-page-diagnosis/agents/openai.yaml +0 -5
  59. package/dist/skillpacks/geo/skills/seo-page-diagnosis/references/page-checks.md +0 -38
  60. package/dist/skillpacks/geo/skills/seo-serp-opportunity-research/SKILL.md +0 -66
  61. package/dist/skillpacks/geo/skills/seo-serp-opportunity-research/agents/openai.yaml +0 -5
  62. package/dist/skillpacks/geo/skills/seo-serp-opportunity-research/references/page-type-taxonomy.md +0 -40
  63. package/dist/skillpacks/geo/skills/seo-serp-opportunity-research/references/serp-methodology.md +0 -38
  64. package/dist/skillpacks/geo/skills/seo-technical-diagnosis/SKILL.md +0 -64
  65. package/dist/skillpacks/geo/skills/seo-technical-diagnosis/agents/openai.yaml +0 -5
  66. package/dist/skillpacks/geo/skills/seo-technical-diagnosis/references/checks.md +0 -58
  67. package/dist/skillpacks/geo/skills/third-party-diagnosis/SKILL.md +0 -54
  68. package/dist/skillpacks/geo/skills/third-party-diagnosis/agents/openai.yaml +0 -4
  69. package/dist/skillpacks/geo/skills/third-party-diagnosis/references/diagnosis-contract.md +0 -111
  70. package/dist/skillpacks/geo/skills/third-party-diagnosis/references/workflow.md +0 -174
  71. package/dist/skillpacks/geo/skills/third-party-execution-planning/SKILL.md +0 -64
  72. package/dist/skillpacks/geo/skills/third-party-execution-planning/agents/openai.yaml +0 -4
  73. package/dist/skillpacks/geo/skills/third-party-execution-planning/references/execution-contract.md +0 -90
  74. package/dist/skillpacks/geo/skills/third-party-execution-planning/references/non-social-surface-playbooks.md +0 -123
  75. package/dist/skillpacks/geo/skills/third-party-execution-planning/references/reddit-rules.md +0 -69
  76. package/dist/skillpacks/geo/skills/third-party-execution-planning/references/social-platform-playbooks.md +0 -59
@@ -1,58 +0,0 @@
1
- # Technical Checks
2
-
3
- ## Crawlability
4
-
5
- - `robots.txt` exists, parses, references sitemap, and does not block important
6
- resources.
7
- - Search crawlers and AI crawlers are distinguished:
8
- - Googlebot and Bingbot affect search indexing.
9
- - GPTBot, ClaudeBot, PerplexityBot, ChatGPT-User, CCBot, Google-Extended, and
10
- Bytespider affect AI discovery/training/browsing differently.
11
- - Key pages must be reachable within reasonable crawl depth.
12
-
13
- ## Indexability
14
-
15
- - status code is 200 for canonical pages.
16
- - no accidental `noindex`.
17
- - canonical is present, stable, and not contradictory.
18
- - raw HTML and rendered DOM agree on canonical and robots directives.
19
- - duplicate or parameter URLs should resolve to canonical pages.
20
-
21
- ## Sitemap
22
-
23
- - sitemap index and nested sitemaps parse.
24
- - only canonical, indexable, 200 URLs are included.
25
- - stale or orphan URLs are flagged.
26
-
27
- ## JavaScript Rendering
28
-
29
- - title, meta description, canonical, robots, H1, primary content, and JSON-LD
30
- should exist in initial HTML when possible.
31
- - non-200 pages must not rely on JS-injected SEO elements.
32
- - raw/rendered conflicts are high risk.
33
-
34
- ## Structured Data
35
-
36
- - detect JSON-LD first, then microdata/RDFa when needed.
37
- - Organization, WebSite, BreadcrumbList, Article, Product, Offer, LocalBusiness,
38
- and SoftwareApplication are common valid opportunities.
39
- - Do not recommend deprecated or ineligible rich-result schema for Google value.
40
- - Ecommerce Product schema belongs to ecommerce opportunity when product evidence
41
- is needed.
42
-
43
- ## Performance and Mobile
44
-
45
- - use INP, not FID.
46
- - LCP target: under 2.5s.
47
- - INP target: under 200ms.
48
- - CLS target: under 0.1.
49
- - field data beats lab data; absent field data is a limitation, not a failure.
50
-
51
- ## Security and URL Structure
52
-
53
- - HTTPS enforced.
54
- - no mixed content.
55
- - no long redirect chains.
56
- - consistent trailing slash and host canonicalization.
57
- - descriptive URLs without unnecessary content query params.
58
-
@@ -1,54 +0,0 @@
1
- ---
2
- name: third-party-diagnosis
3
- description: Use when diagnosing third-party citation surfaces, external authority gaps, competitor presence on external sources, profile/listing opportunities, reviews, or social sentiment risks.
4
- ---
5
-
6
- # Third-Party Diagnosis
7
-
8
- Use this skill for directly callable Earn / third-party diagnosis.
9
-
10
- The output is a compact diagnosis plus action candidates for `assetType="third_party"`.
11
-
12
- ## Scope
13
-
14
- Diagnose:
15
-
16
- - Cited third-party domains.
17
- - Competitor presence on external sources.
18
- - Tenant-owned third-party profiles.
19
- - Submission, listing, review, and inclusion opportunities.
20
- - External sentiment risk on social or community surfaces.
21
-
22
- Do not recommend third-party work just because a domain is frequently cited. Prefer no action when the path is speculative.
23
-
24
- ## Workflow
25
-
26
- Read these references before producing proposals:
27
-
28
- - `references/workflow.md` for the full third-party product workflow, actionability boundaries, candidate types, evidence gates, social handling, and no-action cases.
29
- - `references/diagnosis-contract.md` for the exact runtime diagnosis contract and artifact submission shape.
30
-
31
- 1. Read shared run context and the third-party candidate slice.
32
- 2. Use `get_citation_intelligence` before lower-level citation calls.
33
- 3. Use `list_third_party_candidates` for actionable domain slices.
34
- 4. Use `get_geo_intent_diagnostic` when intent-level citation behavior matters.
35
- 5. Use `social_analyze` for YouTube, Reddit, TikTok, Instagram, or LinkedIn URLs.
36
- 6. Use `web_scrape` only for specific non-social pages where feasibility or profile quality must be checked.
37
- 7. Use `web_search` only to find an official submission/profile path or verify actionability.
38
-
39
- ## Output Contract
40
-
41
- Each proposal should include:
42
-
43
- - exact third-party source domain.
44
- - exact publish surface URL when known.
45
- - content format and content angle.
46
- - 2-4 concrete execution steps.
47
- - expected outcome.
48
- - root cause, priority, confidence, risks, and evidence.
49
-
50
- Allowed no-action outcomes:
51
-
52
- - external path is not actionable.
53
- - citation signal exists but no credible submission/profile/update path exists.
54
- - owned or generated page coverage is the clearer bottleneck.
@@ -1,4 +0,0 @@
1
- interface:
2
- display_name: "Third-Party Diagnosis"
3
- short_description: "Diagnose external citation and Earn opportunities."
4
- default_prompt: "Use $third-party-diagnosis to diagnose third-party GEO opportunities for this workspace."
@@ -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_third_party_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_third_party_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_third_party_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.
@@ -1,64 +0,0 @@
1
- ---
2
- name: third-party-execution-planning
3
- description: Use when turning a selected third-party GEO Earn action into a concrete human execution plan for social platforms, directories, review sites, marketplaces, partner pages, open listicles, or owned third-party profiles.
4
- ---
5
-
6
- # Third-Party Execution Planning
7
-
8
- Use this skill after a `third_party` GEO action has already been selected.
9
-
10
- This skill does not diagnose whether an Earn action should exist. It enriches one approved third-party action into an operator-ready work order for a human operator.
11
-
12
- ## Scope
13
-
14
- Plan execution for:
15
-
16
- - Reddit posts or comment replies.
17
- - YouTube creator outreach.
18
- - TikTok creator briefs.
19
- - Instagram Reel or carousel briefs.
20
- - LinkedIn posts, comments, or outreach.
21
- - Directory, marketplace, and partner listing submissions.
22
- - Review-site profile refreshes and review collection motions.
23
- - Open listicle or editorial inclusion requests.
24
- - Tenant-owned third-party profile updates.
25
-
26
- Do not recommend automated posting, fake engagement, vote/comment coordination, review manipulation, undisclosed paid promotion, spam, or impersonation.
27
-
28
- ## Workflow
29
-
30
- Read these references before producing a plan:
31
-
32
- - `references/execution-contract.md` for the exact output contract.
33
- - `references/reddit-rules.md` for Reddit rule checks and draft format.
34
- - `references/social-platform-playbooks.md` for social platform planning guidance.
35
- - `references/non-social-surface-playbooks.md` for directory, review, listing, marketplace, partner, and editorial inclusion planning guidance.
36
-
37
- 1. Start from the provided `third_party` action, policy snapshot, and backend execution context.
38
- 2. Prefer backend-provided cited threads, URLs, creator profiles, and candidate surfaces before broad discovery.
39
- 3. Use `firecrawl_search` for search and discovery.
40
- 4. Use `social_analyze` for Reddit, YouTube, TikTok, Instagram, and LinkedIn URLs.
41
- 5. Use specific non-social URLs, submission pages, listing pages, or profile pages when the action targets directories, review sites, marketplaces, partner pages, or open listicles.
42
- 6. Select one best execution surface when evidence is sufficient.
43
- 7. Produce a dashboard-ready work order with surfaces, execution type, required assets, draft, policy checks, execution steps, completion signal, impact signal, and fallback.
44
- 8. If evidence is thin, platform rules block execution, or a non-social submission path is not verifiable, return a conservative plan with open questions or a do-not-post/no-submit path.
45
-
46
- ## Output Contract
47
-
48
- Return a third-party work order:
49
-
50
- - `assetType`: always `third_party`.
51
- - `surfaces`: exact publish, reply, creator, or discovery surfaces.
52
- - `executionType`: one specific execution pattern.
53
- - `requiredAssets`: what the operator needs before executing.
54
- - `draft.format`: concrete content type.
55
- - `draft.angle`: audience-facing angle.
56
- - `draft.body`: concise execution brief or copy-paste-ready Reddit block.
57
- - `draft.tone`: human operator tone.
58
- - `policyChecks`: platform, review, disclosure, editorial, or evidence constraints.
59
- - `executionSteps`: 2-5 ordered manual steps.
60
- - `completionSignal`: how the operator knows the work was completed.
61
- - `impactSignal`: how the team should observe GEO/business impact.
62
- - `fallback`: what to do if the main execution path is blocked.
63
-
64
- Keep the output executable by a human operator.
@@ -1,4 +0,0 @@
1
- interface:
2
- display_name: "Third-Party Execution Planning"
3
- short_description: "Turn one Earn action into a human execution plan."
4
- default_prompt: "Use $third-party-execution-planning to enrich this third-party GEO action into a human execution plan."
@@ -1,90 +0,0 @@
1
- # Third-Party Execution Contract
2
-
3
- Use this contract when enriching one selected `assetType="third_party"` GEO action into an operator-ready work order.
4
-
5
- ## Inputs
6
-
7
- - `workspaceId`
8
- - optional `runId`
9
- - one `GeoStrategyAction`
10
- - optional policy snapshot
11
- - optional backend execution context
12
-
13
- The action is already selected. Do not re-run third-party diagnosis.
14
-
15
- ## Tools
16
-
17
- Use:
18
-
19
- 1. `firecrawl_search` for search and discovery.
20
- 2. `social_analyze` for Reddit, YouTube, TikTok, Instagram, and LinkedIn URLs.
21
- 3. `web_scrape` or equivalent page reading only for specific non-social pages where submission feasibility, listing quality, or profile quality must be checked.
22
-
23
- Do not use social scraping as a substitute for platform rule checks when Reddit posting or replying is proposed.
24
-
25
- ## Output
26
-
27
- Return JSON with:
28
-
29
- ```json
30
- {
31
- "assetType": "third_party",
32
- "executionType": "claim_profile | update_profile | request_inclusion | ethical_review_motion | factual_correction | editorial_pitch | owned_profile_refresh | owned_channel_content | social_reply | social_creator_outreach | social_post | no_submit",
33
- "surfaces": [
34
- {
35
- "name": "string",
36
- "url": "string | null",
37
- "searchQueries": ["string"]
38
- }
39
- ],
40
- "whyThisSurface": "string",
41
- "requiredAssets": ["string"],
42
- "draft": {
43
- "format": "string",
44
- "angle": "string",
45
- "body": "string | null",
46
- "tone": "string | null"
47
- },
48
- "policyChecks": [
49
- {
50
- "name": "string",
51
- "status": "clear | blocked | unknown",
52
- "reason": "string"
53
- }
54
- ],
55
- "executionSteps": ["string"],
56
- "completionSignal": "string | null",
57
- "impactSignal": "string | null",
58
- "fallback": "string | null"
59
- }
60
- ```
61
-
62
- ## Requirements
63
-
64
- - `surfaces` must include at least one exact surface or a rerunnable discovery surface.
65
- - Prefer exact URLs over discovery queries. Use the URL selection hierarchy in `non-social-surface-playbooks.md` for non-social actions.
66
- - `executionType` must match the selected surface and action family.
67
- - `requiredAssets` must name concrete inputs the operator needs, such as product category, logo, screenshots, proof points, customer list, policy URL, or evidence packet.
68
- - `policyChecks` must include review, disclosure, platform, editorial, or evidence constraints when relevant. Use `unknown` rather than inventing policies.
69
- - `executionSteps` must contain 2-5 ordered manual steps.
70
- - `completionSignal` must describe the immediate operational completion state.
71
- - `impactSignal` must describe the downstream GEO/business signal and time window when possible.
72
- - `fallback` must say what to do if the surface cannot be submitted, claimed, updated, or contacted.
73
- - Do not invent platform rules, creator contacts, submission forms, review policies, metrics, brand claims, or user experiences.
74
- - If evidence is thin, lower confidence in the draft body and list open questions.
75
-
76
- ## Safety Boundaries
77
-
78
- Never recommend:
79
-
80
- - automated posting.
81
- - fake engagement.
82
- - vote/comment brigading.
83
- - review manipulation.
84
- - undisclosed paid promotion.
85
- - undisclosed incentivized reviews.
86
- - review gating or sentiment-conditioned review requests.
87
- - employee, family, or insider reviews without clear relationship disclosure.
88
- - spam.
89
- - hiding AI assistance to evade moderation.
90
- - impersonation or fabricated personal experience.
@@ -1,123 +0,0 @@
1
- # Non-Social Third-Party Surface Playbooks
2
-
3
- Use these playbooks for `third_party` actions outside Reddit, YouTube, TikTok, Instagram, or LinkedIn.
4
-
5
- The goal is an operator-ready work order: a human should know exactly where to go, what to prepare, what to submit or change, what not to do, and how to judge completion.
6
-
7
- ## URL Selection Hierarchy
8
-
9
- Choose the most actionable URL available:
10
-
11
- 1. Existing owned profile or listing URL.
12
- 2. Claim, edit, submission, or partner application URL.
13
- 3. Category, directory, review, marketplace, or list page where the tenant should appear.
14
- 4. Contact, corrections, editorial guidelines, or pitch URL.
15
- 5. Rerunnable discovery query only when no exact URL is available.
16
-
17
- If the URL is only a broad homepage, explain the missing surface in `fallback`.
18
-
19
- ## Decision Matrix
20
-
21
- - Tenant absent and a claim/submission path exists: `executionType=claim_profile` or `request_inclusion`; final action usually uses `operation=create`.
22
- - Tenant profile exists but is stale, thin, miscategorized, or missing proof: `executionType=update_profile`; final action usually uses `operation=update`.
23
- - Review-site profile exists and real customers can be asked neutrally: `executionType=ethical_review_motion`; final action usually uses `operation=create`.
24
- - Article/list has a factual error or outdated tenant fact: `executionType=factual_correction`; final action usually uses `operation=update`.
25
- - Article/list lacks the tenant, criteria fit is credible, and contact/editorial path exists: `executionType=editorial_pitch`; final action usually uses `operation=create`.
26
- - Tenant controls the external profile/channel: `executionType=owned_profile_refresh` or `owned_channel_content`.
27
- - No visible execution path, no proof, or policy risk is unresolved: `executionType=no_submit`; do not turn it into a final action unless the product explicitly supports open-question tasks.
28
-
29
- ## Claim Or Create Profile
30
-
31
- Use for directory, marketplace, partner, vendor catalog, integration list, or agency directory surfaces where the tenant is missing.
32
-
33
- Work order must include:
34
-
35
- - target category/list page and claim/submission/contact URL when known.
36
- - evidence that the tenant fits the category.
37
- - required assets: product or company name, objective description, category, logo, destination URL, screenshots or media, proof points, pricing/integration facts only when verified.
38
- - draft body written as a concise submission or partner/contact request, not marketing copy.
39
- - completion signal: profile submitted, claim requested, partner application sent, or owner acknowledged.
40
- - impact signal: listing live, profile indexed, referral traffic, external mention, or AI citation movement in 30-90 days.
41
-
42
- Quality bar:
43
-
44
- - Use objective category/audience/use-case language.
45
- - Avoid first-person copy, superlatives, unsupported comparisons, CTAs inside descriptions, and unverifiable claims.
46
- - Do not recommend submission if the product is not publicly available or category fit is unclear.
47
-
48
- ## Improve Existing Profile
49
-
50
- Use when a third-party listing/profile exists but is weak, stale, incomplete, miscategorized, or missing proof.
51
-
52
- Work order must include:
53
-
54
- - exact profile URL.
55
- - fields to update: category, description, screenshots, video, pricing, FAQ, proof points, integrations, product links, or discussion responses.
56
- - required assets for each field.
57
- - draft body with replacement copy or concise edit instructions.
58
- - completion signal: update submitted, profile edited, correction approved, or profile completeness improved.
59
- - impact signal: indexed update, profile traffic, category visibility, review-site visibility, or AI citation movement.
60
-
61
- Quality bar:
62
-
63
- - Favor objective definitions, category terms, audience, and use cases.
64
- - Keep profile copy factual and scannable.
65
- - Screenshots should show the real product/interface when relevant.
66
- - Do not claim "best", "fastest", or similar unless the source evidence proves it and the platform permits it.
67
-
68
- ## Ethical Review Motion
69
-
70
- Use when review volume, recency, profile trust, or competitor review advantage is a credible bottleneck.
71
-
72
- Work order must include:
73
-
74
- - exact review profile/category URL.
75
- - platform review policy URL or `unknown` policy check.
76
- - neutral customer segment to ask, such as recent active customers or completed implementation cohort.
77
- - draft request that asks for honest feedback from all eligible customers, not only happy customers.
78
- - completion signal: neutral review request launched or review program checklist created.
79
- - impact signal: authentic review count/recency movement, profile trust movement, rating distribution, or AI citation movement in 30-90 days.
80
-
81
- Never recommend:
82
-
83
- - incentives conditioned on review sentiment.
84
- - asking only happy customers.
85
- - discouraging negative reviews.
86
- - asking customers to include specific phrases, employees, ratings, or keywords.
87
- - employee, family, fake, AI-generated, or insider reviews without clear relationship disclosure.
88
- - payment or benefits for changing or removing a negative review.
89
-
90
- ## Editorial Inclusion Or Correction
91
-
92
- Use for open listicles, buyer guides, analyst-style pages, comparison articles, or editorial pages.
93
-
94
- Work order must include:
95
-
96
- - exact article/list URL and contact/corrections/editorial URL when known.
97
- - whether the motion is correction, inclusion, expert quote, or evidence packet.
98
- - why the ask serves the publisher's audience, not only the tenant.
99
- - evidence packet: factual proof, category fit, original data, customer proof, quote, or concise source links.
100
- - draft body under 300 words unless the operator needs a longer evidence packet.
101
- - completion signal: correction request sent, editor acknowledged, pitch sent, or evidence packet delivered.
102
- - impact signal: article updated, new mention/backlink, editorial reply, or AI citation movement.
103
-
104
- Quality bar:
105
-
106
- - Lead with the factual gap or reader value.
107
- - Keep the pitch short, specific, and evidence-led.
108
- - Do not pitch weak stories, generic inclusion requests, or pages with no contact/correction path.
109
- - Respect "not interested" responses and stop after a small number of polite follow-ups.
110
-
111
- ## Owned Third-Party Profile Refresh
112
-
113
- Use when the tenant controls the external profile or channel.
114
-
115
- Work order must include:
116
-
117
- - exact owned profile URL.
118
- - weak fields or stale surfaces to update.
119
- - required assets: current positioning, proof points, links, media, category terms, product/service coverage, or post brief.
120
- - completion signal: profile update live or owned-channel post published.
121
- - impact signal: indexed profile/post, external engagement, profile completeness, referral traffic, or AI citation movement.
122
-
123
- Do not use this playbook for the tenant's own website. Website work belongs to `brand_owned` or `geo_page`.