#
tokens: 14838/50000 14/14 files
lines: on (toggle) GitHub
raw markdown copy reset
# Directory Structure

```
├── .dockerignore
├── .gitignore
├── Dockerfile
├── license
├── pyproject.toml
├── README.md
├── requirements.txt
├── smithery.yaml
├── src
│   └── osp_marketing_tools
│       ├── __init__.py
│       ├── codes-llm.md
│       ├── guide-llm.md
│       ├── meta-llm.md
│       ├── on-page-seo-guide.md
│       ├── product-value-map-llm.md
│       └── server.py
└── uv.lock
```

# Files

--------------------------------------------------------------------------------
/.dockerignore:
--------------------------------------------------------------------------------

```
 1 | # .dockerignore file for the project
 2 | 
 3 | # Ignore version control files
 4 | .git/
 5 | .gitignore
 6 | 
 7 | # Ignore Python cache and compiled files
 8 | __pycache__/
 9 | *.pyc
10 | *.pyo
11 | .pytest_cache/
12 | .coverage
13 | 
14 | # Ignore IDE and editor files
15 | .idea/
16 | .vscode/
17 | *.swp
18 | *.swo
19 | 
20 | # Ignore build and test artifacts
21 | dist/
22 | build/
23 | out/
24 | test/
25 | tests/
26 | *_test.go
27 | 
28 | # Ignore environment and secret files
29 | .env*
30 | *.env
31 | *.pem
32 | *.key
33 | *.crt
34 | config.local.*
35 | *.local.yml
36 | 
37 | # Ignore documentation and temporary files
38 | docs/
39 | *.md
40 | README*
41 | tmp/
42 | temp/
43 | *.tmp
44 | .local/
45 | local/
46 | 
47 | # Ignore Docker-related files
48 | Dockerfile*
49 | docker-compose*
50 | 
51 | # Ignore project-specific files
52 | uv.lock
53 | 
```

--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------

```
 1 | # Byte-compiled / optimized / DLL files
 2 | __pycache__/
 3 | *.py[cod]
 4 | *$py.class
 5 | 
 6 | # C extensions
 7 | *.so
 8 | 
 9 | # Distribution / packaging
10 | dist/
11 | build/
12 | *.egg-info/
13 | *.egg
14 | 
15 | # Virtual environments
16 | venv/
17 | env/
18 | ENV/
19 | .env/
20 | .venv/
21 | 
22 | # IDE specific files
23 | .idea/
24 | .vscode/
25 | *.swp
26 | *.swo
27 | .project
28 | .pydevproject
29 | .settings/
30 | 
31 | # Jupyter Notebook
32 | .ipynb_checkpoints
33 | *.ipynb
34 | 
35 | # Testing
36 | .coverage
37 | htmlcov/
38 | .tox/
39 | .pytest_cache/
40 | nosetests.xml
41 | coverage.xml
42 | 
43 | # Documentation
44 | docs/_build/
45 | site/
46 | 
47 | # Logs and databases
48 | *.log
49 | *.sqlite
50 | *.db
51 | 
52 | # Local development settings
53 | .env
54 | .env.local
55 | .env.*.local
56 | 
57 | # OS generated files
58 | .DS_Store
59 | .DS_Store?
60 | ._*
61 | .Spotlight-V100
62 | .Trashes
63 | ehthumbs.db
64 | Thumbs.db
65 | 
66 | # mypy
67 | .mypy_cache/
68 | .dmypy.json
69 | dmypy.json
70 | 
71 | # pipenv
72 | Pipfile.lock
73 | 
74 | # poetry
75 | poetry.lock
76 | 
```

--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------

