Skip to content

Migration

If you have ideas scattered across Notion databases, Obsidian vaults, or other tools, NeuralRepo makes it straightforward to bring them all into one place.

  1. Export from Notion. Open your Notion database, click the ... menu, and select Export. Choose CSV or Markdown & CSV format. Unzip the downloaded file.

  2. Map fields. Notion properties map to NeuralRepo fields as follows:

    Notion PropertyNeuralRepo FieldNotes
    Name / TitletitleRequired
    Notes / ContentbodySupports markdown
    Tags (multi-select)tagsArray of strings
    Status (select)statusMap to: captured, exploring, building, shipped, shelved
    URLsource_urlOptional
  3. Import via API. Use a script to read the CSV and push each row:

    #!/bin/bash
    API_KEY="nrp_your_key_here"
    API_URL="https://neuralrepo.com/api/v1/ideas"
    # Skip header line, read CSV
    tail -n +2 exported.csv | while IFS=',' read -r title body tags status; do
    # Convert comma-separated tags to JSON array
    tags_json=$(echo "$tags" | sed 's/;/","/g' | sed 's/^/["/' | sed 's/$/"]/')
    curl -s -X POST "$API_URL" \
    -H "X-API-Key: $API_KEY" \
    -H "Content-Type: application/json" \
    -d "{
    \"title\": \"$title\",
    \"body\": \"$body\",
    \"tags\": $tags_json,
    \"status\": \"captured\"
    }"
    echo " -> Imported: $title"
    done

Obsidian vaults are folders of markdown files, which makes migration straightforward.

  1. Identify your ideas folder. If your vault has a specific folder for ideas (e.g., Ideas/ or Inbox/), use that. Otherwise, you can import the entire vault.

  2. Push each file via CLI.

    Terminal window
    for file in ~/obsidian-vault/Ideas/*.md; do
    title=$(head -1 "$file" | sed 's/^# //')
    body=$(cat "$file")
    nrepo push "$title" --body "$body" --tag obsidian --tag imported
    done
  3. Handle frontmatter. If your Obsidian notes use YAML frontmatter with tags, you can extract them:

    Terminal window
    for file in ~/obsidian-vault/Ideas/*.md; do
    title=$(head -1 "$file" | sed 's/^# //')
    body=$(cat "$file")
    # Extract tags from frontmatter (assumes format: tags: [tag1, tag2])
    tags=$(grep '^tags:' "$file" | sed 's/tags: \[//' | sed 's/\]//' | tr -d ' ')
    if [ -n "$tags" ]; then
    IFS=',' read -ra tag_array <<< "$tags"
    tag_flags=""
    for t in "${tag_array[@]}"; do tag_flags="$tag_flags --tag $t"; done
    nrepo push "$title" --body "$body" $tag_flags
    else
    nrepo push "$title" --body "$body" --tag obsidian
    fi
    done

If you have ideas in a JSON file, you can import them directly:

[
{
"title": "Build a habit tracker",
"body": "Mobile app with streak counting and push notifications",
"tags": ["mobile", "react-native"]
},
{
"title": "API rate limiter library",
"body": "Token bucket implementation for Express middleware",
"tags": ["api", "node"]
}
]
#!/bin/bash
API_KEY="nrp_your_key_here"
# Use jq to iterate over the array
jq -c '.[]' ideas.json | while read -r idea; do
curl -s -X POST "https://neuralrepo.com/api/v1/ideas" \
-H "X-API-Key: $API_KEY" \
-H "Content-Type: application/json" \
-d "$idea"
echo " -> Imported: $(echo "$idea" | jq -r '.title')"
sleep 0.3
done

The nrepo CLI supports pushing from files directly:

Terminal window
# Single idea from a file
nrepo push "My idea" --body "$(cat ./idea.md)" --tag imported
# Batch import with a loop
for file in ./ideas/*.md; do
filename=$(basename "$file" .md)
nrepo push "$filename" --body "$(cat "$file")" --tag imported
done

After importing, take these steps to organize your new repository:

  • Review tags. Consolidate similar tags (e.g., js and javascript) using the web dashboard.
  • Set statuses. Imported ideas default to captured. Move active ones to exploring or building.
  • Create relations. Link related ideas together. The mind map in the web app helps visualize clusters.
  • Check for duplicates. NeuralRepo’s duplicate detection runs automatically on import. Review flagged duplicates in the web dashboard.
  • Delete junk. Remove ideas that are no longer relevant to keep your repository focused.