flat-data-file-import
File import workflow - upload CSV/Excel/TSV files, set up email-based, managed SFTP, or managed S3 file import into Improvado
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
メニュー
File import workflow - upload CSV/Excel/TSV files, set up email-based, managed SFTP, or managed S3 file import into Improvado
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
Open-source multi-channel campaign launcher. Orchestrates marketing experiments from ICP/positioning input through planning, creative production, and parallel channel launch (Google Ads, Meta Ads, email outreach). No proprietary infrastructure required — works with your own API keys. Use when user says "launch campaign", "campaign launcher", "experiment launch", "multi-channel campaign", "plan and launch experiment".
Use when user says "resume session", "what did I work on", or "find conversation about [topic]". Automatically searches, resumes, and analyzes Claude Code sessions. Handles session discovery, content search, and automatic session restoration from any directory.
Generate a CMO Cross-Channel Performance Dashboard — funnel-stage executive view of marketing spend, pull-through, and per-channel efficiency across Meta, Google, LinkedIn, TikTok, Reddit, TTD, and the Discovery API long tail. Single-screen, three-tab layout (Overview / Channels / Customer Journey) with reactive filter bar (period × channel × conversion event × attribution model). Warehouse-first (ClickHouse `_all_data` views) with Discovery API fallback for channels not in the warehouse; all data from real sources. Built via /business-intelligence-editor as ONE custom-component widget that contains the entire dashboard.
Generate a Daily Performance Console — multi-channel operational dashboard for performance marketers. Blended KPI strip (Spend / Impressions / Clicks / CTR / Conversions / CPA / CR / ROAS), per-channel split with health flags, universal trend chart with date / metric / channel filters, and three tabs (Warnings / Recommendations / Monthly Pacing). Discovery API only, all data live. Built via /business-intelligence-editor as ONE custom-component widget that contains the entire console.
AUTO-INVOKE when user asks to see, fetch, or check current/live/real-time data from any ad platform (Facebook/Meta, Google Ads, TikTok, LinkedIn, Pinterest, Bing, Snap, X, GA4, Google Sheets, etc.), inspect ad accounts/campaigns/ads, pull insights directly from a platform, or any task that requires calling `discoveryRequestTool`, `discoveryListConnectorsTool`, or `discoveryListAccountsTool`. Trigger phrases include: "current campaigns", "live data", "real-time metrics", "show me platform-name ads", "fetch from platform-name API", "what's in my platform-name", "check platform-name insights". Use BEFORE any direct platform API call — the skill defines the mandatory URL/version protocol.
Field mapping and data extraction setup - find report types and validate fields
SOC 職業分類に基づく
| name | flat-data-file-import |
| description | File import workflow - upload CSV/Excel/TSV files, set up email-based, managed SFTP, or managed S3 file import into Improvado |
When a user wants to import a file (CSV, Excel, TSV, etc.) into Improvado, use these tools.
Routing rules:
getConnectionsTool({ datasourceName: "file_import" })createConnectionTool({ data_source_name: "managed_sftp", auth_id: "login_password", params: { connection_name: "<name>" } })createConnectionTool({ data_source_name: "managed_s3", auth_id: "login_password", params: { connection_name: "<name>" } })Call getConnectionsTool({ datasourceName: "file_import" }) to get the connection_id
Call uploadFlatDataFileTool with fileUrl (from chat attachment) → get filepath
Call discoverFileFieldsTool with connection_id + filepath → get fields + data_sample
Analyze the data_sample and discovered fields:
Call generateFlatDataSampleTool with the fields for a data preview
Important: Present the proposed schema to the user as a table with columns: Field Name, Type, Is key (dimension or property/metric), Sample Values. Propose a Data Table name based on the file name and Write Policy, then ask for confirmation.
Example:
| Field Name | Type | Is Key | Sample Values |
|----------------|--------|--------|------------------------|
| date | Date | Yes | 2024-01-15, 2024-01-16 |
| campaign_name | Text | Yes | Brand Campaign, Promo |
| impressions | Number | No | 15234, 8921 |
| spend | Number | No | 150.50, 89.20 |
Data Table Name: facebook_ads_performance
Write Policy: Upsert (whole data)
After the user confirms (or edits), call createFlatDataExtractTool with the confirmed configuration
After extract creation succeeds, provide the user with a link to the created extract:
| Resource | Link |
|----------|-----------------------------------------------------------------------------------------------|
| Extract | {platform_host}/info_connector/overview/{connection_id}/{extract_id}?workspace={workspace_id} |
Example: https://report.improvado.io/info_connector/overview/19417/1785798?workspace=12345
Use connection_id from step 1, extract_id from the createFlatDataExtractTool response, and the current workspace ID.
uploadFlatDataFileTool → get file_path, file_name, file_sizeuploadNewFileToExtractTool with the extract_id and file detailsThe same File Import Workflow applies, except:
getConnectionsTool({ datasourceName: "email_file_import" }) instead of "file_import"previewEmailImportAddressTool to show the user the email addresscreateFlatDataExtractTool succeeds, the email becomes active — users can send files to itManaged SFTP and Managed S3 are Improvado-hosted file ingestion endpoints. Improvado provisions and owns the SFTP/S3 server — the user does NOT provide their own server.
Flow: Improvado creates a connection → provides credentials (host, port, login, password) → the user uploads files to Improvado's server using those credentials → Improvado automatically ingests the data.
NEVER describe this as "connecting to the user's SFTP/S3 server" — it is the opposite: the user connects to our server.
IMPORTANT: Do NOT ask for data table name, file columns, or schema upfront. Follow these steps IN ORDER:
getConnectionsTool({ datasourceName: "managed_sftp" }) to check for existing connections.createConnectionTool({ data_source_name: "managed_sftp", auth_id: "login_password", params: { connection_name: "<name>" } })Ask the user to upload a sample file (CSV/Excel/TSV) via chat attachment. This is required to discover the schema.
Follow the standard File Import Workflow (upload → discover fields → confirm schema → create extract).
Use the connection_id from Step 1.
After createFlatDataExtractTool succeeds:
Call getManagedConnectionCredentialsTool({ data_source_name: "managed_sftp", connection_id }) to fetch SFTP credentials
Show the credentials and folder name to the user. The folder name is the snake_case version of the data_table_title (e.g. "My Sales Report" → my_sales_report).
Password display: mask the password with asterisks and wrap it in a <details> tag so the user can click to reveal:
<details><summary>••••••••</summary>actual_password</details>
Example:
**SFTP Connection Credentials (Improvado-hosted):**
| Field | Value |
|-------------|--------------------------------|
| Host | ftp.tools.improvado.io |
| Port | 2022 |
| Login | managed_1_26_my_data |
| Password | <details><summary>••••••••</summary>ysUXysurE9TGhSvTAc4k</details> |
| Folder | my_sales_report |
| Resource | Link |
|----------|-----------------------------------------------------------------------------------------------|
| Extract | {platform_host}/info_connector/overview/{connection_id}/{extract_id}?workspace={workspace_id} |
Upload your files to the folder above via SFTP using these credentials. Improvado will automatically process incoming files.
Same steps as Managed SFTP Workflow above, except:
getConnectionsTool({ datasourceName: "managed_s3" }) instead of "managed_sftp"createConnectionTool({ data_source_name: "managed_s3", auth_id: "login_password", params: { connection_name: "<name>" } }) if no connection existsgetManagedConnectionCredentialsTool({ data_source_name: "managed_s3", connection_id }) to fetch S3 credentials{ method: "upsert", scope: "whole_data" } which replaces all data on each file upload.