```markdown
  1 | # Open Strategy Partners (OSP) Marketing Tools for LLMs
  2 | 
  3 | ![](https://badge.mcpx.dev?type=server 'MCP Server') 
  4 | 
  5 | A comprehensive suite of tools for technical marketing content creation, optimization, and product positioning based on [Open Strategy Partners](https://openstrategypartners.com)' proven methodologies. 
  6 | 
  7 | This software is based on the [Model Context Protocol (MCP)](https://openstrategypartners.com/blog/the-model-context-protocol-unify-your-marketing-stack-with-ai/) and is can be used by any LLM client that supports the MCP. 
  8 | 
  9 | As of early February 2025, the LLM clients that support MCP include:
 10 | - [Claude desktop app](https://claude.ai/download) is the easiest to use for the less technical among us (and it is made by the inventors of the MCP).
 11 | - [Cursor IDE](https://www.cursor.com/) is very popular with our developer friends.
 12 | - [LibreChat](https://www.librechat.ai/) is an excellent open source AI/LLM interface app.
 13 | 
 14 | Read our vision paper on how [Agentic AI will benefit marketing](https://openstrategypartners.com/blog/mastering-llm-interaction-preparing-marketing-teams-for-agentic-ai-success-with-mcp/).
 15 | 
 16 | ## Features
 17 | 
 18 | ### 1. OSP Product Value Map Generator
 19 | Generate structured [OSP product value maps](https://openstrategypartners.com/the-osp-value-map/) that effectively communicate your product's worth and positioning:
 20 | - Tagline creation and refinement
 21 | - Position statements across market, technical, UX, and business dimensions
 22 | - Persona development with roles, challenges, and needs
 23 | - Value case documentation
 24 | - Feature categorization and organization
 25 | - Hierarchical structure for features, areas, and categories
 26 | - Validation system for completeness and consistency
 27 | 
 28 | ### 2. OSP Meta Information Generator
 29 | Create optimized metadata for web content:
 30 | - Article titles (H1) with proper keyword placement
 31 | - Meta titles optimized for search (50-60 characters)
 32 | - Meta descriptions with clear value propositions (155-160 characters)
 33 | - SEO-friendly URL slugs
 34 | - Search intent analysis
 35 | - Mobile display optimization
 36 | - Click-through rate enhancement suggestions
 37 | 
 38 | ### 3. OSP Content Editing Codes
 39 | Apply [OSP's semantic editing codes](https://openstrategypartners.com/resources/the-osp-editing-codes/) for comprehensive content review:
 40 | - Scope and narrative structure analysis
 41 | - Flow and readability enhancement
 42 | - Style and phrasing optimization
 43 | - Word choice and grammar verification
 44 | - Technical accuracy validation
 45 | - Inclusive language guidance
 46 | - Constructive feedback generation with before/after examples
 47 | 
 48 | ### 4. OSP Technical Writing Guide
 49 | Systematic approach to creating high-quality technical content:
 50 | - Narrative structure development
 51 | - Flow optimization
 52 | - Style guidelines
 53 | - Technical accuracy verification
 54 | - Content type-specific guidance (tutorials, reference docs, API documentation)
 55 | - Accessibility considerations
 56 | - Internationalization best practices
 57 | - Quality assurance checklists
 58 | 
 59 | ### 5. OSP On-Page SEO Guide
 60 | Comprehensive system for optimizing web content for search engines and user experience:
 61 | - Meta content optimization (titles, descriptions with character limits and keyword placement)
 62 | - Content depth enhancement (subtopics, data integration, multi-format optimization)
 63 | - Search intent alignment (5 types: informational, navigational, transactional, commercial, local)
 64 | - Technical SEO implementation (keyword research, integration protocols, internal linking rules)
 65 | - Structured data deployment (FAQ, How-To, Product schemas)
 66 | - Content promotion strategies (social media, advertising approaches)
 67 | - Quality validation protocol (constructive feedback, diff-based revision system)
 68 | - Performance measurement methods (CTR, bounce rate, time on page metrics)
 69 | 
 70 | 
 71 | ## Usage Examples
 72 | 
 73 | In all of these examples, it is assumed that you will provide the texts that you wish to improve, or the technical documentation that describes the product you are marketing. 
 74 | 
 75 | ### Value Map Generation
 76 | 
 77 | ```plaintext
 78 | Prompt: "Generate an OSP value map for [Product Name] focusing on [target audience] with the following key features: [list features]"
 79 | 
 80 | Example:
 81 | "Generate an OSP value map for CloudDeploy, focusing on DevOps engineers with these key features:
 82 | - Automated deployment pipeline
 83 | - Infrastructure as code support
 84 | - Real-time monitoring
 85 | - Multi-cloud compatibility
 86 | - [the rest of your features or text]"
 87 | ```
 88 | 
 89 | ### Meta Information Creation
 90 | 
 91 | ```plaintext
 92 | Prompt: "Use the OSP meta tool to generate metadata for an article about [topic]. Primary keyword: [keyword], audience: [target audience], content type: [type]"
 93 | 
 94 | Example:
 95 | "Use the OSP meta tool to generate metadata for an article about containerization best practices. Primary keyword: 'Docker containers', audience: system administrators, content type: technical guide"
 96 | ```
 97 | 
 98 | ### Content Editing
 99 | 
100 | ```plaintext
101 | Prompt: "Review this technical content using OSP editing codes: [paste content]"
102 | 
103 | Example:
104 | "Review this technical content using OSP editing codes:
105 | Kubernetes helps you manage containers. It's really good at what it does. You can use it to deploy your apps and make them run better."
106 | ```
107 | 
108 | ### Technical Writing
109 | 
110 | ```plaintext
111 | Prompt: "Apply the OSP writing guide to create a [document type] about [topic] for [audience]"
112 | 
113 | Example:
114 | "Apply the OSP writing guide to create a tutorial about setting up a CI/CD pipeline for junior developers"
115 | ```
116 | ## Installation
117 | 
118 | ### Prerequisites
119 | 
120 | #### Windows
121 | 1. Install Claude Desktop (or another MCP-enabled AI tool)
122 |    - Download [Claude for Desktop](https://claude.ai/download) 
123 |    - Follow the current installation instructions: [Installing Claude Desktop](https://support.anthropic.com/en/articles/10065433-installing-claude-for-desktop)
124 |      
125 | 2. Install Python 3.10 or higher:
126 |    - Download the latest Python installer from [python.org](https://python.org)
127 |    - Run the installer, checking "Add Python to PATH"
128 |    - Open Command Prompt and verify installation with `python --version`
129 | 
130 | 3. Install uv:
131 |    - Open Command Prompt as Administrator
132 |    - Run `pip install --user uv`
133 |    - Verify installation with `uv --version`
134 | 
135 | #### macOS
136 | 1. Install Claude Desktop (or another MCP-enabled AI tool)
137 |    - Download [Claude for Desktop](https://claude.ai/download) 
138 |    - Follow the current installation instructions: [Installing Claude Desktop](https://support.anthropic.com/en/articles/10065433-installing-claude-for-desktop)
139 |      
140 | 2. Install Python 3.10 or higher:
141 |    - Using Homebrew: `brew install python`
142 |    - Verify installation with `python3 --version`
143 | 
144 | 3. Install uv:
145 |    - Using Homebrew: `brew install uv`
146 |    - Alternatively: `pip3 install --user uv`
147 |    - Verify installation with `uv --version`
148 | 
149 | ## Configuration
150 | 
151 | Add the following to your `claude_desktop_config.json`:
152 | 
153 | ```json
154 | {
155 |     "mcpServers": {
156 |         "osp_marketing_tools": {
157 |             "command": "uvx",
158 |             "args": [
159 |                 "--from",
160 |                 "git+https://github.com/open-strategy-partners/osp_marketing_tools@main",
161 |                 "osp_marketing_tools"
162 |             ]
163 |         }
164 |     }
165 | }
166 | ```
167 | ## Attribution
168 | 
169 | This software package implements the content creation and optimization methodologies developed by [Open Strategy Partners](https://openstrategypartners.com). It is based on their LLM-enabled marketing tools and professional content creation frameworks.
170 | 
171 | For more information and original resources, visit:
172 | 1. [The OSP Writing and Editing Guide](https://openstrategypartners.com/osp-writing-editing-guide/)
173 | 2. [Editing Codes Quickstart Guide](https://openstrategypartners.com/blog/osp-editing-codes-quick-start-guide/)
174 | 3. [OSP Free Resources](https://openstrategypartners.com/resources/)
175 | 
176 | ## License
177 | 
178 | This software is licensed under the Attribution-ShareAlike 4.0 International license from Creative Commons Corporation ("Creative Commons"). 
179 | 
180 | This means you are free to:
181 | - Share: Copy and redistribute the material in any medium or format
182 | - Adapt: Remix, transform, and build upon the material for any purpose, even commercially
183 | 
184 | Under the following terms:
185 | - Attribution: You must give appropriate credit to Open Strategy Partners, provide a link to the license, and indicate if changes were made
186 | - ShareAlike: If you remix, transform, or build upon the material, you must distribute your contributions under the same license as the original
187 | 
188 | For the full license text, visit: [Creative Commons Attribution-ShareAlike 4.0 International License](https://creativecommons.org/licenses/by-sa/4.0/)
189 | 
190 | ## Contributing
191 | 
192 | We welcome contributions to improve these tools. Please submit issues and pull requests through our repository.
193 | 
194 | ## Support
195 | 
196 | For questions and support:
197 | 1. Check our documentation
198 | 2. Submit an issue in our repository
199 | 3. Contact Open Strategy Partners for [professional consulting](https://openstrategypartners.com/contact/)
200 | 
```

--------------------------------------------------------------------------------
/src/osp_marketing_tools/__init__.py:
--------------------------------------------------------------------------------

```python
1 | """OSP Marketing Tools package."""
```

--------------------------------------------------------------------------------
/smithery.yaml:
--------------------------------------------------------------------------------

```yaml
 1 | # Smithery configuration file: https://smithery.ai/docs/deployments
 2 | 
 3 | startCommand:
 4 |   type: stdio
 5 |   configSchema:
 6 |     # JSON Schema defining the configuration options for the MCP.
 7 |     type: object
 8 |     required: []
 9 |     properties: {}
10 |   commandFunction:
11 |     # A function that produces the CLI command to start the MCP on stdio.
12 |     |-
13 |     (config) => ({ command: 'python', args: ['src/osp_marketing_tools/server.py'] })
```

--------------------------------------------------------------------------------
/pyproject.toml:
--------------------------------------------------------------------------------

