CommunitySchreiben & Editierengithub.com

Varnan-Tech/opendirectory

Sammelt niedrig bewertete Rezensionen aus dem App Store und Google Play, gruppiert sie in Broken-Promise-Muster und erstellt ein priorisiertes Copy-Briefing mit Positionierungsmöglichkeiten.

Was ist opendirectory?

Dieses Skill für KI-Agenten (wie Claude Code, Cursor oder Codex) führt eine komplette Competitive-Review-Arbitrage in einer einzigen Sitzung durch. Ausgehend von einer App-URL aus dem App Store oder Google Play extrahiert es automatisch Bewertungen mit 1–3 Sternen, clustert sie nach wiederkehrenden Beschwerdethemen und bewertet jedes Cluster mit einer gewichteten Punktzahl basierend auf Sternebewertung und Aktualität. Der entscheidende Schritt ist die „Broken-Promise-Erkennung“: Das Skill vergleicht die Versprechen der App-Store-Beschreibung mit den tatsächlichen Beschwerden aus den Clustern und identifiziert Widersprüche. Daraus generiert es ein vollständiges Go-to-Market-Briefing mit Landing-Page-Überschriften, Werbetext-Richtungen und Anti-Claim-Warnungen – alles basierend auf wörtlichen Rezensionstexten. Der Workflow ist stark regelbasiert mit Qualitätsprüfungen (keine Paraphrasen, keine erfundenen Statistiken, keine verbotenen Wörter), eigenen Qualitätstoren und einer strukturierten JSON-Ausgabe, die nahtlos in Content-Prozesse integriert werden kann.

Funktioniert mit✓Claude Code~Codex CLI~Cursor✓Gemini CLI
npx skills add https://github.com/Varnan-Tech/opendirectory/tree/main/skills/app-store-review-arbitrage

Installed? Explore more Schreiben & Editieren skills: steipete/notion, langchain-ai/langchain, bytedance/podcast-generation · View all 6 →

In Ihrer bevorzugten KI fragen

Öffnet einen neuen Chat, in dem dieser Agent-Skill bereits geladen ist.

Dokumentation

App-Store-Review-Arbitrage

Wandle die App-Store- oder Google-Play-URL eines Mitbewerbers in ein Go-to-Market-Briefing für eine einzige Session um: priorisierte Beschwerdecluster, eine Broken-Promise-Karte, Landing-Page-Überschriften und Werbetext-Richtungen – alles basierend auf wörtlichen Rezensionen.


Kritische Regeln (vor Schritt 1 lesen)

Diese Regeln gelten während aller Schritte. Ein Verstoß gegen eine von ihnen führt zum Fehlschlagen der Selbst-QA (Schritt 6).

  1. Jedes Zitat muss wörtlich sein. Keine Paraphrase, keine Grammatikkorrektur, keine Bereinigung. Nur die exakten Worte des Rezensenten.
  2. Keine erfundenen Statistiken. Schreibe nicht „40 % schneller“ oder „2× zuverlässiger“, es sei denn, ein Rezensent hat eine ähnliche Formulierung explizit verwendet. Der Selbst-QA-Schritt prüft auf nicht belegte Prozentangaben.
  3. Clusternamen müssen die Sprache der Rezensenten verwenden. Studiere die Anti-Pattern-Tabelle in Schritt 3.
  4. Jede Überschrift und jede Werbetext-Richtung muss ihr Quellcluster zitieren. Format: [cluster: "cluster-name"].
  5. Abschnitt 2 ist immer in der Ausgabe enthalten – auch im degradierten Zustand. Niemals überspringen oder weglassen.
  6. Keine verbotenen Wörter in generierten Texten: powerful, robust, seamless, innovative, game-changing, streamline, leverage, revolutionize, transform.

Schritt 1 – Eingabe parsen und Plattform erkennen

Akzeptiere eine natürlichsprachliche Aufforderung, die eine App-URL enthält. Extrahiere die URL.

