Files
santifer--career-ops/.env.example
T
wehub-resource-sync d083df1fdb
CodeQL Analysis / Analyze (javascript-typescript) (push) Failing after 2s
Web CI / web typecheck + build (push) Failing after 1s
Release Please / release-please (push) Failing after 1s
CodeQL Analysis / Analyze (go) (push) Failing after 16s
chore: import upstream snapshot with attribution
2026-07-13 12:02:43 +08:00

59 lines
3.5 KiB
Bash

# career-ops — Environment Variables
# Copy this file to .env and fill in your values.
#
# cp .env.example .env
# ── Gemini Integration ────────────────────────────────────────────────────────
# Required for: node gemini-eval.mjs "JD text here"
# Free API key: https://aistudio.google.com/apikey
# Free tier: 15 RPM / 1M tokens/day with gemini-2.5-flash (no billing needed)
GEMINI_API_KEY=your_gemini_api_key_here
# ── Optional: Override default Gemini model ───────────────────────────────────
# Default: gemini-2.5-flash (free-tier, fast)
# Alternatives: gemini-1.5-flash, gemini-1.5-pro, gemini-2.5-flash-thinking-exp
# GEMINI_MODEL=gemini-2.5-flash
# ── OpenRouter Integration (openrouter-runner.mjs — no-CLI, $0 free tier) ─────
# Required for: node openrouter-runner.mjs
# Free API key: https://openrouter.ai → Sign Up → Keys
# Free tier: hundreds of models at $0 cost
OPENROUTER_API_KEY=sk-or-v1-paste-your-key-here
# Optional: pin a specific model instead of using auto-rotation.
# When set, the runner uses this model directly and skips blacklist/rotation.
# Model names are fetched live from the OpenRouter API at runtime — no hardcoding.
# CAREER_OPS_MODEL=google/gemini-2.5-pro:free
# ── OpenAI-compatible eval (openai-eval.mjs) ─────────────────────────────────
# Evaluate offers with ANY OpenAI-compatible endpoint (OpenAI, OpenRouter,
# Together, Groq, DeepSeek, Zhipu GLM, LM Studio, llama.cpp, vLLM, Ollama /v1).
# Required for: node openai-eval.mjs "JD text here"
# OPENAI_API_KEY=your_provider_key_here
# OPENAI_BASE_URL=https://api.openai.com/v1 # e.g. https://openrouter.ai/api/v1
# OPENAI_MODEL=gpt-4o-mini # e.g. deepseek/deepseek-chat
# ── Other integrations (add your own below) ──────────────────────────────────
# ANTHROPIC_API_KEY=your_anthropic_key_here # For Claude-based workflows
# ══════════════════════════════════════════════════════════════════════════════
# Plugins (opt-in) — keys for bundled plugins. Enable each in config/plugins.yml.
# Plugins are OFF by default; the core needs none of these. See plugins/README.md.
# ══════════════════════════════════════════════════════════════════════════════
# ── apify plugin (provider) ── keyed job source via an Apify actor
# Token: https://console.apify.com/account/integrations
# APIFY_TOKEN=apify_api_paste-your-token-here
# ── notion plugin (export + search) ── mirror your tracker to a Notion DB
# Integration token: https://www.notion.so/my-integrations
# NOTION_ACCESS_TOKEN=ntn_paste-your-internal-integration-secret
# NOTION_PARENT_PAGE_ID=your-notion-parent-page-id
# ── gmail plugin (ingest) ── pull job leads from a Gmail label
# OAuth client (Desktop) + a refresh token from the consent flow:
# https://console.cloud.google.com/apis/credentials
# GMAIL_CLIENT_ID=your-client-id.apps.googleusercontent.com
# GMAIL_CLIENT_SECRET=your-client-secret
# GMAIL_REFRESH_TOKEN=your-refresh-token