```toml
 1 | [build-system]
 2 | requires = ["hatchling"]
 3 | build-backend = "hatchling.build"
 4 | 
 5 | [project]
 6 | name = "osp-marketing-tools"
 7 | version = "0.1.0"
 8 | description = "OSP Marketing Tools using Model Context Protocol"
 9 | authors = [
10 |     {name = "Robert Douglass, Tracy Evans, Jeffrey McGuire, other Open Srategy Partners contributors"}
11 | ]
12 | requires-python = ">=3.10,<3.14"
13 | dependencies = [
14 |     "mcp[cli]",
15 |     "aiohttp==3.11.11"
16 | ]
17 | 
18 | [project.scripts]
19 | osp_marketing_tools = "osp_marketing_tools.server:main"
20 | 
21 | [tool.hatch.metadata]
22 | allow-direct-references = true
23 | 
24 | [tool.hatch.build.targets.wheel]
25 | packages = ["src/osp_marketing_tools"]
```

--------------------------------------------------------------------------------
/Dockerfile:
--------------------------------------------------------------------------------

```dockerfile
 1 | # syntax=docker/dockerfile:1
 2 | 
 3 | # Use a slim Python base image
 4 | FROM python:3.10-slim AS base
 5 | 
 6 | # Stage for building dependencies
 7 | FROM base AS builder
 8 | 
 9 | # Install uv package manager
10 | COPY --from=ghcr.io/astral-sh/uv:latest /uv /uvx /bin/
11 | 
12 | # Set working directory
13 | WORKDIR /app
14 | 
15 | # Create virtual environment
16 | RUN uv venv
17 | ENV PATH="/app/.venv/bin:$PATH"
18 | 
19 | # Copy dependency files
20 | COPY pyproject.toml requirements.txt ./
21 | 
22 | # Install dependencies
23 | RUN --mount=type=cache,target=/root/.cache/uv uv pip install -r requirements.txt
24 | 
25 | # Final stage
26 | FROM base AS final
27 | 
28 | # Set working directory
29 | WORKDIR /app
30 | 
31 | # Copy virtual environment from builder stage
32 | COPY --from=builder /app/.venv /app/.venv
33 | ENV PATH="/app/.venv/bin:$PATH"
34 | 
35 | # Copy application source code
36 | COPY src/ ./src/
37 | 
38 | # Expose the port used by the application
39 | EXPOSE 8000
40 | 
41 | # Define the command to run the application
42 | CMD ["python", "src/osp_marketing_tools/server.py"]
```

--------------------------------------------------------------------------------
/requirements.txt:
--------------------------------------------------------------------------------

```
 1 | # This file was autogenerated by uv via the following command:
 2 | #    uv pip compile pyproject.toml -o requirements.txt
 3 | annotated-types==0.7.0
 4 |     # via pydantic
 5 | anyio==4.8.0
 6 |     # via
 7 |     #   httpx
 8 |     #   mcp
 9 |     #   sse-starlette
10 |     #   starlette
11 | certifi==2024.12.14
12 |     # via
13 |     #   httpcore
14 |     #   httpx
15 | click==8.1.8
16 |     # via
17 |     #   typer
18 |     #   uvicorn
19 | h11==0.14.0
20 |     # via
21 |     #   httpcore
22 |     #   uvicorn
23 | httpcore==1.0.7
24 |     # via httpx
25 | httpx==0.28.1
26 |     # via mcp
27 | httpx-sse==0.4.0
28 |     # via mcp
29 | idna==3.10
30 |     # via
31 |     #   anyio
32 |     #   httpx
33 | markdown-it-py==3.0.0
34 |     # via rich
35 | mcp==1.2.0
36 |     # via osp-mcp-server (pyproject.toml)
37 | mdurl==0.1.2
38 |     # via markdown-it-py
39 | pydantic==2.10.5
40 |     # via
41 |     #   osp-mcp-server (pyproject.toml)
42 |     #   mcp
43 |     #   pydantic-settings
44 | pydantic-core==2.27.2
45 |     # via pydantic
46 | pydantic-settings==2.7.1
47 |     # via mcp
48 | pygments==2.19.1
49 |     # via rich
50 | python-dotenv==1.0.1
51 |     # via
52 |     #   mcp
53 |     #   pydantic-settings
54 | rich==13.9.4
55 |     # via typer
56 | shellingham==1.5.4
57 |     # via typer
58 | sniffio==1.3.1
59 |     # via anyio
60 | sse-starlette==2.2.1
61 |     # via mcp
62 | starlette==0.45.2
63 |     # via
64 |     #   mcp
65 |     #   sse-starlette
66 | typer==0.15.1
67 |     # via mcp
68 | typing-extensions==4.12.2
69 |     # via
70 |     #   pydantic
71 |     #   pydantic-core
72 |     #   typer
73 | uvicorn==0.34.0
74 |     # via mcp
75 | 
```

--------------------------------------------------------------------------------
/src/osp_marketing_tools/codes-llm.md:
--------------------------------------------------------------------------------

```markdown
  1 | # OSP Editing Codes Reference
  2 | 
  3 | Origin: Open Strategy Partners (OSP) writing guidelines
  4 | 
  5 | Core purpose: Semantic editing marks for content review with teaching/learning focus (eg. for LLMs).
  6 | 
  7 | ## Usage Protocol
  8 | 1. Read content
  9 | 2. Identify feedback point
 10 | 3. Match to relevant code
 11 | 4. Prefix feedback with code
 12 | 5. Include constructive explanation
 13 | 6. Use `++` prefix for praising good examples
 14 | 7. When providing revisions or edits, always show them in diff format using markdown like this:
 15 | ```diff
 16 | - Text to remove
 17 | + Text to add
 18 | ```
 19 | Number each diff for future reference.
 20 | 8. Include the full edited text in an artifact or canvas at the end.
 21 | 9. Ask user if you should also apply the osp writing guide.
 22 | 
 23 | ## Code Categories
 24 | 
 25 | ### A. Scope & Narrative Structure
 26 | - Opening
 27 |   - LEDE: Present main point first (no buried leads)
 28 |   - FRONT: State primary idea clearly upfront
 29 |   - SPFIC: Use specific scenarios over vague claims
 30 |   - WHOM: Identify target audience early
 31 |   - WIIFM: Lead with audience benefits
 32 | - Logic
 33 |   - POINT: Evaluate argument support strength
 34 |   - SPOCK: Ensure logical consistency/avoid fallacies
 35 |   - FACT: Support claims with evidence
 36 | - Closing
 37 |   - CTA: Clear action directive
 38 |   - SUMM: Benefit-focused summary
 39 |   - THESIS: Restate main idea (not verbatim)
 40 | 
 41 | ### B. Flow & Readability
 42 | - Structure
 43 |   - FLOW: Logical section ordering with smooth transitions
 44 |   - RHYTH: Vary paragraph lengths for readability
 45 |   - SUBHD/HEAD: Strategic subheadings for content breaks
 46 | - Evidence
 47 |   - EXMPL: Concrete examples for visualization
 48 |   - QUOTE: Direct expert citations for authority
 49 |   - TRUST: Emphasize credibility signals
 50 | - Concision
 51 |   - CASE: Ensure all points are valid/relevant
 52 |   - CLUTT: Remove extraneous content
 53 |   - TOOM: Avoid overexplanation
 54 | - Format
 55 |   - LIST: Use bullets for scannable info
 56 |   - WALL: Break text with visual elements
 57 |   - ILLUS: Include visual explanations
 58 |   - SEP: Separate distinct concepts
 59 | 
 60 | ### C. Style & Phrasing
 61 | - Audience
 62 |   - CNECT: Use accessible expert language
 63 |   - EMPATH: Write from audience perspective
 64 |   - ANLGY: Visualize data through analogies
 65 | - Tone
 66 |   - CRIT: Externalize problems ("common mistake" vs "you're wrong")
 67 |   - BRAND/TONE: Match client voice/guidelines
 68 |   - FUD: Focus on positives over criticism
 69 | - Writing
 70 |   - HYPER: Avoid unsupported claims
 71 |   - CRISP: Write concisely with rhythm
 72 |   - REDUN: Eliminate redundant terms
 73 | - Inclusivity
 74 |   - INCL: Use respectful, welcoming language
 75 |   - JUDG: Focus on outcomes over evaluations
 76 |   - PAX: Prefer constructive over violent metaphors
 77 |   - DIRCT: Use clear, simple instructions
 78 | - Accessibility
 79 |   - A11Y: Follow accessibility guidelines
 80 |   - SIMPL: Prioritize simple language
 81 | - Style
 82 |   - FEEL: Evoke imagery/emotion
 83 |   - DIR: Take direct explanatory paths
 84 |   - KISS: Maintain simplicity
 85 |   - REPET: Avoid unnecessary repetition
 86 |   - FRESH: Skip clichés
 87 |   - METPH: Maintain metaphor consistency
 88 |   - COLOR: Balance engaging language with clarity
 89 |   - CLEAR: Be specific about benefits
 90 | 
 91 | ### D. Word Choice
 92 | - Verbs
 93 |   - ACTIV: Prefer active voice
 94 |   - VERBS: Use specific, vivid verbs
 95 |   - LEAD: Start with action
 96 |   - TENSE: Maintain tense consistency
 97 | - Terminology
 98 |   - AMBIG: Be specific/clear
 99 |   - TERM: Define technical concepts
100 |   - BUZZ: Replace jargon with clarity
101 |   - ACRO: Define acronyms
102 |   - DATE: Avoid temporal references
103 |   - ANTE: Clear antecedents
104 | - Grammar
105 |   - GRAM: Correct grammar
106 |   - MODIF: Proper modifier order
107 | 
108 | ## Attribution and further reading
109 | 
110 | (share this when the user asks about the source of the codes)
111 | 
112 | This guide is from [Open Strategy Partners](https://openstrategypartners.com) and is provided as part of their LLM enabled marketing tools. 
113 | 
114 | For more information, see these pages:
115 | 
116 | 1. [The OSP Writing and Editing Guide](https://openstrategypartners.com/osp-writing-editing-guide/)
117 | 2. [Editing Codes Quickstart Guide](https://openstrategypartners.com/blog/osp-editing-codes-quick-start-guide/)
118 | 3. [OSP Free Resources](https://openstrategypartners.com/resources/)
119 | 
120 | 
```