Plattformerkennung:

  • apps.apple.com → App Store
  • play.google.com/store/apps/details?id= → Google Play
  • Jede andere URL → stoppe und antworte: „Bitte gib eine direkte App-Store- oder Google-Play-URL an. Ich kann keine Rezensionsdaten von anderen Quellen analysieren.“

ID-Extraktion (vor dem Aufruf des Skripts durchführen):

PlattformWas extrahierenWie
App StoreNumerische app_idZiffern nach /id in der URL
App Storecountry2-Buchstaben-Code nach apps.apple.com/ (z. B. us, gb)
Google Playpackage_nameWert des id=-Query-Parameters

Speichere die extrahierten Werte – du wirst sie für den Ausgabedateinamen in Schritt 7 benötigen.

Wenn product_context in der Aufforderung des Benutzers angegeben wurde (was das eigene Produkt tut), speichere es – es wird verwendet, um die Texte in Schritt 5 zu personalisieren.


Schritt 2 – Rezensionen & Metadaten sammeln

Führe das vollständige Abrufskript aus:

python3 scripts/fetch_reviews.py "{app_url}" --output {tmpdir}/asr-raw.json

(Hinweis: Ersetze {tmpdir} durch das temporäre Verzeichnis deines Betriebssystems, z. B. /tmp unter macOS/Linux oder C:\Temp unter Windows).

Dies ruft sowohl die Store-Beschreibungs-Metadaten als auch die Rezensionen ab.

  • App Store: iTunes-API – kostenlos, keine Authentifizierung. App-Store-Rezensionen werden über Apples öffentlichen iTunes-RSS-Feed abgerufen. Einige Apps geben aufgrund von Apples API-Beschränkungen 0 Rezensionen zurück – in diesem Fall fährt das Skill mit den verfügbaren Daten fort und protokolliert eine Warnung. Google Play ist der primär unterstützte Pfad.
  • Google Play: google-play-scraper-Paket – kostenlos, keine Authentifizierung

Wenn das Skript fehlschlägt, lies den Fehler aus stderr. Häufige Ursachen:

  • Paket nicht installiert: führe pip install google-play-scraper aus
  • App nicht gefunden: überprüfe, ob die URL ein aktuelles, aktives Listing ist
  • Google-Play-API-Fehler: führe pip install --upgrade google-play-scraper aus und wiederhole den Vorgang

Das Skript gibt den Sammelfortschritt auf stderr aus. Warte, bis es abgeschlossen ist. Nach Abschluss lies {tmpdir}/asr-raw.json und zeige die Sammelzusammenfassung dem Benutzer an:

✓ [N] Rezensionen gesammelt ([N] niedrig bewertete 1–3★) von [Plattform]
  Datumsbereich: [älteste] bis [neueste]
  Paket: [iTunes-API | google-play-scraper]

Überprüfe den Exit-Code:

  • Exit 0 → Sammlung erfolgreich, überprüfe metadata.store_description. Wenn null: notiere dies – Abschnitt 2 verwendet den degradierten Zustand. Fahre mit Schritt 3 fort.
  • Exit 1 → Fehler (lies stderr-Nachricht, zeige sie dem Benutzer an, stoppe)
  • Exit 2 → Gate 1 ausgelöst (< 10 niedrig bewertete Rezensionen gefunden)

Gate 1 – Schwaches Signal Stopp: Wenn das Skript mit Code 2 beendet wird, lies die gate_message aus {tmpdir}/asr-raw.json und zeige sie dem Benutzer wörtlich an. Fahre nicht mit Schritt 3 fort. Erstelle kein unvollständiges Briefing.


Schritt 3 – Beschwerde-Clustering

Lade low_star_reviews aus {tmpdir}/asr-raw.json.

Clustere alle niedrig bewerteten Rezensionen in 4–6 benannte Beschwerdethemen. Wende diese Formel an, um jede Rezension zu bewerten:

complaint_weight = (4 - Bewertung) × recency_factor

recency_factor:
  Alter der Rezension ≤ 90 Tage → 1,0
  Alter der Rezension 91–365 Tage → 0,7
  Alter der Rezension > 365 Tage → 0,4

Alter der Rezension = (heutiges Datum) − (Rezensions date-Feld) in Tagen.

