●SUNSET — gemini-robotics-er-1.6-preview は8月31日に停止します。残り13日となり、移行の実作業に取りかかる時期です●MIGRATION — 移行先は7月30日にパブリックプレビューとなった gemini-robotics-er-2-preview と gemini-robotics-er-2-streaming-preview です。テキスト・画像・動画・音声を入力できます●PRICING — 8月13日に一般提供となった Gemini 3.7 Flash の導入価格は2026年12月31日までです。年をまたぐワークロードは価格改定を織り込んだ試算が要ります●DEPRECATION — サンプリングパラメータの temperature・top_p・top_k が非推奨になりました。明示指定しているコードは、指定を外した場合の出力差分を今のうちに測っておくと安全です●VIDEO — 動画の生成と編集に対応する Gemini Omni Flash が Google AI Studio と Gemini API から利用できます●LOGS — Interactions API が開発者ログに対応し、対象となる API 呼び出しのログを AI Studio のダッシュボードで確認できるようになりました●SUNSET — gemini-robotics-er-1.6-preview は8月31日に停止します。残り13日となり、移行の実作業に取りかかる時期です●MIGRATION — 移行先は7月30日にパブリックプレビューとなった gemini-robotics-er-2-preview と gemini-robotics-er-2-streaming-preview です。テキスト・画像・動画・音声を入力できます●PRICING — 8月13日に一般提供となった Gemini 3.7 Flash の導入価格は2026年12月31日までです。年をまたぐワークロードは価格改定を織り込んだ試算が要ります●DEPRECATION — サンプリングパラメータの temperature・top_p・top_k が非推奨になりました。明示指定しているコードは、指定を外した場合の出力差分を今のうちに測っておくと安全です●VIDEO — 動画の生成と編集に対応する Gemini Omni Flash が Google AI Studio と Gemini API から利用できます●LOGS — Interactions API が開発者ログに対応し、対象となる API 呼び出しのログを AI Studio のダッシュボードで確認できるようになりました
やっかいなのは、タイトルも slug も違うのに、検索エンジンから見ると「ほぼ同じ問いに答える2本」になっているケースです。これは SEO の世界でキーワードカニバリゼーション(共食い)と呼ばれ、両方の記事の掲載順位が中途半端に下がる原因になります。人間の目視レビューでは、600本のうちどれと近いのかを毎回照合しきれません。
def check_draft(draft_mdx: Path, db_path: str = "topics.db", top_k: int = 5): conn = sqlite3.connect(db_path) rows = conn.execute("SELECT slug, vec FROM topics").fetchall() slugs = [r[0] for r in rows] mat = np.vstack([np.frombuffer(r[1], dtype=np.float32) for r in rows]) q = embed(build_topic_text(draft_mdx)) sims = mat @ q # 全ベクトル正規化済みなので内積 = コサイン類似度 order = np.argsort(-sims)[:top_k] print(f"draft: {draft_mdx.stem}") for i in order: verdict = "🛑差し戻し" if sims[i] >= 0.92 else \ "⚠️要判断" if sims[i] >= 0.88 else "✅許容" print(f" {sims[i]:.3f} {verdict} {slugs[i]}") return sims[order[0]], slugs[order[0]]