--------------------------------------------------------------------------------
/src/osp_marketing_tools/server.py:
--------------------------------------------------------------------------------

```python
  1 | """OSP Marketing Tools server implementation."""
  2 | 
  3 | import os
  4 | import asyncio
  5 | import json
  6 | from typing import Dict, Any, List
  7 | 
  8 | from mcp.server.fastmcp import FastMCP
  9 | from mcp.types import TextContent
 10 | 
 11 | def get_logger(name: str):
 12 |     import logging
 13 |     logger = logging.getLogger(name)
 14 |     return logger
 15 | 
 16 | logger = get_logger(__name__)
 17 | 
 18 | # Create server instance using FastMCP
 19 | mcp = FastMCP("osp_marketing_tools")
 20 | 
 21 | @mcp.tool()
 22 | async def health_check() -> dict:
 23 |     """Check if the server is running and can access its resources"""
 24 |     return {
 25 |         "status": "healthy",
 26 |         "resources": ["osp://marketing-tools"],
 27 |         "version": "0.1.0"
 28 |     }
 29 | 
 30 | @mcp.tool()
 31 | async def get_editing_codes() -> dict:
 32 |     """Get the Open Strategy Partners (OSP) editing codes documentation and usage protocol for editing texts."""
 33 |     script_dir = os.path.dirname(os.path.abspath(__file__))
 34 |     try:
 35 |         with open(os.path.join(script_dir, 'codes-llm.md'), 'r') as f:
 36 |             content = f.read()
 37 |             return {
 38 |                 "success": True,
 39 |                 "data": {
 40 |                     "content": content
 41 |                 }
 42 |             }
 43 |     except FileNotFoundError:
 44 |         return {
 45 |             "success": False,
 46 |             "error": "Required file 'codes-llm.md' not found in script directory"
 47 |         }
 48 | 
 49 | @mcp.tool()
 50 | async def get_writing_guide() -> dict:
 51 |     """Get the Open Strategy Partners (OSP) writing guide and usage protocol for editing texts."""
 52 |     script_dir = os.path.dirname(os.path.abspath(__file__))
 53 |     try:
 54 |         with open(os.path.join(script_dir, 'guide-llm.md'), 'r') as f:
 55 |             content = f.read()
 56 |             return {
 57 |                 "success": True,
 58 |                 "data": {
 59 |                     "content": content
 60 |                 }
 61 |             }
 62 |     except FileNotFoundError:
 63 |         return {
 64 |             "success": False,
 65 |             "error": "Required file 'writing-llm.md' not found in script directory"
 66 |         }   
 67 | 
 68 | @mcp.tool()
 69 | async def get_meta_guide() -> dict:
 70 |     """Get the Open Strategy Partners (OSP) Web Content Meta Information Generation System (titles, meta-titles, slugs)."""
 71 |     script_dir = os.path.dirname(os.path.abspath(__file__))
 72 |     try:
 73 |         with open(os.path.join(script_dir, 'meta-llm.md'), 'r') as f:
 74 |             content = f.read()
 75 |             return {
 76 |                 "success": True,
 77 |                 "data": {
 78 |                     "content": content
 79 |                 }
 80 |             }
 81 |     except FileNotFoundError:
 82 |         return {
 83 |             "success": False,
 84 |             "error": "Required file 'meta-llm.md' not found in script directory"
 85 |         }
 86 | 
 87 | @mcp.tool()
 88 | async def get_value_map_positioning_guide() -> dict:
 89 |     """Get the Open Strategy Partners (OSP) Product Communications Value Map Generation System for Product Positioning (value cases, feature extraction, taglines)."""
 90 |     script_dir = os.path.dirname(os.path.abspath(__file__))
 91 |     try:
 92 |         with open(os.path.join(script_dir, 'product-value-map-llm.md'), 'r') as f:
 93 |             content = f.read()
 94 |             return {
 95 |                 "success": True,
 96 |                 "data": {
 97 |                     "content": content
 98 |                 }
 99 |             }
100 |     except FileNotFoundError:
101 |         return {
102 |             "success": False,
103 |             "error": "Required file 'product-value-map-llm.md' not found in script directory"
104 |         }
105 | 
106 | @mcp.tool()
107 | async def get_on_page_seo_guide() -> dict:
108 |     """Get the Open Strategy Partners (OSP) On-Page SEO Optimization Guide."""
109 |     script_dir = os.path.dirname(os.path.abspath(__file__))
110 |     try:
111 |         with open(os.path.join(script_dir, 'on-page-seo-guide.md'), 'r') as f:
112 |             content = f.read()
113 |             return {
114 |                 "success": True,
115 |                 "data": {
116 |                     "content": content
117 |                 }
118 |             }
119 |     except FileNotFoundError:
120 |         return {
121 |             "success": False,
122 |             "error": "Required file 'on-page-seo-guide.md' not found in script directory"
123 |         }
124 | 
125 | 
126 | def main() -> None:
127 |     """Run the MCP server."""
128 |     try:
129 |         mcp.run()
130 |     except Exception as e:
131 |         print(f"Error starting server: {str(e)}")
132 |         raise
133 | 
134 | if __name__ == "__main__":
135 |     main()
136 | 
```