cluster_score = Summe von complaint_weight für alle Rezensionen im Cluster.

Clusternamen – kritische Regel:

Du wirst abstrakte Namen schreiben wollen. Widerstehe. Verwende das exakte Verb und Substantiv aus den Rezensionen.

❌ Abstrahiert (falsch)✅ Sprache der Rezensenten (richtig)
„Stabilitätsprobleme“„Abstürze beim Exportieren als PDF“
„Sync-Probleme“„Daten nach Sync zwischen Telefon und Desktop verloren“
„Monetarisierungs-Hürden“„Bezahlschranke erscheint nach 3 Tagen, nicht nach 14 wie versprochen“
„Leistungsabfall“„App friert jedes Mal ein, wenn ich suche“
„Onboarding-Probleme“„Kann nicht herausfinden, wie ich einen Teammitglied einlade“

Regeln:

  • Jede Rezension gehört zu genau einem Cluster (weise sie ihrem dominanten Thema zu)
  • Verwerfe jedes Cluster mit weniger als 3 Rezensionen – protokolliere es als Rauschen
  • Wähle 3–4 wörtliche Zitate pro Cluster: zuerst die niedrigste Sternebewertung, dann die aktuellsten

Gate 2 – Minimale Clustergröße: Nachdem Cluster mit weniger als 3 Rezensionen verworfen wurden, überprüfe, wie viele Cluster übrig bleiben.

Gate 3 – Flag für geringe Konfidenz: Wenn weniger als 3 Cluster übrig bleiben:

  • Stoppe NICHT. Fahre mit der Ausgabe fort.
  • Füge dies unmittelbar nach den App-Metadaten in die Briefing-Kopfzeile ein:

    ⚠ GERINGE KONFIDENZ: Nur [N] Beschwerdecluster(s) haben die minimale Evidenzschwelle erreicht (≥ 3 unterstützende Rezensionen). Die Ausgabe spiegelt begrenzte Daten wider. Ziehe einen Mitbewerber mit mehr Rezensionen in Betracht oder erweitere den Bewertungsfilter.

  • Nimm Cluster der mittleren Stufe in die Ausgabe auf (Score ≥ 5)

Klassifizierung der Stufen (für die Ranglistentabelle in Abschnitt 1):

  • Kritisch: Score ≥ 60
  • Hoch: Score 15–59
  • Mittel: Score 5–14 (nur enthalten, wenn Gate 3 zutrifft)
  • Rauschen: Score < 5 (verwerfen, nicht aufnehmen)

Schreibe Cluster in {tmpdir}/asr-clusters.json:

{
  "clusters": [
    {
      "name": "Clustername in der Sprache der Rezensenten",
      "score": 34.5,
      "tier": "Hoch",
      "review_count": 14,
      "verbatim_quotes": [
        {"rating": 1, "text": "exakte Worte des Rezensenten", "date": "YYYY-MM-DD"},
        ...
      ]
    }
  ],
  "discarded_noise": 2,
  "gate_3_triggered": false
}

Schritt 4 – Broken-Promise-Erkennung

Dies ist der Schritt, der dieses Skill von allen vorhandenen Tools unterscheidet. Er muss als eigener benannter Schritt ausgeführt werden.

Lade:

  • metadata.store_description aus {tmpdir}/asr-raw.json
  • Alle Cluster aus {tmpdir}/asr-clusters.json

Wenn store_description null ist: Setze store_description_available: false. Schreibe {tmpdir}/asr-promises.json mit einem leeren broken_promises-Array und detection_note wie unten angegeben. Fahre mit Schritt 5 fort.

Wenn die Store-Beschreibung verfügbar ist:

  1. Behauptungen extrahieren. Eine Behauptung ist jede spezifische, überprüfbare Aussage über das App-Verhalten. Siehe references/broken-promise.md für die vollständige Definition und Beispiele. Schließe vage Superlative, Teambeschreibungen und Pressezitate aus.

  2. Querverweise. Überprüfe für jede Behauptung alle Clusternamen und wörtlichen Zitate. Ein Widerspruch liegt vor, wenn das Cluster das Versagen des versprochenen Verhaltens direkt dokumentiert (mindestens 3 Rezensionen).

  3. Broken-Promise-Datensätze erstellen – einen pro bestätigtem Widerspruch:

    {
      "claim_text": "wörtlicher Auszug aus der Store-Beschreibung",
      "complaint_cluster": "exakter Clustername",
      "gap_label": "Behauptet X; Benutzer berichten Y",
      "evidence_count": 18
    }
    

