Communitygithub.com

a2ngerer/claude_onboarding_agent

Claudeをブランドのコンテンツボイスに合わせてセットアップします。ブランドボイスとターゲットオーディエンスに基づいたプラットフォーム別のボイスルールを生成します。公開、分析、メディアパイプラインはカバーしません。

claude_onboarding_agent とは?

このスキルは、Claude Codeエージェントがブランドの一貫したコンテンツボイスで文章を作成できるように設定します。ユーザーは使用プラットフォーム(YouTube、ショートフォーム動画、ニュースレター/ブログ、ポッドキャスト)を選択し、ブランドボイスとターゲットオーディエンスを詳細に指定します。すると、選択したプラットフォームごとに`.claude/rules/`配下に個別のボイスルールファイルを生成し、さらにCLAUDE.mdにブランド情報とルールへのポインタを追記します。このスキルはボイスの設定のみに焦点を当てており、公開、分析、メディアパイプラインの設定は意図的にスコープ外としています。既存のCLAUDE.mdがある場合は上書きせず、新しいセクションを追加または更新するため、他の設定と安全に共存できます。生成されたルールファイルが既に存在する場合もユーザーの編集を保護してスキップされるため、非破壊的な運用が可能です。

対応✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/a2ngerer/claude_onboarding_agent/tree/HEAD/skills/content-voice-setup

お気に入りのAIに質問する

このエージェントスキルを事前に読み込んだ状態で新しいチャットを開きます。

ドキュメント

コンテンツボイスセットアップ

このスキルは、選択したプラットフォーム全体でClaudeがブランドボイスで文章を作成できるように設定します。小さなCLAUDE.mdポインタと、選択したプラットフォームごとに1つの.claude/rules/content-voice-<platform>.mdファイルを生成します。公開ツール、分析、メディアパイプライン、スケジュール設定は構成しません。これらはスコープ外であり、意図的に除外されています。

引き継ぎコンテキスト: skills/_shared/consume-handoff.mdを読み、ハンドオフブロックがあればそれを実行します。このヘルパーは以下のローカル変数を保証します: detected_language、existing_claude_md、inferred_use_case、repo_signals、graphify_candidate。ユーザー向けの文章にはdetected_languageを使用してください。生成されるファイルの内容は英語のままです。

既存のCLAUDE.md: existing_claude_md: trueの場合、上書きしないでください。ファイルの最後に新しい区切りセクションを追加します:

<!-- onboarding-agent:start setup=content-voice skill=content-voice-setup section=claude-md -->
## Claude Onboarding Agent — Content Voice Setup
...生成された内容...
<!-- onboarding-agent:end -->

区切られたブロックが以前の実行ですでに存在する場合は、マーカー間の内容のみを置き換え、残りはそのままにします。生成された.gitignoreエントリは、# onboarding-agent: content-voice — start / — endマーカーでラップし、/upgrade-setupが非破壊的に更新できるようにします。

サポートファイル

これらのファイルは、それを呼び出すステップでオンデマンドで読み取ってください。先読みはしないでください。

  • skills/_shared/consume-handoff.md — オーケストレーターハンドオフ解析 + インラインフォールバック (前置き、ステップ1の前)
  • skills/_shared/offer-superpowers.md — 標準のSuperpowersオプトイン (ステップ1)

ステップ1: 依存関係のインストール

skills/_shared/offer-superpowers.mdを読み、以下のパラメータで実行します: skill_slug: content-voice-setup、mandatory: false、capability_line: "広く使用されている無料のClaude Codeスキルライブラリです。ブレインストーミングスキルは、特定の作品のボイスを決める前にさまざまな角度を探るのに役立ちます。"。このヘルパーはユーザーに確認し、yesの場合はskills/_shared/installation-protocol.mdに委任し、superpowers_installed、superpowers_scope、superpowers_methodを設定します。

ステップ2: コンテキスト質問