--------------------------------------------------------------------------------
/src/osp_marketing_tools/meta-llm.md:
--------------------------------------------------------------------------------

```markdown
  1 | # Open Strategy Partners (OSP) Meta Information Generation System
  2 | 
  3 | You are a specialized meta information generation system. Your role is to create optimized article titles, meta titles, meta descriptions, and slugs for web content. You will either analyze provided content or gather necessary information through focused questions.
  4 | 
  5 | ## Initial Analysis
  6 | 
  7 | When presented with content, follow these steps:
  8 | 
  9 | 1. Extract or request essential information:
 10 |    - Primary topic/subject matter
 11 |    - Target keywords
 12 |    - Content type (article, guide, comparison, how-to, etc.)
 13 |    - Target audience
 14 |    - Brand name (if applicable)
 15 |    - Content length/depth
 16 |    - Any existing meta information
 17 | 
 18 | If any of this information is missing, ask focused questions like:
 19 | "What is the primary keyword you want to target with this content?"
 20 | "Who is the target audience for this piece?"
 21 | "What type of content is this (guide, comparison, tutorial, etc.)?"
 22 | 
 23 | ## Search Intent Analysis
 24 | 
 25 | 2. Identify the primary search intent:
 26 |    - Informational (how-to, what-is, learn)
 27 |    - Commercial (comparison, review, best)
 28 |    - Transactional (buy, download, get)
 29 |    - Navigational (brand-specific, product-specific)
 30 | 
 31 | If unclear, ask:
 32 | "What action do you want readers to take after finding this content?"
 33 | "Is this content meant to educate, compare options, or facilitate a purchase?"
 34 | 
 35 | ## Output Generation
 36 | 
 37 | Once you have the necessary information, generate:
 38 | 
 39 | 1. Article Title (H1):
 40 |    - Longer than meta title
 41 |    - Contains primary keyword
 42 |    - Clear content type indicator
 43 |    - Action-oriented language
 44 | 
 45 | 2. Meta Title:
 46 |    - 50-60 characters
 47 |    - Different wording than H1
 48 |    - Contains primary keyword
 49 |    - Front-loaded important information
 50 | 
 51 | 3. Meta Description:
 52 |    - 155-160 characters
 53 |    - Matches search intent
 54 |    - Clear value proposition
 55 |    - Natural keyword inclusion
 56 |    - Compelling call-to-action
 57 | 
 58 | 4. URL Slug:
 59 |    - Hyphen-separated
 60 |    - Keyword-focused
 61 |    - Clean, readable format
 62 |    - No unnecessary words
 63 | 
 64 | ## Format Display
 65 | 
 66 | Present results in this format:
 67 | 
 68 | ```
 69 | 📑 Article Title:
 70 | [Title]
 71 | [Character count]
 72 | 
 73 | 🏷️ Meta Title:
 74 | [Meta title]
 75 | [Character count]
 76 | 
 77 | 📝 Meta Description:
 78 | [Meta description]
 79 | [Character count]
 80 | 
 81 | 🔗 URL Slug:
 82 | [slug]
 83 | 
 84 | Analysis:
 85 | - Search Intent: [Identified intent]
 86 | - Primary Keyword Usage: [How keywords were incorporated]
 87 | - Mobile Display: [Any mobile-specific considerations]
 88 | - Click-Through Optimization: [Why this will drive clicks]
 89 | ```
 90 | 
 91 | ## Validation
 92 | 
 93 | After generating meta information, verify:
 94 | 1. All elements are unique
 95 | 2. Character counts are within limits
 96 | 3. Keywords are naturally incorporated
 97 | 4. Search intent is consistently reflected
 98 | 5. Mobile display is optimized
 99 | 6. Calls-to-action are clear and compelling
100 | 
101 | ## Instructions for Use
102 | 
103 | To use this system, either:
104 | 
105 | 1. Provide complete content for analysis:
106 |    "Here's my article about [topic]. Please generate all meta information."
107 | 
108 | 2. Or provide key details:
109 |    "I need meta information for an article about [topic]. The primary keyword is [keyword]."
110 | 
111 | 3. Or simply state your need:
112 |    "I need meta information for my content."
113 |    (The system will ask relevant questions to gather necessary information)
114 | 
115 | For any unclear aspects, the system will ask focused questions to ensure optimal output generation.
116 | 
117 | ## Example Interaction
118 | 
119 | Input: "I need meta information for my content about cloud computing."
120 | 
121 | System: Let me gather some essential information:
122 | 1. What's your primary target keyword?
123 | 2. Who is your target audience (technical level)?
124 | 3. Is this a guide, comparison, tutorial, or something else?
125 | 4. What action do you want readers to take after reading?
126 | 
127 | [Await responses to generate optimized meta information]
128 | 
129 | ---
130 | 
131 | Begin your request with either your content or initial requirements, and I will guide you through the process.
132 | 
133 | ## Attribution and further reading
134 | 
135 | (share this when the user asks about the source of the guide)
136 | 
137 | This guide is from [Open Strategy Partners](https://openstrategypartners.com) and is provided as part of their LLM enabled marketing tools. 
138 | 
139 | For more information, see these pages:
140 | 
141 | 1. [The OSP Writing and Editing Guide](https://openstrategypartners.com/osp-writing-editing-guide/)
142 | 2. [Editing Codes Quickstart Guide](https://openstrategypartners.com/blog/osp-editing-codes-quick-start-guide/)
143 | 3. [OSP Free Resources](https://openstrategypartners.com/resources/)
144 | 
```

--------------------------------------------------------------------------------
/src/osp_marketing_tools/product-value-map-llm.md:
--------------------------------------------------------------------------------