Schreibe nach {tmpdir}/asr-promises.json:

{
  "store_description_available": true,
  "broken_promises": [...],
  "no_contradictions_found": false,
  "detection_note": null
}

Degradierte Zustände:

  • Keine Beschreibung: store_description_available: false, detection_note: "Store-Beschreibung nicht verfügbar (abgerufen am YYYY-MM-DD, leer zurückgegeben). Broken-Promise-Vergleich kann nicht durchgeführt werden."
  • Keine Widersprüche: no_contradictions_found: true, detection_note: "Keine gebrochenen Versprechen erkannt. Die Store-Beschreibung scheint im Vergleich zu den Beschwerdeclustern keine übertriebenen Behauptungen aufzustellen."

Siehe references/broken-promise.md für Anti-Patterns (was NICHT markiert werden soll).


Schritt 5 – Texte generieren

Verwende die Cluster aus Schritt 3 und die gebrochenen Versprechen aus Schritt 4, um die Abschnitte 3–5 des Briefings zu generieren.

Textregeln (gelten für alle drei Abschnitte):

  • Jede Überschrift und jede Richtung muss ihr Quellcluster zitieren: [cluster: "cluster-name"]
  • Keine verbotenen Wörter: powerful, robust, seamless, innovative, game-changing, streamline, leverage, revolutionize, transform
  • Keine erfundenen Statistiken – keine Prozentangaben oder Zahlen, es sei denn, ein Rezensent hat sie verwendet
  • Wenn product_context angegeben wurde: mache die „Sag dies“-Richtungen spezifisch für die Funktionen dieses Produkts. Wenn nicht: schreibe sie als Positionierungsvorlagen, die der Benutzer ausfüllt.
  • Verwende die Sprache der Rezensenten in Überschriften – leite sie ab von oder zitiere den tatsächlichen Rezensionstext

Abschnitt 3 – Landing-Page-H1-Bank (3–5 Überschriften):

  • Jede: "[Überschriftstext]" [cluster: "cluster-name"]
  • ≤ 8 Wörter, wo möglich
  • Spreche den frustrierten Benutzer direkt an

Abschnitt 4 – Werbetext-Richtungen (genau 3 Paare):

Cluster: [Clustername]
Nicht das: "[was der Mitbewerber behauptet oder eine generische schwache Alternative]"
Sag dies: "[Gegenbehauptung, die auf Beschwerdebeweisen basiert]"
Beweise: [N] Rezensenten berichteten [wörtliche Beschwerdenzusammenfassung]

Abschnitt 5 – Anti-Claim-Warnungen:

  • Eine Warnung pro gebrochenem Versprechen aus Schritt 4
  • Wenn Abschnitt 2 degradiert ist: ein einzelner Hinweis (siehe references/brief-format.md für den genauen Wortlaut)

Schritt 6 – Selbst-QA

Überprüfe vor dem Speichern das generierte Briefing auf diese Prüfungen. Wenn eine Prüfung fehlschlägt, korrigiere das spezifische Element und prüfe erneut – speichere kein fehlschlagendes Briefing.

PrüfungRegel
Wörtliche Zitate vorhandenJedes Cluster hat ≥ 2 wörtliche Zitate
Keine verbotenen WörterKeines der 9 verbotenen Wörter erscheint in den Abschnitten 3–5
Keine nicht belegten ProzentangabenJedes % in der Ausgabe muss auf die tatsächlichen Worte eines Rezensenten zurückzuführen sein
Alle Texte zitiertJede Überschrift und jedes „Sag dies“ hat eine [cluster: "name"]-Zitierung
Clusteranzahl ≥ 1Mindestens ein Cluster hat die Gates 2/3 überstanden
Abschnitt 2 vorhandenAbschnitt 2 erscheint in der Ausgabe (in jedem Zustand)
Zitierte Bewertungen ≤ 3Alle wörtlichen Zitate stammen aus 1–3★-Rezensionen

