GeoMind is an open-source Skill that automatically converts Feishu documents into industry relationship maps. Its core pipeline includes document ingestion, entity and relationship extraction, Tencent Location Service geocoding, and map rendering. It solves a common problem: spatial relationships are hard to understand when information is trapped inside linear documents. Keywords: Feishu CLI, Tencent Location Services, geographic intelligence visualization.
The technical specification snapshot highlights the project at a glance
| Parameter | Description |
|---|---|
| Project Name | GeoMind |
| Core Language | TypeScript, Node.js |
| Runtime Environment | Node.js 20+ |
| Integration Protocols / Entry Points | CLI, Skill, WebService API |
| Mapping Capabilities | Tencent Maps JavaScript API GL, WebService Geocoder |
| Core Dependencies | @larksuite/cli, Tencent Location Services API |
| Open Source Repository | github.com/lucianaib0318/GeoMind |
| Star Count | Not provided in the source text |
This project brings mapping capabilities directly into the AI Agent workflow
GeoMind is not simply about plotting points on a map. Its real value lies in automatically transforming organizations, factory sites, industrial parks, laboratories, and collaboration relationships from Feishu documents into geographic intelligence that is computable, verifiable, and visualizable.
Traditional map demos usually start with pre-existing coordinates. GeoMind starts with unstructured documents, extracts entities and relationships, calls Tencent Location Services for geocoding, and then outputs HTML, SVG, and structured JSON.
AI Visual Insight: This diagram shows the closed-loop path from Feishu document input to map output. It emphasizes the four-stage pipeline of extraction, geocoding, relationship modeling, and visualization. It makes clear that the project is not just a frontend rendering demo, but a workflow system with document processing and intelligence generation capabilities.
The runtime result is a dynamic relationship network rather than a static basemap
The demo scenario is the “China New Energy and Intelligent Manufacturing Distribution Network.” Nodes are categorized by type, such as research institutes, enterprises, factories, laboratories, and industrial parks. Relationship edges use animated glowing arcs to represent supply links, collaboration, technology transfer, and similar connections.
AI Visual Insight: This image shows a multi-node industrial network overlaid on a real map basemap. Nodes are distributed across the country, and connections use highlighted arcs with animated flow effects. This indicates that the frontend does more than POI labeling: it also models cross-regional relationships and expresses dynamic transfer paths.
npm run demo
# Run the online demo with real geocoding and map rendering
npm run demo:offline
# Run the offline demo mode, skip external APIs, and validate the full pipeline
These commands support both online and offline validation of GeoMind’s complete execution flow.
The technical architecture follows three principles: replaceable, cacheable, and extensible
The project is divided into modules such as document, text, extraction, geocoding, schemas, whiteboard, orchestrator, and skill, which reflects clear engineering boundaries.
AI Visual Insight: This diagram clearly separates the ingestion layer, extraction layer, geocoding layer, validation layer, and rendering layer. It shows that GeoMind adopts a modular pipeline architecture, making it easier to replace extractors, connect different document sources, or extend additional map output formats.
Module boundaries keep future replacement costs low
Document input can come from either Feishu CLI or local Markdown files. The current extraction stage mainly uses rule-based parsing, but it can later be replaced with an LLM extractor. The geocoding layer uses caching and fallback logic to keep the demo stable.
export async function runGeoMind(options: RunGeoMindOptions, config: GeoMindConfig) {
const rawDocument = options.inputFile
? await readLocalDocument(options.inputFile) // Local file input
: await readFeishuDocument(options, config) // Feishu document input
const cleanedDocument = cleanDocument(rawDocument) // Text cleanup
const extraction = extractEntitiesAndRelations(cleanedDocument) // Entity and relationship extraction
const entities = await enrichEntitiesWithGeocoding(extraction.entities, options, config) // Geocoding enrichment
return buildOutput(rawDocument, cleanedDocument, extraction, entities) // Build structured output
}
This main workflow shows that GeoMind’s core design is to orchestrate multiple independent stages instead of coupling all logic into a single script.
The combination of Feishu CLI and Tencent Location Services closes the gap between documents and maps
Feishu works well for accumulating research materials, but its information is naturally linear. Tencent Location Services excels at converting location text into coordinates and rendering the result on a real map. GeoMind’s value lies in connecting the two into an executable pipeline.
AI Visual Insight: This diagram highlights Feishu documents as the upstream information source and Tencent Maps as the downstream spatial presentation layer, connected by extraction and geocoding modules in the middle. It clearly demonstrates a cross-domain integration pattern between an office document system and a location service platform.
The applicable scenarios go far beyond ordinary visualization
GeoMind is suitable for research collaboration network analysis, industrial chain distribution analysis, investment attraction and site selection, supply chain coordination, and strategic research. The final result is not just a screenshot. It is a structured asset that can be written back to Feishu and further extended into a Skill or Agent toolchain.
export class FeishuCliDocumentReader {
async read(input: DocumentInput): Promise
<RawDocument> {
const command = renderCommandTemplate(this.commandTemplate!, input) // Dynamically render the CLI command
const { stdout } = await execAsync(command, { timeout: 15000 }) // Invoke Feishu CLI
const parsed = parseCliOutput(stdout) // Parse returned text or JSON
return { input, text: parsed.text, fetchedAt: new Date().toISOString() }
}
}
This adapter layer hides Feishu CLI version differences and reduces the impact of upstream command changes.
Two configuration entry points are the most critical project dependencies
The first is the Tencent Location Services key, used for both the Geocoder and JSAPI GL. The second is the Feishu CLI command template, used to fetch document content from a URL or token.
AI Visual Insight: This image corresponds to the application configuration page in the console. It indicates that the project requires you to create a map application and key first, and it shows that backend WebService calls and frontend JSAPI loading share the same location service account system.
AI Visual Insight: This image shows key management and capability enablement areas. It indicates that the project depends on at least two capabilities: address resolution APIs and frontend map script loading permissions. If the allowlist is not configured correctly, the runtime result will be affected.
TENCENT_MAP_KEY=your-tencent-map-key
GEOCODE_CACHE_PATH=cache/geocode-cache.json
FEISHU_CLI_COMMAND_TEMPLATE="lark-cli docs fetch --doc {url} --format json"
These environment variables control map authentication, the geocoding cache location, and the actual Feishu CLI invocation template.
Document token parsing and local execution are both supported
GeoMind can accept a Feishu URL directly and also supports tokens. If you do not have Feishu CLI available yet, you can still run the full workflow with a local Markdown demo.
AI Visual Insight: The highlighted portion of the image is the token segment in a Feishu document URL. It shows that the input adapter layer must recognize different resource types such as wiki, doc, and docx, and reliably extract the unique document identifier from the URL.
git clone [email protected]:lucianaib0318/GeoMind.git
cd GeoMind
npm install
cp .env.example .env
npm run dev -- --input-file examples/sample-input.md --html-out output/geomind.html
These commands provide the shortest path to running the local version of GeoMind.
The core technology lies in structured extraction and geocoding fallback mechanisms
The input document is best written using a semi-structured “entity/relationship” format to improve stability. Extraction output is normalized into entity arrays, relationship arrays, and summary information, which makes schema validation and downstream consumption easier.
{
"entities": [
{
"name": "Beijing Intelligent Manufacturing Coordination Center",
"type": "government_agency",
"locationText": "Haidian, Beijing"
}
],
"relations": [
{
"source": "ent_beijing_smart_manufacturing",
"target": "ent_shanghai_zhangjiang_lab",
"relationType": "collaboration"
}
]
}
This JSON shows the project’s minimal core data model: nodes and edges.
The Tencent Location Services wrapper determines the system’s operability
GeoMind’s Geocoder checks the cache first and then decides whether to request the Tencent API. When the key is missing, a timeout occurs, or parsing fails, it falls back to a fallback state so the frontend can still generate demo output.
async geocode(query: string): Promise
<GeocodedLocation> {
const cached = (await this.loadCache())[query]
if (cached?.coordinates) return { ...cached, status: "cached" } // Cache hit
if (!this.apiKey) {
return fallbackGeocode(query, "TENCENT_MAP_KEY is not configured.") // Fall back when no key is configured
}
return await this.fetchTencent(query) // Normal Tencent Geocoder request
}
This code shows that GeoMind prioritizes stable execution over a hard dependency on online services.
The final outputs prove this is an engineering system, not just a hackathon demo
A single run usually generates three categories of artifacts: structured JSON, an interactive HTML map, and SVG or GIF presentation assets. That means it is suitable not only for development and debugging, but also for reporting and writing results back into Feishu.
AI Visual Insight: The image shows a main map view alongside a sidebar entity panel. This indicates that the output page includes not only rendering results, but also structured entity browsing capabilities, making it easier to manually verify node types, location status, and technical fields.
AI Visual Insight: This diagram is more of a summary-oriented process view. It reinforces the business loop from documents, extraction, and geocoding to map presentation, showing that the project’s core value is turning unstructured materials into decision-readable spatial intelligence.
This direction is especially well suited for future integration with LLMs and knowledge graphs
The current MVP already completes the loop. From here, it is natural to integrate an LLM extractor, a knowledge graph, a Feishu bot, MCP tools, and internal enterprise analytics platforms. Its real strength does not come from any single API. It comes from opening a path where documents become the data source and maps become the cognitive interface.
FAQ
What fundamentally distinguishes GeoMind from a standard map visualization project?
Standard projects start from coordinates. GeoMind starts from documents. It performs information extraction and relationship modeling first, then geocoding and rendering. That makes it closer to an AI Agent workflow than to a standalone frontend page.
Can the project still run without a Tencent Location Services key?
Yes. The project provides an offline mode, caching, and fallback coordinate logic. It can continue generating demo output even when no key is configured or the API fails, although map accuracy and realism will be reduced.
What is the most valuable upgrade path going forward?
The top priority is upgrading rule-based extraction to LLM-based extraction and introducing a knowledge graph or MCP tool interface. That would allow the system to handle more complex documents and connect its output more deeply to enterprise-grade intelligence analysis systems.
Core summary
This article reconstructs GeoMind’s core design and implementation flow, explaining how it automatically converts industrial entities, collaboration relationships, and location text in Feishu documents into structured geographic intelligence, then uses Tencent Location Services to complete geocoding and map visualization as a reusable AI Agent workflow.