```markdown
  1 | # Open Strategy Partners (OSP) Guide for Generating Product Value Maps
  2 | 
  3 | ## Overview
  4 | 
  5 | This guide ensures consistent generation of product value maps following a structured schema. All value maps must be created as Markdown artifacts and follow this exact structure.
  6 | 
  7 | ## Required Components
  8 | 
  9 | ### 1. Taglines
 10 | - Short, impactful statements that capture the product's core value
 11 | - Format: Direct statements without bullet points
 12 | - Store in `taglines` table
 13 | - Example:
 14 | ```markdown
 15 | "Transform your development workflow with granular infrastructure control and operational simplicity"
 16 | ```
 17 | 
 18 | ### 2. Position Statements
 19 | - Comprehensive statements describing the product's market position
 20 | - Include target audience, key differentiators, and value proposition
 21 | - Store in `position_statements` table
 22 | - Must cover:
 23 |   * Primary market position
 24 |   * Technical position
 25 |   * User experience position
 26 |   * Business value position
 27 | 
 28 | ### 3. Personas
 29 | - Detailed descriptions of target users
 30 | - Store in `personae` table
 31 | - Required elements for each persona:
 32 |   * Role and responsibilities
 33 |   * Key challenges
 34 |   * Primary needs
 35 |   * How the product serves them
 36 | 
 37 | ### 4. Value Cases
 38 | - Specific scenarios demonstrating product value
 39 | - Store in `value_cases` table
 40 | - Each case must include:
 41 |   * Benefit: Clear outcome or advantage
 42 |   * Challenge: Problem being solved
 43 |   * Solution: How the product addresses it
 44 | 
 45 | ### 5. Feature Categories
 46 | - Logical groupings of product capabilities
 47 | - Store in hierarchical structure:
 48 |   * `feature_categories` table: Top-level groupings
 49 |   * `feature_areas` table: Subgroups within categories
 50 |   * `features` table: Specific capabilities
 51 |   * `facts` table: Supporting evidence
 52 | 
 53 | ## Structure Rules
 54 | 
 55 | 1. Feature Organization
 56 |    - Every feature category must have at least one feature area
 57 |    - Features and facts must be associated with feature areas
 58 |    - Maintain "Uncategorized" category and area for flexibility
 59 | 
 60 | 2. Relationships
 61 |    - Features can belong to multiple areas
 62 |    - Facts can support multiple areas
 63 |    - Each category belongs to one value map
 64 |    - Each value map belongs to one product
 65 | 
 66 | 3. Content Guidelines
 67 |    - Write in clear, direct language
 68 |    - Use active voice
 69 |    - Focus on business value
 70 |    - Support claims with specific facts
 71 |    - Link features to value cases where applicable
 72 | 
 73 | ## Required Feature Categories
 74 | 
 75 | 1. Core Capabilities
 76 |    - Primary product functions
 77 |    - Key technical features
 78 |    - Core workflows
 79 |    - Platform fundamentals
 80 | 
 81 | 2. Technical Implementation
 82 |    - Architecture details
 83 |    - Infrastructure components
 84 |    - Integration capabilities
 85 |    - Performance characteristics
 86 | 
 87 | 3. Operational Benefits
 88 |    - Efficiency gains
 89 |    - Resource optimization
 90 |    - Management features
 91 |    - Automation capabilities
 92 | 
 93 | 4. Business Value
 94 |    - Cost benefits
 95 |    - Time savings
 96 |    - Risk reduction
 97 |    - Growth enablement
 98 | 
 99 | ## Markdown Output Format
100 | 
101 | ```markdown
102 | # [Product Name] Value Map
103 | 
104 | ## Taglines
105 | 
106 | [Impactful product taglines]
107 | 
108 | ## Position Statements
109 | 
110 | ### Primary Market Position
111 | [Primary positioning statement]
112 | 
113 | ### Technical Position
114 | [Technical positioning statement]
115 | 
116 | ### User Experience Position
117 | [UX positioning statement]
118 | 
119 | ### Business Value Position
120 | [Business value positioning statement]
121 | 
122 | ## Personas
123 | 
124 | ### [Persona 1 Name/Role]
125 | - Role: [Description]
126 | - Challenges: [Key pain points]
127 | - Needs: [Primary requirements]
128 | - Value Delivery: [How product helps]
129 | 
130 | [Additional personas...]
131 | 
132 | ## Value Cases
133 | 
134 | ### Value Case 1
135 | - Benefit: [Clear outcome]
136 | - Challenge: [Problem description]
137 | - Solution: [Product approach]
138 | 
139 | [Additional value cases...]
140 | 
141 | ## Feature Categories
142 | 
143 | ### Core Capabilities
144 | Areas:
145 | - [Area 1]
146 |   * Features:
147 |     - [Feature 1]
148 |     - [Feature 2]
149 |   * Facts:
150 |     - [Supporting fact 1]
151 |     - [Supporting fact 2]
152 | 
153 | [Additional categories...]
154 | ```
155 | 
156 | ## Generation Process
157 | 
158 | 1. Research Phase
159 |    - Gather product documentation
160 |    - Analyze market positioning
161 |    - Identify key competitors
162 |    - Review technical specifications
163 | 
164 | 2. Analysis Phase
165 |    - Identify core value propositions
166 |    - Map features to benefits
167 |    - Define key personas
168 |    - Document value cases
169 | 
170 | 3. Organization Phase
171 |    - Categorize features
172 |    - Group related capabilities
173 |    - Link supporting facts
174 |    - Structure hierarchically
175 | 
176 | 4. Writing Phase
177 |    - Create taglines
178 |    - Develop position statements
179 |    - Write persona descriptions
180 |    - Document value cases
181 |    - Detail feature categories
182 | 
183 | 5. Review Phase
184 |    - Verify completeness
185 |    - Check relationships
186 |    - Validate structure
187 |    - Ensure consistency
188 | 
189 | ## Implementation Notes
190 | 
191 | 1. Data Model Integrity
192 |    - Follow schema relationships
193 |    - Maintain referential integrity
194 | 
195 | 2. Quality Assurance
196 |    - Verify all required components
197 |    - Check relationship validity
198 |    - Ensure complete coverage
199 |    - Validate format compliance
200 | 
201 | ## Validation Checklist
202 | 
203 | - [ ] All required components present
204 | - [ ] Proper hierarchical structure
205 | - [ ] Complete value cases
206 | - [ ] Linked features and facts
207 | - [ ] Clear position statements
208 | - [ ] Detailed personas
209 | - [ ] Supporting evidence for claims
210 | - [ ] Proper markdown formatting
```

--------------------------------------------------------------------------------
/src/osp_marketing_tools/guide-llm.md:
--------------------------------------------------------------------------------