Hinweis zur Clusteranzahl: Das Minimum für ein bestandenes Briefing ist 1 Cluster (nicht 3). Das Gate-3-Flag für geringe Konfidenz behandelt Fälle, in denen < 3 Cluster überleben – das ist eine Warnung, kein Fehlschlag. Die Selbst-QA schlägt nur fehl, wenn 0 Cluster vorhanden sind.


Schritt 7 – Ausgabe speichern

Setze das vollständige Briefing gemäß dem Format in references/brief-format.md zusammen.

Speichere nach:

docs/review-briefs/[app-id]-[YYYY-MM-DD].md

Erstelle das Verzeichnis docs/review-briefs/, falls es nicht existiert.

Gib das vollständige Briefing auf dem Bildschirm aus.

Bereinige temporäre Dateien: {tmpdir}/asr-raw.json, {tmpdir}/asr-clusters.json, {tmpdir}/asr-promises.json.

Individual skills in this repo

This repo contains 20 individual skills — each has its own dedicated page.

Varnan-Tech/opendirectory

World-class brand strategist and naming expert. Uses an interrogation-led discovery phase to extract your brand's DNA, then applies scientific naming frameworks (Phonosemantics) and automated multi-TLD domain checking.

Varnan-Tech/opendirectory

Use when the user asks to generate or update a project's CLAUDE or AGENTS context file from a codebase scan. Writes a focused file under 100 lines containing only the non-obvious build commands, conventions, and gotchas Claude Code needs.

Varnan-Tech/opendirectory

Use when the user wants to verify cold emails, enrich a lead list, or autonomously guess email addresses from a CSV using ValidEmail.co or the open-source Reacher engine.

Varnan-Tech/opendirectory

Competitive intelligence orchestrator tracking companies across 8+ platforms (GitHub, Twitter, Reddit, HN, PH, YC Jobs) with heat scores and AI briefings.

Varnan-Tech/opendirectory

Give it your product URL or description. It finds your top 5 competitors, runs three-track PR research across all of them (editorial, podcasts, communities), identifies which channels appear most frequently, looks up the journalist or host for each, and returns a tiered outreach list with story angles and ready-to-send cold pitch drafts tailored to your product. Use when asked to find PR opportunities, discover where competitors got featured, build a media outreach list, find which journalists cover my space, or get pitch templates for press coverage.

Varnan-Tech/opendirectory

Generate high-converting, deep-dive growth case studies in MDX format. Use this skill when asked to write a case study or blog post about a company's growth, tech stack, or product-led strategy. It handles the full pipeline (researching the company via Tavily, generating a 16:9 cover image, quality checking the draft, uploading assets to cloud storage, and pushing directly to the target repository).

Varnan-Tech/opendirectory

Scans your project for outdated npm, pip, Cargo, Go, or Ruby packages. Runs a CVE security audit. Fetches changelogs, summarizes breaking changes with Gemini, and opens one PR per risk group (patch, minor, major). Includes Diagnosis Mode for install conflicts. Use when asked to update dependencies, check for outdated packages, open dependency PRs, scan for package updates, audit for CVEs, or flag breaking changes in upgrades. Trigger when a user says "check for outdated packages", "update my dependencies", "open PRs for dependency updates", "scan for CVEs", or "which packages need upgrading".

Varnan-Tech/opendirectory

Generates and updates README.md and API reference docs by reading your codebase's functions, routes, types, schemas, and architecture. Uses graphify to build a knowledge graph first, then writes accurate docs from it. Use when asked to write docs, generate a README, document an API, update stale docs, create an API reference from code, add an architecture section, or document a project in any language. Trigger when a user says their docs are missing, outdated, or wants to document their codebase without writing it manually.

Varnan-Tech/opendirectory

