skills/opendndapps/ogt-skills/ogt-docs-create-social

ogt-docs-create-social

SKILL.md

OGT Docs - Create Social

Create and manage social media and marketing content.

Overview

Social content documents live in docs/content/ and follow a workflow similar to tasks. Content moves through drafting, review, and publishing stages.

flowchart LR
    subgraph workflow ["Content Workflow"]
        DRAFT["drafts/"] --> REVIEW["review/"]
        REVIEW --> SCHEDULED["scheduled/"]
        SCHEDULED --> PUBLISHED["published/"]
        REVIEW --> REJECTED["rejected/"]
    end

    subgraph types ["Content Types"]
        T["twitter/"]
        B["blog/"]
        N["newsletter/"]
        R["release/"]
    end

When to Use

  • Announcing new features or releases
  • Creating Twitter/X threads
  • Writing blog posts
  • Drafting newsletter content
  • Preparing launch communications
  • Documenting social media strategy

Folder Structure

docs/content/
├── social/                         # Social media posts
│   ├── twitter/
│   │   ├── drafts/
│   │   ├── review/
│   │   ├── scheduled/
│   │   └── published/
│   │
│   ├── linkedin/
│   │   └── ...
│   │
│   └── discord/
│       └── ...
├── blog/                           # Blog posts
│   ├── drafts/
│   ├── review/
│   └── published/
├── newsletter/                     # Newsletter content
│   ├── drafts/
│   ├── scheduled/
│   └── sent/
├── release/                        # Release announcements
│   └── {version}/
│       ├── announcement.md
│       ├── twitter_thread.md
│       ├── blog_post.md
│       └── .published
└── _templates/                     # Content templates
    ├── tweet.md
    ├── thread.md
    ├── blog_post.md
    ├── newsletter.md
    └── release_announcement.md

Content Types

Twitter/X Posts

Single tweets or threads for announcements.

Folder: docs/content/social/twitter/drafts/{slug}/

twitter/drafts/v2-launch/
├── content.md          # The tweet(s)
├── .version
├── .scheduled_for      # Optional: scheduled date
└── .thread             # Signal: this is a thread

content.md (Single Tweet)

# Tweet: v2.0 Launch

## Content

We just shipped v2.0!

Key highlights:

- Steam OAuth
- Global fuzzy search
- Card variants

Check it out: https://example.com

## Hashtags

#gamedev #vtt #dnd

## Media

- screenshot_v2.png (attach)

## Scheduled

2026-02-06 10:00 UTC

content.md (Thread)

# Thread: Building ORC v2

## Tweet 1/5

We just shipped ORC v2.0!

Here's the story of how we built it...

A thread.

## Tweet 2/5

First, we tackled authentication.

Steam OAuth was the most requested feature. We built it on top of our existing Google/Discord flow.

The key insight: abstract the provider layer early.

## Tweet 3/5

Next: search.

Users wanted instant, fuzzy search. We evaluated:

- Fuse.js (heavy)
- Lunr (no fuzzy)
- MiniSearch (perfect)

MiniSearch is 6KB and blazing fast.

## Tweet 4/5

Card variants took the longest.

8 entity types × 4 variants = 32 components.

We used composition patterns to share logic. CardBase handles the common stuff.

## Tweet 5/5

Try it out: https://example.com

We'd love your feedback. What should we build next?

#gamedev #vtt #dnd

---

## Media

- Tweet 1: hero_image.png
- Tweet 3: search_demo.gif
- Tweet 4: card_variants.png

Blog Posts

Longer form content for the company blog.

Folder: docs/content/blog/drafts/{slug}/

blog/drafts/fuzzy-search-deep-dive/
├── post.md             # The blog post
├── meta.md             # SEO metadata
├── assets/             # Images, diagrams
│   ├── cover.png
│   └── benchmark.png
├── .version
└── .word_count         # Target word count

post.md

# How We Built Instant Fuzzy Search

## Summary

A deep dive into implementing sub-16ms fuzzy search for 10,000+ items.

## Content

### The Problem

Our users needed to search across creatures, items, spells, and more. The old approach used `String.includes()` - fine for small datasets, but slow and inflexible at scale.

### Requirements

1. Instant results (<16ms for 10k items)
2. Fuzzy matching ("fir" matches "Fireball")
3. Relevance ranking
4. TypeScript support

### Choosing a Library

We evaluated three options:

| Library    | Size | Fuzzy | Speed |
| ---------- | ---- | ----- | ----- |
| Fuse.js    | 25KB | Yes   | Slow  |
| Lunr       | 20KB | No    | Fast  |
| MiniSearch | 6KB  | Yes   | Fast  |

MiniSearch won: small, fast, and battle-tested (used by VitePress).

### Implementation

```typescript
import MiniSearch from "minisearch";

const searchIndex = new MiniSearch({
  fields: ["name", "description", "type"],
  storeFields: ["name", "slug", "type"],
  searchOptions: {
    fuzzy: 0.2,
    prefix: true,
  },
});

searchIndex.addAll(creatures);

const results = searchIndex.search("fir");
// Returns: Fireball, Fire Elemental, Fire Giant...
```

Performance

Benchmarks on 10,000 items:

  • Index build: 45ms (one-time)
  • Search: 2-8ms
  • Memory: ~2MB

Conclusion

MiniSearch delivered exactly what we needed. The key was choosing the right tool for the job.


Author

Jane Developer

Published

2026-02-06


#### meta.md