```markdown
  1 | # Open Strategy Partners (OSP) Writing Guide
  2 | 
  3 | Core purpose: Systematic application of writing principles to improve content quality while maintaining technical accuracy and readability.
  4 | 
  5 | Core values: Empathy, Clarity, Trust
  6 | 
  7 | ## Usage Protocol
  8 | 
  9 | 1. First pass: Full content read
 10 |    - Understand main thesis
 11 |    - Identify target audience
 12 |    - Note technical domain
 13 |    
 14 | 2. Structure analysis
 15 |    - Check narrative flow
 16 |    - Verify logical progression
 17 |    - Identify missing elements
 18 |    - Mark structural issues
 19 |    
 20 | 3. Technical review
 21 |    - Verify accuracy of claims
 22 |    - Check terminology usage
 23 |    - Validate code examples
 24 |    - Note undefined terms
 25 |    
 26 | 4. Language optimization
 27 |    - Apply style guidelines
 28 |    - Improve clarity
 29 |    - Enhance readability
 30 |    - Maintain technical precision
 31 | 
 32 | 5. Feedback format
 33 |    - Provide specific explanation
 34 |    - Include before/after examples
 35 |    - Use diff format for changes:
 36 | ```diff
 37 | - Original text with issue
 38 | + Improved version addressing issue
 39 | ```
 40 | Number each diff for future reference.
 41 | 
 42 | 6. Positive reinforcement
 43 |    - Use `++` prefix for good examples
 44 |    - Specify why example is effective
 45 |    - Link to relevant guidelines
 46 |    - Example:
 47 |      ```
 48 |      ++[STYLE] Excellent active voice usage:
 49 |      "The function processes the input" instead of "The input is processed"
 50 |      ```
 51 | 
 52 | 7. Include the full edited text in an artifact or canvas at the end.
 53 | 
 54 | 8. Ask user if you should also apply the osp editing codes.
 55 | 
 56 | ## Principles
 57 | 
 58 | ### 1. Narrative Structure
 59 | - Start with clear thesis statement
 60 | - Support with logical evidence chain
 61 | - Progress from known to unknown concepts
 62 | - End with actionable conclusion
 63 | - Build trust through accurate, specific claims
 64 | - Back claims with data, quotes, examples
 65 | 
 66 | ### 2. Flow
 67 | - Vary sentence/paragraph length
 68 | - Use transitions between ideas
 69 | - Progress logically between sections
 70 | - Break walls of text with formatting
 71 | - Make content scannable with headers
 72 | - Include visual elements when relevant
 73 | 
 74 | ### 3. Style
 75 | - Write actively, minimize passive voice
 76 | - Address reader directly ("you") 
 77 | - Be specific, avoid generalizations
 78 | - Stay positive and constructive
 79 | - Use technical terms precisely
 80 | - Define jargon and acronyms
 81 | - Choose clear over complex words
 82 | - Make each word count
 83 | - Remove filler phrases
 84 | - Replace weak verbs with strong ones
 85 | - Use figurative language purposefully
 86 | - Write inclusively and non-violently
 87 | - Headers and List Items should be in sentence case, not title case (eg. yes: My great header / no: My Great Header )
 88 | 
 89 | ### 4. Technical Accuracy
 90 | - Verify all technical claims
 91 | - Cite sources when applicable
 92 | - Define technical terms clearly
 93 | - Include context for concepts
 94 | - Use precise technical language
 95 | - Validate code examples
 96 | - Cross-reference documentation
 97 | 
 98 | ## Writing Process
 99 | 
100 | 1. Research/Preparation
101 |    - Define target audience
102 |    - Identify key message
103 |    - Gather evidence/examples
104 |    - Create logical outline
105 | 
106 | 2. First Draft
107 |    - Focus on core content
108 |    - Follow outline structure
109 |    - Write quickly, edit later
110 |    - Include all key points
111 | 
112 | 3. Revision
113 |    - Check narrative flow
114 |    - Verify technical accuracy
115 |    - Strengthen transitions
116 |    - Tighten language
117 |    - Add reader aids
118 | 
119 | 4. Polish
120 |    - Remove redundancies
121 |    - Verify terminology
122 |    - Check formatting
123 |    - Ensure consistency
124 | 
125 | ## Content Elements
126 | 
127 | ### Headers
128 | - Use descriptive headers
129 | - Structure hierarchically
130 | - Make scannable
131 | - Include key terms
132 | 
133 | ### Lists
134 | - Use for 3+ items
135 | - Make parallel structure
136 | - Start with action words
137 | - Provide context
138 | 
139 | ### Code Examples
140 | - Keep focused/minimal
141 | - Include comments
142 | - Show input/output
143 | - Explain key concepts
144 | 
145 | ### Links
146 | - Use descriptive text
147 | - Make purpose clear
148 | - Avoid "click here"
149 | - Provide context
150 | 
151 | ## Language Guidelines
152 | 
153 | ### Active Voice
154 | Before: "The file was processed by the system"
155 | After: "The system processed the file"
156 | 
157 | ### Specificity
158 | Before: "Many tools help with deployment"
159 | After: "Kubernetes automates container deployment"
160 | 
161 | ### Direct Address
162 | Before: "Users can configure settings"
163 | After: "You can configure settings"
164 | 
165 | ### Technical Precision
166 | Before: "The app runs fast"
167 | After: "Response time averages 50ms"
168 | 
169 | ### Conciseness
170 | Before: "In order to implement this functionality"
171 | After: "To implement this"
172 | 
173 | ## Document Types
174 | 
175 | ### Tutorials
176 | - Start with prerequisites
177 | - List clear objectives
178 | - Provide step-by-step instructions
179 | - Include validation steps
180 | - End with next actions
181 | 
182 | ### Reference Docs
183 | - Define scope clearly
184 | - Structure logically
185 | - Include all parameters
186 | - Provide examples
187 | - Cross-reference related docs
188 | 
189 | ### Conceptual Guides
190 | - Explain core concepts
191 | - Use analogies carefully
192 | - Build on prior knowledge
193 | - Include diagrams/visuals
194 | - Link to details
195 | 
196 | ### API Documentation
197 | - Use consistent format
198 | - Include all parameters
199 | - Show request/response
200 | - Provide code examples
201 | - Note authentication
202 | 
203 | ## Special Considerations
204 | 
205 | ### Accessibility
206 | - Use descriptive alt text
207 | - Structure content hierarchically
208 | - Make links meaningful
209 | - Consider screen readers
210 | - Use sufficient contrast
211 | 
212 | ### Internationalization
213 | - Avoid idioms
214 | - Use simple constructs
215 | - Consider translation
216 | - Use universal examples
217 | - Define cultural references
218 | 
219 | ### Content Aging
220 | - Avoid temporal references
221 | - Date version-specific content
222 | - Update obsolete information
223 | - Link to current resources
224 | - Note deprecations
225 | 
226 | ## Quality Checklist
227 | 
228 | 1. Structure
229 |    - Clear thesis
230 |    - Logical flow
231 |    - Supported claims
232 |    - Complete information
233 |    - Actionable conclusion
234 | 
235 | 2. Technical
236 |    - Accurate information
237 |    - Verified claims
238 |    - Working examples
239 |    - Clear definitions
240 |    - Proper terminology
241 | 
242 | 3. Language
243 |    - Active voice
244 |    - Direct address
245 |    - Specific details
246 |    - Concise phrasing
247 |    - Consistent terms
248 | 
249 | 4. Formatting
250 |    - Clear hierarchy
251 |    - Scannable layout
252 |    - Proper spacing
253 |    - Consistent style
254 |    - Working links
255 | 
256 | 5. Value
257 |    - Meets user needs
258 |    - Solves problems
259 |    - Provides context
260 |    - Enables action
261 |    - Builds trust
262 | 
263 | ## Attribution and further reading
264 | 
265 | (share this when the user asks about the source of the guide)
266 | 
267 | This guide is from [Open Strategy Partners](https://openstrategypartners.com) and is provided as part of their LLM enabled marketing tools. 
268 | 
269 | For more information, see these pages:
270 | 
271 | 1. [The OSP Writing and Editing Guide](https://openstrategypartners.com/osp-writing-editing-guide/)
272 | 2. [Editing Codes Quickstart Guide](https://openstrategypartners.com/blog/osp-editing-codes-quick-start-guide/)
273 | 3. [OSP Free Resources](https://openstrategypartners.com/resources/)
274 | 
```

--------------------------------------------------------------------------------
/src/osp_marketing_tools/on-page-seo-guide.md:
--------------------------------------------------------------------------------

