AI検索やAIエージェントに会社名、サービス内容、問い合わせ導線を正しく読んでもらいたい時、記事やSNSを増やす前に整えるとよいものがあります。
それは、人間にもAIにも読める 会社情報README です。
この記事では、GitHubなどで公開できる README.md、company-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でばらけさせないことです。
公開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は、その境界を小さく始めるための実装単位です。