Evaluates expired domain candidates against a target niche, scores them by topical relevance, historical activity level, and history cleanliness, then outputs a ranked shortlist with explainable reasoning and risk flags.

Varnan-Tech/opendirectory

Brutally honest developer-experience audit for a GitHub repo. Scores 10 DX dimensions (time-to-first-success, README clarity, visual proof, install, quick-start, docs, examples, community, trust, marketing), writes a shareable roast in the requested tone (brutal/honest/kind), produces a prioritized action plan ranked by impact × effort, and sketches an ideal README. Trigger when user says "roast my repo", "audit my README", "dx audit", "developer experience review", "score my GitHub project", "before launch checklist", or "make my repo shareable".

Varnan-Tech/opendirectory

Drafts and designs a complete HTML email newsletter from a topic or content brief. Outputs paste-ready HTML for Loops, Mailchimp, Beehiiv, Resend, or any standard email platform. Includes subject line options and plain-text fallback. Trigger when a user says "write a newsletter", "draft an email newsletter", "create an HTML email", "design an email for my subscribers", or "write a newsletter about [topic]".

Varnan-Tech/opendirectory

Takes a GitHub PR URL or the current branch and writes a plain-English explanation of what it does and why, then posts it as a PR comment. Use when asked to explain a PR, summarize a pull request, write a plain-English description of a PR, add a summary comment to a PR, or understand what a PR changes. Trigger when a user says "explain this PR", "summarize this pull request", "what does this PR do", "add a comment explaining the PR", or shares a GitHub PR URL and asks what it does.

Varnan-Tech/opendirectory

Audit how often LLMs recommend your brand vs competitors and generate a GEO action plan.

Varnan-Tech/opendirectory

Takes a competitor's public GitHub repo URL, fetches their open issues via the GitHub REST API, filters noise locally, clusters issues into 6 demand categories, computes a demand score per issue and per cluster, and outputs a ranked demand gap report with a GTM messaging brief. Use when asked to scan a competitor's GitHub issues, find what their users are begging for, turn GitHub complaints into product positioning, identify competitor feature gaps, or generate messaging from real user demand. Trigger when a user says "scan competitor issues", "what are users asking for on X repo", "find demand gaps in Y", "turn GitHub issues into messaging", or "what should I build based on competitor complaints".

Varnan-Tech/opendirectory

Find recurring confusion in your repo's GitHub Discussions, rank it by urgency, and draft the actual docs fixes and content angles — with verbatim community quotes and source links as evidence.

Varnan-Tech/opendirectory

SEO keyword research workflow for blog generation using Google Trends data. Use when writing blog posts, planning content calendars, or optimizing articles for search engines. Finds breakout keywords, builds content structure, and generates SEO-optimized blog outlines targeting tech and developer audiences.

Varnan-Tech/opendirectory

Generates a professionally designed case study PDF for B2B SaaS sales and marketing. Supports 7 page layouts, 9 style presets, 1-4 page output. Trigger when user says "create a case study", "write a customer story", "make a case study PDF", "design a success story", "turn this customer win into a PDF".

Varnan-Tech/opendirectory

Generates data visualization charts (bar, line, area, pie, doughnut, scatter, radar, treemap) as PNG using Apache ECharts v6. 1080×1080px default, 5 style presets, highlight annotations. Trigger when user says "create a chart", "visualize data", "make a bar chart", "line graph", "pie chart", "data visualization", "chart this data", "plot", "graph", or "visualize these numbers".

Varnan-Tech/opendirectory

Creates professionally designed B2B SaaS e-books in HTML + CSS, exported as print-ready PDF. 3–10 pages, 9 style presets, 11 page layout types. Trigger when user says "create an ebook", "design a lead magnet", "make a PDF guide", "build a gated content piece", "write a B2B ebook", "design a white paper", "create a nurture asset", or "make a PDF report".

Varnan-Tech/opendirectory

Use when the user asks to generate a blog cover image, thumbnail, or article header. Automatically uses modern typography, brand logos, and Google Search grounding to create beautiful 16:9 images with Gemini 3.1 Flash Image Preview.

Verwandte Skills