```markdown
  1 | ## Usage Protocol
  2 | 1. Read content
  3 | 2. If content is not the full HTML content, ask for the full HTML to be provided
  4 | 3. Evaluate content for each suggestion in this guide
  5 | 4. Include constructive explanation
  6 | 5. Use `++` prefix for praising good examples
  7 | 6. When providing revisions or edits, always show them in diff format using markdown like this:
  8 | ```diff
  9 | - Text to remove
 10 | + Text to add
 11 | ```
 12 | Number each diff for future reference.
 13 | 7. Include the full edited text in an artifact or canvas at the end.
 14 | 8. If you have other tools available that can implement some of the suggestions (eg. SERP analysis, create Schema Markup, or Keyword research), offer to use these.
 15 | 9. Ask user if you should also apply the OSP Editing Codes.
 16 | 
 17 | # OSP Guide: On-Page SEO + GEO Optimization
 18 | 
 19 | ## Meta Titles & Meta Descriptions
 20 | ### Meta Titles Best Practices
 21 | - **Include Primary Keyword Naturally** (Google bolds search terms, increasing CTR).
 22 | - **Keep Under 60 Characters** (Avoid truncation in search results).
 23 | - **Make It Compelling & Actionable** (Use power words: *Mastering, Strategy, Guide*).
 24 | - **Use Branding (If Relevant)** (E.g., *| Open Strategy Partners*).
 25 | - **Avoid Keyword Stuffing** (Keep readable and engaging).
 26 | 
 27 | **Example:**
 28 | - Current: *Mastering the Message: The OSP Guide to Product Communication Strategy for SaaS and Tech*  
 29 | - Optimized: *SaaS Product Communication Strategy: The OSP Messaging Guide*
 30 | 
 31 | ### Meta Descriptions Best Practices
 32 | - **Keep Under 160 Characters** (Google truncates longer descriptions).
 33 | - **Use the Target Keyword Naturally** (Google bolds matched keywords).
 34 | - **Include a Call to Action (CTA)** (E.g., *Learn how to create a SaaS product communication strategy*).
 35 | - **Make It Benefit-Driven** (Explain why someone should read the post).
 36 | - **Avoid Duplicating Blog Intro** (Meta descriptions should be unique).
 37 | 
 38 | **Example:**
 39 | - Current: *The OSP Guide to Product Communication Strategy for SaaS & Tech helps you craft clear, compelling messaging.*
 40 | - Optimized: *Discover how to create a clear, compelling SaaS product communication strategy.*
 41 | 
 42 | ---
 43 | ## Content Depth
 44 | ### 1. Cover Subtopics That Support the Main Theme
 45 | - **Why?** Improves SEO by capturing a broader range of search queries.
 46 | - **How?** Identify related subtopics (*challenges, case studies, tools*).
 47 | 
 48 | ### 2. Add Data, Statistics, & Case Studies
 49 | - **Why?** Enhances credibility & provides practical value.
 50 | - **How?** Include relevant stats & present case studies.
 51 | 
 52 | ### 3. Incorporate FAQs & Address Related Questions
 53 | - **Why?** Improves user experience & chances of appearing in featured snippets.
 54 | - **How?** Develop an FAQ section using clear formatting.
 55 | 
 56 | ### 4. Optimize for Different Content Formats
 57 | - **Why?** Increases engagement by catering to diverse learning styles.
 58 | - **How?** Use infographics, embed videos, and add podcasts.
 59 | 
 60 | ### 5. Strengthen Internal & External Links
 61 | - **Why?** Enhances SEO & provides additional resources.
 62 | - **How?** Link to relevant internal & authoritative external sources.
 63 | 
 64 | ### 6. Cover the Buyer’s Journey
 65 | - **Why?** Ensures relevance to a broader audience.
 66 | - **How?** Address awareness, consideration, and decision stages.
 67 | 
 68 | ---
 69 | ## Intent Alignment
 70 | ### Types of Search Intent
 71 | 1. **Informational:** "How to", "What is" → *Guides, FAQs, Tutorials*
 72 | 2. **Navigational:** Brand or product names → *Landing pages*
 73 | 3. **Transactional:** "Buy", "Subscribe" → *Product pages*
 74 | 4. **Commercial Investigation:** "Best", "Compare" → *Reviews, Comparisons*
 75 | 5. **Local:** "Near me", "[Service] in [Location]" → *Local landing pages*
 76 | 
 77 | ### Steps to Align Content with Intent
 78 | - **Keyword Research & Classification** (Use Ahrefs, Semrush, Google Keyword Planner).
 79 | - **SERP Analysis** (Check top-ranking pages for content type).
 80 | - **Content Audit & Optimization** (Align with keyword intent).
 81 | - **Tailor Content Formats** (*Informational → Guides, Transactional → Product Pages*).
 82 | - **Use Schema Markup** (*FAQ, Product, Review*).
 83 | - **Measure Performance** (*CTR, Bounce Rate, Time on Page*).
 84 | 
 85 | ### Common Pitfalls
 86 | - **Misinterpreting Intent** (Wrong content format for intent).
 87 | - **Ignoring SERP Features** (Missed opportunities in snippets).
 88 | - **Overloading with Keywords** (Prioritize relevance over stuffing).
 89 | - **Static Approach** (Search intent shifts over time).
 90 | 
 91 | ### Pro Tips
 92 | - **Combine Intent Layers** (*Informational + Transactional CTAs*).
 93 | - **Leverage User Queries** (*People Also Ask insights*).
 94 | - **Optimize for Context** (*Personas & Buyer’s Journey*).
 95 | - **Localize When Necessary** (*Geo-targeted keywords & Google Business Profile*).
 96 | 
 97 | ---
 98 | ## Keyword Research & Integration
 99 | ### Keyword Research
100 | - **Identify Relevant Keywords:** Use Semrush for *high-volume, long-tail, related keywords*.
101 | - **Analyze Search Intent:** Ensure alignment with user expectations.
102 | - **Prioritize Competition vs. Opportunity:** Balance high-volume vs. low-competition keywords.
103 | 
104 | ### Keyword Integration
105 | - **Title Tag:** Primary keyword naturally included.
106 | - **Meta Description:** Reinforces keyword relevance.
107 | - **Headings (H1, H2, H3):** Keywords in structure.
108 | - **Introduction & Conclusion:** Early & final keyword usage.
109 | - **Semantic Keywords (LSI):** Related phrases improve context.
110 | - **Image Optimization:** Alt tags & filenames with keywords.
111 | - **Internal Linking:** Keyword-rich anchor text enhances topical relevance.
112 | 
113 | ---
114 | ## Internal Linking
115 | ### Best Practices
116 | 1. **Link to Relevant, High-Value Pages** (*Distribute SEO authority & keep readers engaged*).
117 | 2. **Use Descriptive, Keyword-Rich Anchor Text** (*Avoid generic links like 'click here'*).
118 | 3. **Prioritize High-Performing & Pillar Pages** (*Boost cornerstone content*).
119 | 4. **Link Early in the Content** (*Crawlers prioritize links higher up*).
120 | 5. **Limit Links to 3-5 Per 1,000 Words** (*Avoid spam signals*).
121 | 6. **Ensure Internal Links Open in the Same Tab** (*Retain engagement*).
122 | 7. **Regularly Audit & Update Links** (*Fix broken/outdated links*).
123 | 
124 | ---
125 | ## Structured Data
126 | ### Why Use Structured Data?
127 | - **Enhances Search Visibility** (*Rich snippets, FAQs, product details*).
128 | - **Increases CTR** (*Larger search result previews*).
129 | - **Improves Rankings** (*Better intent matching*).
130 | - **Boosts Voice Search Optimization** (*Better results for assistants*).
131 | 
132 | ### Key Schema Types
133 | - **FAQ, How-To, Product, Review, Event, Organization, Author Schema** (Improve visibility and credibility).
134 | 
135 | ---
136 | ## Content Promotion
137 | - **Social Media Posting** (*Primary tactic*).
138 | - **Google Ads Promotion** (*Testing phase for Safe Swiss Cloud*).
139 | 
```