一度に1つずつ質問します:

  1. 「どのプラットフォーム向けにボイス主導のコンテンツを作成していますか? (複数選択可 — カンマ区切りのアルファベットで、少なくとも1つ選択) A) YouTube (長尺動画 / スクリプト) B) ショートフォーム動画 (Instagram Reels / TikTok / Shorts) C) ニュースレター / ブログ (長尺文章) D) ポッドキャスト (会話形式の音声)

    答えをアルファベットのリストとして解析します。少なくとも1つの選択を必須とし — 空の入力の場合はもう一度質問します。selected_platformsとして保存します。スラッグにマッピング:

    • A → youtube
    • B → shortform
    • C → newsletter
    • D → podcast
  2. 「あなたのブランドボイスをどのように説明しますか? 具体的であればあるほど、Claudeがあなたのスタイルに合わせやすくなります。 例: '教育的だけどカジュアル、頭の良い友人に説明するような感じ'、'フィンテックのプロフェッショナルなソートリーダー'、'面白くて不遜なテックコメンタリー'、'温かくてパーソナルなウェルネスコンテンツ'

    答えをそのままbrand_voiceとして保存します。プラットフォームごとのルールファイルはこれをヘッダーに挿入します。

  3. 「あなたのターゲットオーディエンスは誰ですか? (例: 'AIツールに興味がある25〜40歳の開発者'、'技術バックグラウンドのない中小企業の経営者'、'手軽なワークアウトを探しているフィットネス愛好家')

    target_audienceとして保存します。

ステップ3: プラットフォームごとのボイスルールの出力

selected_platformsの各スラッグについて、.claude/rules/content-voice-<slug>.mdにルールファイルを書き込みます。ファイルがすでに存在する場合は、書き込みをスキップしてSkipped .claude/rules/content-voice-<slug>.md (already exists)とログに記録します — ユーザーの編集を上書きしないでください。

各ルールファイルは自己完結型 (40行以下) で、brand_voiceとtarget_audienceをヘッダーに代入します。以下のテンプレートを使用し、[brand_voice]と[target_audience]を取得した回答で置き換えます。

content-voice-youtube.md

# Content Voice — YouTube (long-form video)

Voice profile: [brand_voice]
Target audience: [target_audience]

## Format rules
- Every script opens with a hook in the first 30 seconds: promise a concrete payoff the viewer will get by the end.
- Structure: hook → setup (what problem / question) → payoff (the answer, story, or demo) → CTA.
- The CTA names one single action. Do not chain "like, subscribe, comment, join" lists.
- Keep sentences readable aloud — default to ≤ 20 words per spoken line.

## Tone rules
- Match the voice profile above in every draft. If a draft would read as generic AI commentary, rewrite the opening line until it sounds like [brand_voice].
- Address the target audience directly. Assume their baseline knowledge; do not explain what they already know.

## Do not
- Do not write title-bait the intro does not deliver on — the hook must be a truthful setup for the payoff.

content-voice-shortform.md

# Content Voice — Short-form video (Reels / TikTok / Shorts)

Voice profile: [brand_voice]
Target audience: [target_audience]

## Format rules
- Line 1 IS the hook. Scroll-stop happens in the first two seconds.
- One single idea per post. If a second idea matters, it is a separate post.
- End with a question, a CTA, or a concrete takeaway — never trail off.
- Keep total word count tight (≈ 30–60 spoken words for a 30-second cut).

## Tone rules
- Voice profile matches [brand_voice] exactly — short form amplifies voice, so generic tone is the default failure mode.
- Target [target_audience]; do not soften for a broader audience.

## Do not
- Do not bury the hook past line 1. Do not open with a throat-clearing "So, today I want to talk about …".

content-voice-newsletter.md

# Content Voice — Newsletter / blog (written long-form)

Voice profile: [brand_voice]
Target audience: [target_audience]

## Format rules
- Subject line is specific, not clever — name the takeaway or the question the reader gets answered.
- Opener is personal or story-based (1–3 sentences); then one core idea; then a clear takeaway; then a simple CTA.
- Section breaks are allowed but not required — err toward one tight argument over a listicle.
- Close with one sentence the reader could forward to a colleague.

## Tone rules
- Voice profile matches [brand_voice] throughout — no section should sound like a different author wrote it.
- Address [target_audience] by their actual situation, not by role labels.

## Do not
- Do not send an edition without a specific takeaway the reader can act on or remember.

content-voice-podcast.md

# Content Voice — Podcast (conversational audio)

Voice profile: [brand_voice]
Target audience: [target_audience]

## Format rules
- Cold-open with a hook — a scene, a question, or a concrete moment from the episode. Intro music comes after.
- Transitions are spoken, not jump-cut: name the shift ("Let's come back to that in a minute — first, …").
- Prep questions in advance, but leave room for follow-ups; a pre-written script reads as a pre-written script.
- End with the guest's CTA (if any), then a single host CTA.

## Tone rules
- Voice profile [brand_voice] applies to host lines; match guests' energy rather than forcing them into it.
- Keep jargon at [target_audience]'s level; translate on first use.

## Do not
- Do not lecture — stay conversational. If a segment reads as a monologue, cut it or reframe as a question.

