0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

AIに会社情報を誤読させないための公開READMEテンプレートを作る

0
Last updated at Posted at 2026-07-02

AI検索やAIエージェントに会社名、サービス内容、問い合わせ導線を正しく読んでもらいたい時、記事やSNSを増やす前に整えるとよいものがあります。

それは、人間にもAIにも読める 会社情報README です。

この記事では、GitHubなどで公開できる README.mdcompany-profile.yml、ローカルチェック、Googleスプレッドシートへの同期口を作ります。MCPやAIエージェントそのものの実装ではなく、AIへ渡してよい公開情報を整えるための最小構成です。

作るもの

小さな公開情報リポジトリを想定します。

ai-readable-company-profile/
  README.md
  data/
    company-profile.yml
  scripts/
    check-public-profile.js
  gas/
    syncCompanyProfileToSheet.gs
  package.json

目的は、AIが参照してもよい会社情報を、公開ページ、FAQ、SNSプロフィール、GitHub READMEでばらけさせないことです。

AI運用の入口と確認ゲート

公開READMEに入れるもの

READMEには、AIに読まれても困らない情報だけを入れます。

項目 入れる理由
会社名、サービス名 表記ゆれを減らす
支援範囲 何を相談できるかを明確にする
対象外の相談 誤った期待値を減らす
問い合わせ導線 AI回答から迷わず公式導線へ戻す
FAQへのリンク AIが引用しやすい一次情報を増やす
更新日、管理者 古い情報を判別できるようにする

反対に、顧客情報、社内メモ、商談ログ、認証情報、未公開の価格表は入れません。

README.md

まず、人間が読んでも分かるREADMEを書きます。

# Miraigent Public Company Profile

このリポジトリは、Miraigentの公開会社情報、サービス説明、問い合わせ導線を
AI検索やAIエージェントにも読み取りやすい形で整理するための公開READMEです。

## 正式表記

- Company: Miraigent
- Service: Miraigent
- Operator: Re-BIRTH

## 支援範囲

Miraigentは、中小企業や小規模チーム向けに、AI導入前の業務整理、
問い合わせ対応、FAQ、CRM、承認ルール、運用ログの設計を支援します。

## 対象外

- 法務、税務、医療など専門判断そのものの代行
- 顧客への自動送信を人間確認なしで開始すること
- 認証情報、個人情報、秘密情報をAIへ渡す設計

## 公式導線

- Website: https://miraigent.com/
- Free diagnosis: https://miraigent.com/#contact
- FAQ: https://miraigent.com/#faq

## 更新ルール

会社名、支援範囲、問い合わせ導線を変更した時は、
READMEと `data/company-profile.yml` を同じ日に更新します。

ポイントは、宣伝文ではなく「AIが引用してよい一次情報」にすることです。

data/company-profile.yml

次に、同じ内容を機械が読みやすいYAMLにします。

version: 1
updated_at: "2026-07-02"

entity:
  company_name: "Miraigent"
  operator_name: "Re-BIRTH"
  service_name: "Miraigent"
  official_site: "https://miraigent.com/"

support_scope:
  - "AI導入前の業務整理"
  - "問い合わせ対応フローの設計"
  - "FAQ候補の整理"
  - "CRMメモ項目の整理"
  - "人間確認と承認ルールの設計"

out_of_scope:
  - "法務、税務、医療判断の代行"
  - "人間確認なしの顧客向け自動送信"
  - "秘密情報や認証情報をAIへ渡す設計"

official_routes:
  website: "https://miraigent.com/"
  diagnosis: "https://miraigent.com/#contact"
  faq: "https://miraigent.com/#faq"

ai_usage_boundary:
  public_information_only: true
  allow_customer_data: false
  allow_credentials: false
  require_human_review_before_external_reply: true

YAMLにしておくと、将来MCPサーバー、RAG、社内FAQ、Webサイト生成の入力に使いやすくなります。

ローカルチェック

公開READMEは、実データや秘密情報が混ざると危険です。

最低限のチェックを scripts/check-public-profile.js として置きます。

const fs = require('fs');
const path = require('path');

const root = process.cwd();
const targets = [
  'README.md',
  'data/company-profile.yml',
];