```markdown
# SEO Metadata

## Title

How We Built Instant Fuzzy Search | ORC Blog

## Description

A deep dive into implementing sub-16ms fuzzy search for 10,000+ game content items using MiniSearch.

## Keywords

- fuzzy search
- MiniSearch
- React search
- instant search
- TypeScript

## Open Graph

- og:title: How We Built Instant Fuzzy Search
- og:description: Sub-16ms search for 10,000+ items
- og:image: /blog/fuzzy-search/cover.png

## Canonical

https://example.com/blog/fuzzy-search-deep-dive

Release Announcements

Coordinated multi-channel release communications.

Folder: docs/content/release/v2.0.0/

release/v2.0.0/
├── announcement.md     # Main announcement
├── twitter_thread.md   # Twitter version
├── blog_post.md        # Blog version
├── newsletter.md       # Email version
├── discord.md          # Discord announcement
├── assets/
│   ├── hero.png
│   └── features.png
├── .version
├── .release_date       # When to publish
└── .published          # Signal: all published

announcement.md

# Release Announcement: v2.0.0

## Tagline

The biggest ORC update yet: Steam login, instant search, and beautiful new cards.

## Key Features

### Steam OAuth

Log in with your Steam account. Your Steam display name syncs automatically.

### Global Fuzzy Search

Press Ctrl+K to search everything. Instant, fuzzy, and ranked by relevance.

### Card Variants

Condensed cards for dense grids. List items for compact tables. More ways to view your content.

## Call to Action

Try it now at https://example.com

## Quotes

> "This update transforms how you interact with your content." - Lead Developer

## Links

- Full changelog: /changelog
- Documentation: /docs
- Discord: /discord

## Assets

- Hero image: assets/hero.png
- Feature grid: assets/features.png
- Video demo: assets/demo.mp4

Newsletter Content

Email newsletter drafts.

Folder: docs/content/newsletter/drafts/2026-02-weekly/

newsletter/drafts/2026-02-weekly/
├── content.md          # Newsletter content
├── subject_lines.md    # A/B test subjects
├── .version
├── .send_date          # Scheduled send
└── .segment            # Target audience

content.md

# Newsletter: February Week 1

## Subject

ORC v2.0 is here - Steam login, instant search, and more

## Preview Text

The biggest update yet. Here's what's new.

## Header

![ORC v2.0](header.png)

## Body

### Hey {first_name},

Big news: ORC v2.0 just shipped!

### What's New

**Steam Login**
Connect your Steam account for seamless authentication.

**Instant Search**
Press Ctrl+K for lightning-fast, fuzzy search across all content.

**Card Variants**
New condensed and list views for your creature and item collections.

### Try It Now

[Launch ORC](https://example.com)

### Coming Next

- Dark mode
- Mobile improvements
- API access

### Feedback

Reply to this email or join us on [Discord](https://discord.gg/example).

Cheers,
The ORC Team

## Footer

You're receiving this because you signed up at example.com.
[Unsubscribe]({{unsubscribe_url}}) | [Preferences]({{preferences_url}})

subject_lines.md

# Subject Line Options

## A/B Test

A: "ORC v2.0 is here - Steam login, instant search, and more"
B: "Big update: Connect Steam, search instantly, new card views"
C: "v2.0 shipped! Here's what's new in ORC"

## Winner Criteria

Open rate > 25%

## Notes

- Keep under 50 characters for mobile
- Include version number for clarity
- Action-oriented preferred

Content Workflow

Creating New Content

flowchart TD
    A[Identify Content Need] --> B{Type?}

    B -->|Tweet| C[twitter/drafts/]
    B -->|Blog| D[blog/drafts/]
    B -->|Newsletter| E[newsletter/drafts/]
    B -->|Release| F[release/{version}/]

    C --> G[Create Folder]
    D --> G
    E --> G
    F --> G

    G --> H[Copy Template]
    H --> I[Write Content]
    I --> J[Add Assets]
    J --> K[Move to review/]

Moving Through Stages

# Draft complete, request review
mv docs/content/social/twitter/drafts/{slug} docs/content/social/twitter/review/

# Approved, schedule
mv docs/content/social/twitter/review/{slug} docs/content/social/twitter/scheduled/
echo "2026-02-06T10:00:00Z" > docs/content/social/twitter/scheduled/{slug}/.scheduled_for

# Published
mv docs/content/social/twitter/scheduled/{slug} docs/content/social/twitter/published/
touch docs/content/social/twitter/published/{slug}/.published

Templates

docs/content/_templates/tweet.md

# Tweet: {Title}

## Content

{Tweet text, max 280 characters}

## Hashtags

{Relevant hashtags}

## Media

- {image/video to attach}

## Scheduled

{Date and time, or "immediate"}

## Notes

{Internal notes, not published}

docs/content/_templates/thread.md

# Thread: {Title}

## Tweet 1/N

{Opening tweet with hook}

## Tweet 2/N

{Content}

## Tweet N/N

{Call to action and hashtags}

---

## Media

- Tweet N: {filename}

## Notes

{Internal notes}

Signal Files Reference

Signal Content Purpose
.version JSON Schema version
.scheduled_for ISO date When to publish
.published Empty Content is live
.thread Empty This is a thread
.segment Audience name Newsletter segment
.word_count Number Target word count
.send_date ISO date Newsletter send date
.release_date ISO date Release announcement date

Content Checklist

Before Review

  • Content is complete
  • Spelling/grammar checked
  • Links are valid
  • Assets attached/referenced
  • Hashtags appropriate (social)
  • SEO metadata complete (blog)
  • Call to action included

Before Publishing

  • Reviewed and approved
  • Scheduled time confirmed
  • All assets uploaded
  • Links tested
  • Analytics tracking in place
Weekly Installs
6
First Seen
Feb 7, 2026
Installed on
openclaw6
gemini-cli6
antigravity6
claude-code6
github-copilot6
codex6