算法艺术创作
algorithmic-art
通过代码和可调参数创作生成艺术与交互式视觉效果。
survey【设计与创意】Literature survey assistant with four modes: /survey intent (capture student goals, expertise, and success criteria), /survey triage (landscape mapping via NotebookLM), /survey deepen (structured reading with craft and visualization extraction), /survey synthesize (cross-paper analysis for related work, area exams, gap identification). Also: /survey …
独立 GitHub 快照 · 自动分类 · 以原作者文档为准
This skill helps PhD students build a deep, synthesized corpus of research insights through a structured, cognitively-aware workflow. It combines Kahneman's dual-process theory, Keshav's three-pass reading method, first-principles analysis, and NotebookLM as a backend query engine.
Architecture: All student work lives locally (Obsidian/filesystem). NotebookLM is a query backend only — papers go in, grounded answers come out.
Modes:
/survey intent — Capture what you're trying to learn and where you're starting from/survey triage — Map the landscape, prioritize reading depth/survey deepen — Structured reading with craft and visualization extraction/survey synthesize — Cross-paper analysis for deliverables/survey expand — Structured corpus growth proposalsIf the student invokes /survey without a mode, ask which mode they want. If they seem unsure or are starting a new survey, begin with intent.
Prerequisites: NotebookLM MCP CLI must be configured. See reference/notebooklm_tools.md for setup.
Purpose: Capture the student's survey goals, expertise level, and success criteria BEFORE any paper is read. This shapes all subsequent modes.
Do NOT create any NotebookLM notebooks in this mode. Do NOT ingest any papers. The goal is purely clarifying intent.
Ask the student which best describes their situation:
Before we look at any papers, I need to understand what kind of survey this is. Which best describes you?
A. Explorer — "I'm entering a new area and need to understand the landscape." B. Investigator — "I have specific questions I need answered from the literature." C. Validator — "I think I've found a gap/idea and want to confirm it's novel." D. Examiner — "I need to demonstrate comprehensive mastery for an exam or survey paper."
Each archetype has different defaults:
| Archetype | Triage scope | Deepen targets | Pass 3 count | Synthesize output |
|---|---|---|---|---|
| Explorer | 50-100+ papers | 8-15 at Pass 2 | 2-3 | Landscape overview |
| Investigator | 10-25 papers | 5-10 at Pass 2 | 3-5 | Technique comparison |
| Validator | 15-30 papers | 3-5 closest at Pass 2+3 | 3-5 | Positioning argument |
| Examiner | 80-150+ papers | 15-25 at Pass 2 | 5-8 | Full narrative survey |
Ask calibration questions for the chosen topic:
- Vocabulary check: Can you name 3 key technical terms in this area and define each in one sentence?
- Landmark papers: Can you name any papers, authors, or research groups you associate with this area?
- Current mental model: In 2-3 sentences, what's your current understanding of the main problem and approaches?
- Known unknowns: What specific questions do you hope the literature will answer?
Cognitive purpose: These questions create a baseline for later comparison. After triage, the student will see how their mental model changed — making System 1's invisible anchoring effects visible.
- Deliverable: Related work section? Area exam presentation? Gap analysis? Idea validation?
- Scope: Approximately how many papers do you expect to cover?
- Timeline: When do you need the output?
- Time budget: How many hours per week can you invest?
Has your advisor or collaborator recommended specific papers or threads to explore? Any "must-read" papers with suggested reading depth?
Write a survey_intent.md file using the template from templates/survey_intent_template.md. Save it to the student's survey directory:
literature-survey/surveys/<topic-slug>/survey_intent.md
Also create the directory structure:
surveys/<topic-slug>/
├── survey_intent.md
├── pdfs/
├── papers/
│ └── figures/
├── synthesis/
├── corpus_log.md
├── backlog.md
└── nlm_config.md
Tell the student: "Your survey intent is captured. Run /survey triage when you're ready to start mapping the landscape."
Purpose: Rapid Pass 1 over a corpus of papers using NotebookLM. Map the landscape and decide where to invest deeper reading. The archetype from intent mode shapes scope and clustering.
Read the student's survey_intent.md and nlm_config.md. If no notebook exists yet:
notebook_create(title="survey-<topic-slug>")
chat_configure(notebook_id=<id>, goal="custom",
custom_prompt="You are a research corpus query engine for a PhD student
surveying [topic]. The student is an [archetype] with goals: [from intent].
Always cite specific papers and quote relevant passages.",
response_length="longer")
tag(action="add", notebook_id=<id>, tags=["survey", "<topic>", "<term>"])
Save the notebook_id to nlm_config.md.
Ask the student for their initial papers (PDFs, URLs, BibTeX). For each paper:
Acquire the PDF locally using the priority chain:
pdfs/YYYY_author_shorttitle.pdfwgetIngest into NotebookLM (async for large batches):
source_add(notebook_id=<id>, source_type="file", file=<path>, wait=False)
Log in corpus_log.md with status "ingesting".
While papers load (3-5 min for 15+ papers), use the time productively — refine intent, discuss the topic, let the student start reading local PDFs if they want.
Once sources are ready, for each paper query NLM:
notebook_query(notebook_id=<id>,
query="For [title] by [author]: provide CATEGORY (measurement/systems-building/theory/survey),
PROBLEM (one sentence), CONTRIBUTION (exact quote of main claim), EVALUATION (system/dataset/testbed),
KEY REFERENCES (3-5 most cited references), RELEVANCE to survey goals (high/medium/low)")
Write each response to a local file: papers/YYYY_author_shorttitle.md with a [Pass 1] header.
Query NLM for a cross-corpus landscape:
notebook_query(notebook_id=<id>,
query="Group all papers by PROBLEM addressed (3-5 major threads). For each thread, list papers
and methodology. Identify chronological patterns. WYSIATI CHECK: What problem areas or
methodologies are absent? What would a skeptical reviewer say is missing?")
Write to survey_triage.md.
This is a System 2 checkpoint. Show the student their initial mental model (from survey_intent.md) alongside the landscape map:
"Here's what you thought the area looked like when you started. Here's what the corpus actually shows. What's different? What surprised you?"
Help the student categorize each paper against their time budget:
Update survey_triage.md with the prioritized reading list.
notebook_query(notebook_id=<id>,
query="Which references appear in 3+ papers but are NOT sources in this notebook?
For each, explain why it might be important to add.")
Append candidates to corpus_log.md with reason=FOUNDATIONAL. Present to student for Add/Bookmark/Skip decision (see /survey expand protocol).
Purpose: Structured Pass 2 and Pass 3 reading for individual papers. Forces System 2 engagement, captures insights locally, uses NLM for grounded extraction and calibration.
Ask which paper from the triage reading list. Read their existing paper note if one exists.
Run four NLM queries and write results to the local paper note:
a. Claim extraction:
notebook_query: "For [title]: Quote the 3 most important claims with section/page references."
b. Evidence audit:
notebook_query: "For [title]: For each claim, what evidence is provided? Rate as strong/moderate/weak."
c. Methodology probe:
notebook_query: "For [title]: Describe evaluation setup. What explicit and implicit assumptions?
What would break if workload/scale/topology changed?"
d. Dependency extraction:
notebook_query: "For [title]: What results from other papers does this depend on?
Which dependencies might not hold in other contexts?"
Write all responses to the paper's local note as a [Pass 2] section.
After the student has read the paper themselves, compare their understanding with NLM's grounded extraction:
[Calibration] section. Highlight the specificity gap.notebook_query: "For [title], analyze along four dimensions:
STATE: What state does the system manage?
TIME: What timescales matter?
COORDINATION: How do components coordinate?
INTERFACE: What are the boundaries between components?
Quote specific passages as evidence."
Write to the paper note as [First-Principles] section.
Ask the student:
Read reference/writing_craft_moves.md for the full framework. Query NLM and guide the student through:
a. Introduction anatomy — the six-move formula:
notebook_query: "For [title], analyze the INTRODUCTION:
MOVE 1 (Stakes): How does it open? Specific actors/applications/dollar amounts?
MOVE 2 (Problem Gap): Structural or quantitative? Numbered limitations?
MOVE 3 (Key Abstraction): Does it coin a memorable, citable term?
MOVE 4 (Design Intuition): One-paragraph mental model? Overview figure?
MOVE 5 (Contributions): Claims with evidence, or process descriptions? Numbered?
MOVE 6 (Results Preview): Concrete headline numbers?
Quote specific passages."
b. Evaluation architecture:
notebook_query: "For [title], analyze the EVALUATION:
CLAIM-EVIDENCE MAP: List every intro claim → evaluation subsection → figure/table.
SETUP: Compressed or technical report?
DEEP DIVE: Results disaggregated by meaningful dimensions?
TAKEAWAYS: Explicit takeaway after every experiment cluster?
ABLATION: Shows each component contributes?"
c. Design section craft:
notebook_query: "For [title], analyze the DESIGN:
Opens with abstraction or implementation?
'Why' move — justification via negative result?
Named components? Key configurable 'knob'?"
d. Related work positioning: Ask the student: How many categories? Structural or quantitative limitations? Explicit positioning sentence?
e. Peak observation: What is the single most memorable insight — the thing you'd cite 10 years from now?
f. Lessons for my writing: The student captures what they want to adopt for their own papers.
Write to paper note as [Craft] section. Also append key lessons to synthesis/writing_craft_corpus.md.
Read reference/viz_analysis_guide.md. Query NLM and guide the student through:
a. Figure inventory:
notebook_query: "For [title]: List every figure and table. For each: caption, role
(overview/comparison/deep-dive/ablation/case-study), claim it supports, encoding used.
Which is the headline figure?"
b. Visual argument analysis (2-3 key figures):
notebook_query: "For [title], for the 2-3 most important figures:
What claim does each support? Describe encoding choices (axes, scale, color, faceting).
WHY those choices — does the encoding serve the argument?
What does the figure NOT show that would be useful?"
c. Figure extraction from local PDF: If the student wants key figures extracted, use PyMuPDF on the local PDF in pdfs/, or prompt for manual screenshots. Save to papers/figures/.
Write to paper note as [Visualization] section. Append best-practice examples to synthesis/viz_patterns.md.
The local paper note (papers/YYYY_author_shorttitle.md) grows through the mode:
[Pass 1] → [Pass 2] → [Calibration] → [First-Principles] → [Craft] → [Visualization] → [My Notes]
Purpose: Cross-paper synthesis for a specific deliverable. Uses NLM cross-corpus queries, writes all results locally.
The student chooses (informed by their intent profile):
notebook_query: "For every paper, build a comparison matrix:
State management | Primary timescale | Coordination model | Interface design.
Highlight where papers make fundamentally different choices."
Write to synthesis/invariant_matrix.md. Student annotates locally.
notebook_query: "Identify cases where one paper's design DEPENDS ON an assumption
another paper challenges. Quote the assumption and the challenging evidence."
Write to synthesis/dependency_graph.md.
notebook_query: "If [bandwidth/latency/scale] changed by 10x, which solutions still work?
Which break? What new problems emerge that no paper addresses?"
Also ask: "Looking at the invariant matrix — are there combinations no paper explores? Missing methodologies?"
Write to synthesis/gap_analysis.md.
cross_notebook_query(query="How do approaches to [dimension] differ between
[survey A] and [survey B]?", tags=["survey"])
Based on the synthesis goal, generate the deliverable draft:
Before finalizing:
"What perspectives are missing? What would someone from [adjacent field] say? Am I over-indexing on [one group/venue/methodology]?"
studio_create(notebook_id=<id>, artifact_type="report") # or "slide_deck"
download_artifact(notebook_id=<id>, artifact_type="report", output_path="synthesis/nlm_report.md")
These are starting points — the student edits locally.
Purpose: Structured, student-in-the-loop corpus expansion. Triggers at transition points between modes, not mid-reading.
Batch candidates and present at transition points with:
| Paper | Source of discovery | Reason | Relevance to intent | Suggested pass | Time cost |
|---|
For each, the student chooses:
source_add to NLM notebook, download PDF locally, create paper note with Pass 1, update corpus_log.mdbacklog.md for future surveysTrack expansion against the intent profile's scope and time budget. If corpus outgrows the plan:
"You started targeting ~30 papers. You're at 42. Your remaining time budget supports deepening ~5 more. Adjust scope or be more selective?"
For Validators: conservative expansion. For Examiners: more permissive with diminishing-returns reasoning.
For Explorers and Examiners:
research_start(query="[topic-specific search]", source="web", mode="deep", title="<topic>-expansion")
research_status(notebook_id=<research_id>, max_wait=300)
# Present discovered papers through the expand proposal workflow
research_import(notebook_id=<survey_id>, task_id=<task_id>, source_indices=[student-approved])
When a student returns after time away:
survey_intent.md (why), survey_triage.md (landscape), corpus_log.md (what's in the corpus), papers/*.md (what's been read).nlm_config.md to reconnect to the NLM notebook.[Pass 2] section in paper note).The student's state is reconstructed from local files, not from NLM. If the NLM notebook were deleted, only query capability is lost — not the knowledge base.
Read these when deeper guidance is needed:
| When you need... | Read this file |
|---|---|
| Keshav's three-pass method details | reference/keshav_three_pass.md |
| Kahneman biases relevant to surveys | reference/kahneman_biases.md |
| First-principles invariant questions | reference/first_principles.md |
| NotebookLM MCP tool reference | reference/notebooklm_tools.md |
| Six-move intro formula + craft questions | reference/writing_craft_moves.md |
| Figure analysis guide + quality checklist | reference/viz_analysis_guide.md |
| Survey intent template | templates/survey_intent_template.md |
| Paper note template | templates/paper_note_template.md |
| Triage template | templates/survey_triage_template.md |
| Synthesis template | templates/synthesis_template.md |