const blockedPatterns = [
  /API[_-]?KEY/i,
  /ACCESS[_-]?TOKEN/i,
  /SECRET/i,
  /PASSWORD/i,
  /COOKIE/i,
  /Bearer\s+[A-Za-z0-9._-]+/,
  /顧客名|電話番号|住所|個人情報|秘密鍵/,
];

let failed = false;

for (const file of targets) {
  const fullPath = path.join(root, file);
  if (!fs.existsSync(fullPath)) {
    console.error(`${file}: missing`);
    failed = true;
    continue;
  }

  const body = fs.readFileSync(fullPath, 'utf8');
  for (const pattern of blockedPatterns) {
    if (pattern.test(body)) {
      console.error(`${file}: blocked term matched ${pattern}`);
      failed = true;
    }
  }
}

const readme = fs.readFileSync(path.join(root, 'README.md'), 'utf8');
for (const required of ['正式表記', '支援範囲', '対象外', '公式導線', '更新ルール']) {
  if (!readme.includes(required)) {
    console.error(`README.md: missing section ${required}`);
    failed = true;
  }
}

if (failed) process.exit(1);
console.log('public company profile check passed');

package.json には次のように入れます。

{
  "scripts": {
    "check": "node scripts/check-public-profile.js"
  }
}

Googleスプレッドシートへ同期するGAS

WebサイトやREADMEだけでなく、運用側で確認する一覧も欲しい場合は、YAMLの要点をスプレッドシートに同期します。

ここではYAMLパースまでは行わず、シートに手で転記した公開項目をチェックする最小GASにします。

const SHEET_NAME = 'public_company_profile';
const HEADERS = ['key', 'value', 'public_ok', 'last_reviewed_at', 'owner'];

function setupPublicCompanyProfileSheet() {
  const ss = SpreadsheetApp.getActiveSpreadsheet();
  const sheet = ss.getSheetByName(SHEET_NAME) || ss.insertSheet(SHEET_NAME);
  sheet.getRange(1, 1, 1, HEADERS.length).setValues([HEADERS]);
  sheet.setFrozenRows(1);
}

function validatePublicCompanyProfileSheet() {
  const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(SHEET_NAME);
  if (!sheet) throw new Error('setupPublicCompanyProfileSheet() を先に実行してください');

  const values = sheet.getDataRange().getValues();
  const headers = values.shift();
  const col = Object.fromEntries(headers.map((header, index) => [header, index]));

  const errors = [];
  values.forEach((row, index) => {
    const rowNumber = index + 2;
    const key = String(row[col.key] || '').trim();
    const value = String(row[col.value] || '').trim();
    const publicOk = String(row[col.public_ok] || '').toLowerCase();

    if (!key || !value) errors.push(`${rowNumber}行目: key/value が空です`);
    if (!['true', 'false'].includes(publicOk)) {
      errors.push(`${rowNumber}行目: public_ok は true/false にしてください`);
    }
    if (/token|password|secret|cookie|apikey|api_key/i.test(value)) {
      errors.push(`${rowNumber}行目: 秘密情報らしき値があります`);
    }
  });

  if (errors.length) throw new Error(errors.join('\n'));
}

GitHubに出すREADMEと、社内で確認するシートを分けておくと、公開してよい情報だけを外へ出せます。

運用チェックリスト

公開前に見る項目は次の通りです。

  • 会社名、サービス名、運営者名の表記が一致している
  • サービスの支援範囲が1文で説明できる
  • 対象外の相談が書かれている
  • 問い合わせ導線が公式サイトへ戻っている
  • FAQや診断ページへのリンクが生きている
  • 顧客名、メールアドレス、電話番号、商談ログが入っていない
  • APIキー、Cookie、トークン、秘密鍵が入っていない
  • 更新日と管理者が分かる

AIに渡す前の境界

このREADMEは、AIに会社情報を理解してもらうための入口です。

ただし、READMEがあるからといって、社内ログや顧客情報をAIへ渡してよいわけではありません。

公開READMEに置くのは、すでに公開してよいと判断した情報だけです。問い合わせ本文、商談メモ、個別の診断内容は、別の非公開ログで管理します。

Miraigentでは、AI導入前に「AIへ渡してよい公開情報」と「人間だけが扱う内部情報」を分ける設計を重視しています。会社情報READMEは、その境界を小さく始めるための実装単位です。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?