{
  "markdown": "# Speedgrapher\n\nSpeedgrapher is a specialized agentic editorial suite and Model Context Protocol (MCP) server for technical authors, engineering bloggers, and AI agents. It delivers AST-level readability analytics, automated AI cliché (\"slop\") detection, multi-point technical SEO auditing, and Vale style linting.\n\nSpeedgrapher operates across three integrated surfaces powered by embedded Agent Skills:\n\n1. **MCP Server**: Exposes 4 editorial intelligence tools (`fog`, `slop`, `analyze_seo`, `vale`) over Model Context Protocol (stdio & streamable HTTP).\n2. **Headless CLI**: Provides direct subshell tool invocation (`fog`, `slop`, `seo`, `vale`) via `speedgrapher call`, alongside surface management commands (`install`, `uninstall`, `init`, `list`).\n3. **Embedded Agent Skills**: Bundled operational personas and writing guides (`@deslopify`, `@inverted-pyramid`, `@tech-interviewer`, `@tech-writer`, `@tech-reviewer`, `@tech-publisher`) unpacked directly into agent workspaces.\n\n---\n\n## Installation\n\n### Option A: One-Line Installer (`install.sh`)\n\nDownloads the latest prebuilt release binary (via GoReleaser) and automatically initializes MCP registration and Agent Skills:\n\n```bash\n# Global install (Default: ~/.gemini/config)\ncurl -fsSL https://raw.githubusercontent.com/danicat/speedgrapher/main/install.sh | bash\n\n# Workspace-scoped install (.agents/)\ncurl -fsSL https://raw.githubusercontent.com/danicat/speedgrapher/main/install.sh | bash -s -- -w\n```\n\n### Option B: Go Toolchain (`go install` + `speedgrapher install`)\n\n```bash\n# 1. Install binary\ngo install github.com/danicat/speedgrapher/cmd/speedgrapher@latest\n\n# 2. Configure surfaces (registers MCP server and unpacks embedded skills)\nspeedgrapher install\n```\n\n#### Granular Surface Management Flags\n\n```bash\n# Configure MCP server only\nspeedgrapher install --mcp\n\n# Unpack embedded Agent Skills only\nspeedgrapher install --skills\n\n# Configure in current workspace scope (.agents/)\nspeedgrapher install -w\n\n# Remove configuration (Global or Workspace)\nspeedgrapher uninstall\nspeedgrapher uninstall -w\n```\n\n---\n\n## Headless CLI Manual\n\nFor agents operating in subshells or environments without native MCP integration, all tools can be invoked via JSON payloads or standard input using the `call` subcommand:\n\n```bash\n# Print help and usage\nspeedgrapher\n\n# List all available editorial tools\nspeedgrapher list\n\n# Run dependency & environment diagnostic health checks (Vale, Git, Hugo, Go)\nspeedgrapher check\nspeedgrapher check --json\n\n# Initialize workspace configuration (speedgrapher.json) and workspace skills (.agents/)\nspeedgrapher init\n\n# Invoke tools via CLI (fog, slop, seo, vale)\nspeedgrapher call fog '{\"text\": \"The quick brown fox jumps over the lazy dog.\"}'\nspeedgrapher call slop '{\"text\": \"In today'\\''s fast-paced world, delve into the intricate tapestry of AI.\"}'\nspeedgrapher call seo '{\"html\": \"<html><head><title>Technical Guide to MCP</title><meta name=\\\"description\\\" content=\\\"A deep dive into Model Context Protocol architecture, client patterns, and tool handlers.\\\"></head><body><h1>Technical Guide to MCP</h1><p>Content goes here...</p></body></html>\", \"keyword\": \"mcp\"}'\nspeedgrapher call vale '{\"text\": \"This is very unique.\"}'\n\n# Pipe text directly into tool execution via stdin\ncat draft.md | speedgrapher call slop\n```\n\n### MCP Server Execution\n\nSpeedgrapher can run as a standard stdio server or as a network-accessible streamable HTTP service:\n\n```bash\n# Run stdio MCP server (standard for MCP clients like Claude Code or Gemini)\nspeedgrapher mcp\n\n# Run streamable HTTP MCP server\nspeedgrapher mcp --listen=:8080\n```\n\n---\n\n## Available MCP Tools\n\n| Tool | Summary |\n| :--- | :--- |\n| [`fog`](#fog) | Calculates the Gunning Fog Index to estimate text readability and audience classification. |\n| [`slop`](#slop) | Multi-metric heuristic analyzer calculating an AI cliché / slop score (0–100). |\n| [`analyze_seo`](#analyze_seo) | Comprehensive 7-point technical SEO audit for published URLs or Hugo Markdown drafts. |\n| [`vale`](#vale) | Automated Vale static analysis engine verifying editorial style, grammar, and voice. |\n\n### Tool Breakdown & Behaviors\n\n#### `fog`\n- **Parameters**: \n  - `text` (string, optional): Text to analyze for readability. Must contain at least one sentence.\n  - `path` (string, optional): Path to a file containing text to analyze. Resolved against `WorkspaceDir`.\n- **Behavior**:\n  - Calculates the Gunning Fog Index using average sentence length (ASL) and percentage of complex words (PCW, words with 3+ syllables):\n    $$\\text{Fog Index} = 0.4 \\times \\left( \\frac{\\text{words}}{\\text{sentences}} + 100 \\times \\frac{\\text{complex words}}{\\text{words}} \\right)$$\n  - Returns classification:\n    - **Simplistic** ($< 9$): Accessible for elementary reading levels.\n    - **General Audiences** ($9 \\le \\text{Index} < 13$): Clear and accessible for most readers.\n    - **Professional Audiences** ($13 \\le \\text{Index} < 18$): Ideal for technical and engineering blogs.\n    - **Hard to Read** ($18 \\le \\text{Index} < 22$): Requires significant cognitive effort.\n    - **Unreadable** ($\\ge 22$): Likely incomprehensible to general technical audiences.\n  - Returns structured metrics: `fog_index`, `classification`, `total_words`, `total_sentences`, `average_sentence_length`, `percentage_complex_words`, `complex_words`.\n\n#### `slop`\n- **Parameters**:\n  - `text` (string, optional): Text to analyze for AI-generated clichés and structural tropes.\n  - `path` (string, optional): Path to a file containing text to analyze.\n- **Behavior**:\n  - Computes a weighted overall score ($0$ to $100$) across 5 calibrated analytical dimensions:\n    1. **Structural Clichés (40% weight)**: Scans for distinct LLM rhetorical patterns (e.g., *\"It's not X — it's Y\"*, *\"Not X. Not Y. Just Z.\"*, *\"The result? Devastating.\"*, *\"Here's the kicker\"*, *\"Delve into the tapestry\"*, em-dash clusters).\n    2. **Lexical Slop (25% weight)**: Detects overused AI buzzwords (*delve*, *tapestry*, *landscape*, *nuance*, *testament*, *beacon*, *catalyst*, *paradigm*, *robust*, *seamless*, *transformative*, *quietly*, *deeply*, *fundamentally*).\n    3. **Filler Words (15% weight)**: Measures stop-word and filler ratios against natural human writing distributions.\n    4. **Rhythm Variance (15% weight)**: Evaluates sentence length coefficient of variation (CV) to penalize uniform, monotonous sentence cadences.\n    5. **Syntactic Voice (5% weight)**: Measures pronoun-to-noun balance via part-of-speech (POS) tagging.\n\n#### `analyze_seo`\n- **Parameters**:\n  - `url` (string, optional): Full URL of the live webpage to audit.\n  - `html` (string, optional): Raw HTML string or Hugo Markdown with YAML front matter.\n  - `keyword` (string, optional): Target keyword to verify across title, description, and headings.\n- **Behavior**:\n  - Runs a 7-point technical SEO inspection:\n    1. **Title Tag**: Checks presence, optimal character length ($30$–$60$ chars), and keyword placement.\n    2. **Meta Description**: Checks presence, optimal length ($120$–$160$ chars), and keyword placement.\n    3. **H1 Tag**: Enforces single H1 presence and keyword inclusion.\n    4. **Image Alt Text**: Detects missing or empty `alt` attributes on all `<img>` elements.\n    5. **Links**: Validates presence and distribution of links.\n    6. **Content Length**: Assesses total body word count ($300+$ words recommended).\n    7. **Canonical Tag**: Verifies `<link rel=\"canonical\">` existence.\n  - Automatically compiles Hugo Markdown with front matter using local `hugo` CLI when present.\n\n#### `vale`\n- **Parameters**:\n  - `text` (string, optional): Text to analyze for grammar and editorial style.\n  - `path` (string, optional): Path to markdown document.\n- **Behavior**:\n  - Bootstraps and executes a pinned Vale binary (v3.13.1) with SHA256 integrity checks.\n  - Prioritizes project-specific `.vale.ini` in the workspace or falls back to bundled rules.\n  - Respects workspace `speedgrapher.json` accept lists to suppress false positives on approved domain terms.\n\n---\n\n## Specialized Agent Skills\n\nSpeedgrapher bundles six specialized operational Agent Skills designed for agentic coding and technical writing workflows:\n\n| Skill | Operational Scope | Location |\n| :--- | :--- | :--- |\n| **`@deslopify`** | Strips AI tropes, clichés, and structural signposting to restore authentic voice. | [`skills/deslopify/SKILL.md`](skills/deslopify/SKILL.md) |\n| **`@inverted-pyramid`** | Enforces information cascading: high-impact action $\\rightarrow$ usage $\\rightarrow$ technical details. | [`skills/inverted-pyramid/SKILL.md`](skills/inverted-pyramid/SKILL.md) |\n| **`@tech-interviewer`** | Brainstorming persona extracting raw logs, errors, and breakthrough narratives before outlining. | [`skills/tech-interviewer/SKILL.md`](skills/tech-interviewer/SKILL.md) |\n| **`@tech-writer`** | Drafting specialist adapting to author voice with grounded code examples and citations. | [`skills/tech-writer/SKILL.md`](skills/tech-writer/SKILL.md) |\n| **`@tech-reviewer`** | Quality gate specialist evaluating drafts against `fog`, `slop`, and `vale` with indexed suggestions. | [`skills/tech-reviewer/SKILL.md`](skills/tech-reviewer/SKILL.md) |\n| **`@tech-publisher`** | Final checklist specialist handling SEO audits, translation boundaries, and publication plans. | [`skills/tech-publisher/SKILL.md`](skills/tech-publisher/SKILL.md) |\n\n---\n\n## Developer Instructions\n\n### Local Development\n\nCompile the server binary to `bin/speedgrapher`:\n```bash\nmake build\n```\n\nRun test suite across all packages:\n```bash\nmake test\n```\n\nGenerate test coverage report:\n```bash\nmake test-cov\n```\n\n### Releasing\n\nSpeedgrapher relies on Git tags for versioning. Build versions are dynamically injected at compile time:\n\n```bash\n# 1. Create and push release tag\nmake bump-version VERSION=0.8.0\ngit push origin v0.8.0\n\n# 2. Test release packaging locally\nmake snapshot\n\n# 3. Trigger production release via GoReleaser\nmake release\n```\n\n---\n\n## Architecture Decision Records (ADRs)\n\nCore architectural choices are documented under [`design/adr/`](design/adr/):\n\n- **[ADR-0001: Record architecture decisions](design/adr/0001-record-architecture-decisions.md)**: Establishes the ADR system.\n- **[ADR-0002: Automated Vale bootstrapping](design/adr/0002-automated-vale-bootstrapping.md)**: Runtime downloader and SHA256 verification gate for Vale.\n- **[ADR-0003: Stdio model context protocol transport](design/adr/0003-stdio-model-context-protocol-transport.md)**: Process isolation and stream transport.\n- **[ADR-0004: Evolutionary documentation](design/adr/0004-replace-changelog-with-evolutionary-documentation.md)**: Transition from manual changelog to git tags and ADRs.\n- **[ADR-0005: Enforce version alignment](design/adr/0005-source-of-truth-for-versions-is-git-tags.md)**: Git tag source of truth for version metadata.\n\n---\n\n## License\n\nThis project is licensed under the Apache License, Version 2.0. See [LICENSE](LICENSE) for details.\n\n## References\n\n- [Model Context Protocol Specification](https://modelcontextprotocol.io/specification/2025-06-18)\n- [Official Go SDK for MCP](https://github.com/modelcontextprotocol/go-sdk)\n- [Tropes.fyi Cliché Database](https://tropes.fyi/)\n- [Vale Linter](https://vale.sh/)\n",
  "bytes": 11267,
  "sha": "331ddfea2770ed4853e763c0f5e230b8e4e905938c8e8d84cbc1aa59541075fd",
  "repo_slug": "danicat/speedgrapher",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/plg_danicat_speedgrapher_a52b18d5/readme"
}