実際に書き込まれたファイルのリスト (すでに存在するためにスキップされたものを除く) を、完了サマリー用にemitted_voice_filesとして収集します。

ステップ4: アーティファクトの生成

CLAUDE.md

# Claude Instructions — Content Voice

## Brand
Platforms: [selected_platformsからカンマ区切り]
Brand voice: [brand_voice]
Target audience: [target_audience]

## Scope
This setup covers voice only — not publishing, analytics, or media pipelines. For longer content workflows, layer additional skills or tools on top.

## Voice rules (per platform)
[selected_platformsの各スラッグについて、ルールファイルを指す箇条書きを1つ出力:]
- YouTube: `.claude/rules/content-voice-youtube.md`
- Short-form video: `.claude/rules/content-voice-shortform.md`
- Newsletter / blog: `.claude/rules/content-voice-newsletter.md`
- Podcast: `.claude/rules/content-voice-podcast.md`

## Guidelines
- Always write in the brand voice defined above — never sound generic or like a typical AI.
- Before drafting, consult the relevant `.claude/rules/content-voice-<platform>.md` file for the target platform.
- When asked for cross-platform adaptations, apply each platform's rule file individually — do not copy-paste between formats.

[superpowers_installed が true の場合のみ含める]
## Superpowers
Superpowers is installed. For ideation sessions and planning content series, use `superpowers:brainstorming` to explore angles before committing to a direction.

.gitignore

# Large media files
*.mp4
*.mov
*.avi
*.psd
*.ai
*.sketch
*.fig

# OS
.DS_Store
Thumbs.db

# Claude local settings
.claude/settings.local.json

ステップ5: アップグレードメタデータの書き込み

setup_slug: content-voice、skill_slug: content-voice-setupを設定します。plugin_versionはプラグイン自身のplugin.jsonから解決します。その後、skills/_shared/write-meta.mdに従って./.claude/onboarding-meta.jsonを作成またはマージします。

ステップ6: アンカーセクションのレンダリング

skills/_shared/anchor-mapping.mdを読みます。setup_type: content-voiceの行を見つけます。その行の各アンカースラッグについて:

  1. skills/_shared/render-anchor-section.mdを以下のパラメータで呼び出します:
    • setup_type: content-voice
    • skill_slug: content-voice-setup
    • anchor_slug: <slug>
    • target_file: ./CLAUDE.md
    • fallback_content: <そのスラッグの skills/anchors/SKILL.md からの埋め込みフォールバック>
  2. このスキルで./AGENTS.mdファイルが以前に生成されている場合は、target_file: ./AGENTS.mdで呼び出しを繰り返します。

単一のrender-anchor-section.md呼び出しがplaceholderを返しても失敗しないでください。レンダリングされたスラッグ / プレースホルダースラッグを完了サマリー用に収集します。

すべての呼び出しについて、render_freshnessもキャプチャします。これがnetworkまたはcache以外 (つまりfallbackまたはembedded) の場合は、(anchor_slug, render_freshness)のペアをanchor_freshness_notesに記録します。完了サマリーのAnchor freshness行はこのリストを使用します。

ステップ7: 完了サマリー

✓ Content Voice setup complete!

Scope: brand voice + per-platform tone rules. Publishing, analytics, and
media pipelines are NOT covered — this skill is intentionally narrow.

Files created:
  CLAUDE.md                                    — brand, scope, pointers to voice rules
  .claude/rules/content-voice-<slug>.md        — one file per selected platform [list emitted_voice_files; note skipped ones as "(already existed — left untouched)"]
  .gitignore                                   — large media file rules
  .claude/onboarding-meta.json                 — setup marker for /upgrade-setup

External skills:
  [✓ Superpowers installed via superpowers_method (superpowers_scope)]
  [skipped — install later with: /plugin install superpowers@claude-plugins-official]
  [⚠ Superpowers installation failed — install manually: https://github.com/obra/superpowers]

Anchor freshness:
  [omit the whole block if anchor_freshness_notes is empty; otherwise one line per entry:
   Anchor <anchor_slug> served from <render_freshness> — consider running /anchors to refresh.]

Next steps:
  Start a new Claude session and say: "Draft a [YouTube script | short-form hook | newsletter edition | podcast cold-open] about [topic] in my brand voice"
  Or: "Adapt this blog post for Instagram Reels, following my short-form voice rules"
  - Run `/anchors` any time to refresh the anchor-derived sections. If any section was rendered as a placeholder due to offline mode, re-run `/anchors` once you are back online.

関連スキル